diff options
Diffstat (limited to 'vendor/ruflin/elastica/test/lib/Elastica/Test/QueryBuilderTest.php')
-rw-r--r-- | vendor/ruflin/elastica/test/lib/Elastica/Test/QueryBuilderTest.php | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/vendor/ruflin/elastica/test/lib/Elastica/Test/QueryBuilderTest.php b/vendor/ruflin/elastica/test/lib/Elastica/Test/QueryBuilderTest.php new file mode 100644 index 00000000..6cbfd37b --- /dev/null +++ b/vendor/ruflin/elastica/test/lib/Elastica/Test/QueryBuilderTest.php @@ -0,0 +1,88 @@ +<?php +namespace Elastica\Test; + +use Elastica\Exception\QueryBuilderException; +use Elastica\Query; +use Elastica\QueryBuilder; +use Elastica\Suggest; + +class QueryBuilderTest extends \PHPUnit_Framework_TestCase +{ + /** + * @group unit + */ + public function testCustomDSL() + { + $qb = new QueryBuilder(); + + // test custom DSL + $qb->addDSL(new CustomDSL()); + + $this->assertTrue($qb->custom()->custom_method(), 'custom DSL execution failed'); + + // test custom DSL exception message + $exceptionMessage = ''; + try { + $qb->invalid(); + } catch (QueryBuilderException $exception) { + $exceptionMessage = $exception->getMessage(); + } + + $this->assertEquals('DSL "invalid" not supported', $exceptionMessage); + } + + /** + * @group unit + */ + public function testFacade() + { + $qb = new QueryBuilder(); + + // test one example QueryBuilder flow for each default DSL type + $this->assertInstanceOf('Elastica\Query\AbstractQuery', $qb->query()->match()); + $this->assertInstanceOf('Elastica\Filter\AbstractFilter', $qb->filter()->bool()); + $this->assertInstanceOf('Elastica\Aggregation\AbstractAggregation', $qb->aggregation()->avg('name')); + $this->assertInstanceOf('Elastica\Suggest\AbstractSuggest', $qb->suggest()->term('name', 'field')); + } + + /** + * @group unit + */ + public function testFacadeException() + { + $qb = new QueryBuilder(new QueryBuilder\Version\Version100()); + + // undefined + $exceptionMessage = ''; + try { + $qb->query()->invalid(); + } catch (QueryBuilderException $exception) { + $exceptionMessage = $exception->getMessage(); + } + + $this->assertEquals('undefined query "invalid"', $exceptionMessage); + + // unsupported + $exceptionMessage = ''; + try { + $qb->aggregation()->top_hits('top_hits'); + } catch (QueryBuilderException $exception) { + $exceptionMessage = $exception->getMessage(); + } + + $this->assertEquals('aggregation "top_hits" in Version100 not supported', $exceptionMessage); + } +} + +class CustomDSL implements QueryBuilder\DSL +{ + public function getType() + { + return 'custom'; + } + + public function custom_method() + { + return true; + } +} |