Skip to content
Snippets Groups Projects
ConeSearchTest.php 4.21 KiB
Newer Older
  • Learn to ignore specific revisions
  • François Agneray's avatar
    François Agneray committed
    <?php
    
    /*
     * This file is part of Anis Server.
     *
     * (c) Laboratoire d'Astrophysique de Marseille / CNRS
     *
     * For the full copyright and license information, please view the LICENSE
     * file that was distributed with this source code.
     */
    declare(strict_types=1);
    
    namespace App\Tests\Search\Query;
    
    use PHPUnit\Framework\TestCase;
    use App\Search\Query\ConeSearch;
    use App\Search\Query\AnisQueryBuilder;
    use App\Search\Query\SearchQueryException;
    use Doctrine\DBAL\Query\QueryBuilder as DoctrineQueryBuilder;
    use Doctrine\DBAL\Query\Expression\ExpressionBuilder;
    use App\Entity\Dataset;
    use App\Entity\Attribute;
    
    final class ConeSearchTest extends TestCase
    {
        public function testConeSearch(): void
        {
            $id = $this->createMock(Attribute::class);
            $id->method('getId')->willReturn(1);
            $ra = $this->createMock(Attribute::class);
            $ra->method('getId')->willReturn(2);
            $dec = $this->createMock(Attribute::class);
            $dec->method('getId')->willReturn(3);
            $datasetSelected = $this->createMock(Dataset::class);
            $datasetSelected->method('getAttributes')->willReturn(array($id, $ra, $dec));
            $datasetSelected->method('getConfig')->willReturn(array('cone_search' => array(
    
                'cone_search_enabled' => true,
                'cone_search_column_ra' => 2,
                'cone_search_column_dec' => 3
    
    François Agneray's avatar
    François Agneray committed
            )));
    
            $doctrineQueryBuilder = $this->createMock(DoctrineQueryBuilder::class);
            $expr = $this->createMock(ExpressionBuilder::class);
            $doctrineQueryBuilder->method('expr')->willReturn($expr);
            $doctrineQueryBuilder->expects($this->once())->method('where');
            $anisQueryBuilder = $this->createMock(AnisQueryBuilder::class);
            $anisQueryBuilder->method('getDoctrineQueryBuilder')->willReturn($doctrineQueryBuilder);
            $queryParams = array('cs' => '102.5:0.0:100');
            (new ConeSearch())($anisQueryBuilder, $datasetSelected, $queryParams);
        }
    
        public function testConeSearchException(): void
        {
            $this->expectException(SearchQueryException::class);
            $anisQueryBuilder = $this->createMock(AnisQueryBuilder::class);
            $datasetSelected = $this->createMock(Dataset::class);
            $queryParams = array('cs' => '102.5:0.0:100:10');
            (new ConeSearch())($anisQueryBuilder, $datasetSelected, $queryParams);
        }
    
        public function testConeSearchUnavailableException(): void
        {
            $this->expectException(SearchQueryException::class);
            $anisQueryBuilder = $this->createMock(AnisQueryBuilder::class);
            $datasetSelected = $this->createMock(Dataset::class);
            $datasetSelected->method('getConfig')->willReturn(array('cone_search' => array(
    
                'cone_search_enabled' => false,
                'cone_search_column_ra' => 2,
                'cone_search_column_dec' => 3
    
    François Agneray's avatar
    François Agneray committed
            )));
            $queryParams = array('cs' => '102.5:0.0:100');
            (new ConeSearch())($anisQueryBuilder, $datasetSelected, $queryParams);
        }
    
        public function testConeSearchParamsValues(): void
        {
            $id = $this->createMock(Attribute::class);
            $id->method('getId')->willReturn(1);
            $ra = $this->createMock(Attribute::class);
            $ra->method('getId')->willReturn(2);
            $dec = $this->createMock(Attribute::class);
            $dec->method('getId')->willReturn(3);
            $datasetSelected = $this->createMock(Dataset::class);
            $datasetSelected->method('getAttributes')->willReturn(array($id, $ra, $dec));
            $datasetSelected->method('getConfig')->willReturn(array('cone_search' => array(
    
                'cone_search_enabled' => true,
                'cone_search_column_ra' => 2,
                'cone_search_column_dec' => 3
    
    François Agneray's avatar
    François Agneray committed
            )));
    
            $doctrineQueryBuilder = $this->createMock(DoctrineQueryBuilder::class);
            $expr = $this->createMock(ExpressionBuilder::class);
            $doctrineQueryBuilder->method('expr')->willReturn($expr);
            $doctrineQueryBuilder->expects($this->once())->method('where');
            $anisQueryBuilder = $this->createMock(AnisQueryBuilder::class);
            $anisQueryBuilder->method('getDoctrineQueryBuilder')->willReturn($doctrineQueryBuilder);
            $queryParams = array('cs' => '102.5:91:0');
            (new ConeSearch())($anisQueryBuilder, $datasetSelected, $queryParams);
        }
    }