Files
Phraseanet/tests/Alchemy/Tests/Phrasea/SearchEngine/QueryCompilerTest.php
Benoît Burnichon 88427efa4c Fixup DI of QueryCompiler.
As compiler was not using structure on its own, extract it and replace instantiation by a factory.
2015-11-16 13:08:32 +01:00

54 lines
1.5 KiB
PHP

<?php
namespace Alchemy\Tests\Phrasea\SearchEngine;
use Alchemy\Phrasea\SearchEngine\Elastic\Search\QueryCompiler;
use Alchemy\Phrasea\SearchEngine\Elastic\Search\QueryVisitor;
use Alchemy\Phrasea\SearchEngine\Elastic\Structure\Structure;
use Alchemy\Phrasea\SearchEngine\Elastic\Thesaurus;
use Alchemy\Tests\Tools\CsvFileIterator;
use Hoa\Compiler;
use Hoa\File;
/**
* @group unit
* @group searchengine
*/
class QueryCompilerTest extends \PHPUnit_Framework_TestCase
{
private $compiler;
protected function setUp()
{
$grammar_path = 'grammar/query.pp';
$project_root = '../../../../..';
$grammar_path = realpath(implode('/', [__DIR__, $project_root, $grammar_path]));
$parser = Compiler\Llk\Llk::load(new File\Read($grammar_path));
$structure = $this->getMock(Structure::class);
$queryVisitorFactory = function () use ($structure) {
return new QueryVisitor($structure);
};
$thesaurus = $this->getMockBuilder(Thesaurus::class)
->disableOriginalConstructor()
->getMock();
$this->compiler = new QueryCompiler($parser, $queryVisitorFactory, $thesaurus);
}
/**
* @dataProvider queryProvider
*/
public function testQueryParsing($query, $expected)
{
$this->assertEquals($expected, $this->compiler->parse($query)->dump());
}
public function queryProvider()
{
return new CsvFileIterator(sprintf('%s/resources/queries.csv', __DIR__), '|', '\'');
}
}