diff --git a/src/Component/Facet/FacetInterface.php b/src/Component/Facet/FacetInterface.php index 0a1fffe38..f83f51a3b 100644 --- a/src/Component/Facet/FacetInterface.php +++ b/src/Component/Facet/FacetInterface.php @@ -3,7 +3,7 @@ namespace Solarium\Component\Facet; /** - * Facet base class. + * Facet interface. * * @see http://wiki.apache.org/solr/SimpleFacetParameters */ diff --git a/src/Component/FacetSet.php b/src/Component/FacetSet.php index 990a21a03..bece7b879 100644 --- a/src/Component/FacetSet.php +++ b/src/Component/FacetSet.php @@ -3,6 +3,16 @@ namespace Solarium\Component; use Solarium\Component\Facet\FacetInterface; +use Solarium\Component\Facet\Field; +use Solarium\Component\Facet\Interval; +use Solarium\Component\Facet\JsonAggregation; +use Solarium\Component\Facet\JsonQuery; +use Solarium\Component\Facet\JsonRange; +use Solarium\Component\Facet\JsonTerms; +use Solarium\Component\Facet\MultiQuery; +use Solarium\Component\Facet\Pivot; +use Solarium\Component\Facet\Query; +use Solarium\Component\Facet\Range; use Solarium\Component\RequestBuilder\ComponentRequestBuilderInterface; use Solarium\Component\RequestBuilder\FacetSet as RequestBuilder; use Solarium\Component\ResponseParser\ComponentParserInterface; @@ -21,16 +31,16 @@ class FacetSet extends AbstractComponent implements FacetSetInterface * @var array */ protected $facetTypes = [ - FacetSetInterface::FACET_FIELD => 'Solarium\Component\Facet\Field', - FacetSetInterface::FACET_QUERY => 'Solarium\Component\Facet\Query', - FacetSetInterface::FACET_MULTIQUERY => 'Solarium\Component\Facet\MultiQuery', - FacetSetInterface::FACET_RANGE => 'Solarium\Component\Facet\Range', - FacetSetInterface::FACET_PIVOT => 'Solarium\Component\Facet\Pivot', - FacetSetInterface::FACET_INTERVAL => 'Solarium\Component\Facet\Interval', - FacetSetInterface::JSON_FACET_AGGREGATION => 'Solarium\Component\Facet\JsonAggregation', - FacetSetInterface::JSON_FACET_TERMS => 'Solarium\Component\Facet\JsonTerms', - FacetSetInterface::JSON_FACET_QUERY => 'Solarium\Component\Facet\JsonQuery', - FacetSetInterface::JSON_FACET_RANGE => 'Solarium\Component\Facet\JsonRange', + FacetSetInterface::FACET_FIELD => Field::class, + FacetSetInterface::FACET_QUERY => Query::class, + FacetSetInterface::FACET_MULTIQUERY => MultiQuery::class, + FacetSetInterface::FACET_RANGE => Range::class, + FacetSetInterface::FACET_PIVOT => Pivot::class, + FacetSetInterface::FACET_INTERVAL => Interval::class, + FacetSetInterface::JSON_FACET_AGGREGATION => JsonAggregation::class, + FacetSetInterface::JSON_FACET_TERMS => JsonTerms::class, + FacetSetInterface::JSON_FACET_QUERY => JsonQuery::class, + FacetSetInterface::JSON_FACET_RANGE => JsonRange::class, ]; /** diff --git a/src/Component/Result/Facet/Aggregation.php b/src/Component/Result/Facet/Aggregation.php index d95cfca7e..ebb84405c 100644 --- a/src/Component/Result/Facet/Aggregation.php +++ b/src/Component/Result/Facet/Aggregation.php @@ -5,7 +5,7 @@ /** * Aggregation. */ -class Aggregation +class Aggregation implements FacetResultInterface { /** * Value. diff --git a/src/Component/Result/Facet/Buckets.php b/src/Component/Result/Facet/Buckets.php index bdbb7c9d1..07a9a5844 100644 --- a/src/Component/Result/Facet/Buckets.php +++ b/src/Component/Result/Facet/Buckets.php @@ -9,7 +9,7 @@ * value and its count. You can access the values as an array using * {@link getValues()} or iterate this object. */ -class Buckets implements \IteratorAggregate, \Countable +class Buckets implements FacetResultInterface, \IteratorAggregate, \Countable { /** * Value array. diff --git a/src/Component/Result/Facet/FacetResultInterface.php b/src/Component/Result/Facet/FacetResultInterface.php new file mode 100644 index 000000000..860e9fc58 --- /dev/null +++ b/src/Component/Result/Facet/FacetResultInterface.php @@ -0,0 +1,10 @@ +facets[$key] ?? null; } @@ -41,7 +41,7 @@ public function getFacet($key): ?FacetInterface /** * Get all facet results. * - * @return array + * @return FacetResultInterface[] */ public function getFacets(): array { diff --git a/tests/Component/ResponseParser/FacetSetTest.php b/tests/Component/ResponseParser/FacetSetTest.php index 426a15f00..c2359fa2c 100644 --- a/tests/Component/ResponseParser/FacetSetTest.php +++ b/tests/Component/ResponseParser/FacetSetTest.php @@ -125,7 +125,7 @@ public function testParse() $this->assertEquals(5, $facets['keyD']->getAfter()); $this->assertEquals(1, count($facets['keyE'])); - $this->query = new Query(); + $this->assertEquals(23, $result->getFacet('keyB')->getValue()); } public function testParseExtractFromResponse() @@ -241,8 +241,6 @@ public function testParseExtractFromResponse() 2, $pivots[0]->getStats() ); - - $this->query = new Query(); } public function testParseNoData() @@ -356,5 +354,7 @@ public function testParseJsonFacet() $this->assertEquals(['top_authors', 'highpop'], array_keys($nested_facets)); $this->assertFalse(isset($facets['empty_buckets'])); + + $this->assertEquals('Fantasy', $result->getFacet('top_genres')->getBuckets()[0]->getValue()); } } diff --git a/tests/QueryType/Select/Result/FacetSetTest.php b/tests/QueryType/Select/Result/FacetSetTest.php index eadcbc1b0..7f149218d 100644 --- a/tests/QueryType/Select/Result/FacetSetTest.php +++ b/tests/QueryType/Select/Result/FacetSetTest.php @@ -4,6 +4,7 @@ use PHPUnit\Framework\TestCase; use Solarium\Component\Facet\AbstractFacet; +use Solarium\Component\Result\Facet\FacetResultInterface; use Solarium\Component\Result\FacetSet; class FacetSetTest extends TestCase @@ -61,7 +62,7 @@ public function testCount() } } -class DummyFacet extends AbstractFacet +class DummyFacet extends AbstractFacet implements FacetResultInterface { /** * Get the facet type.