diff --git a/src/Plugin/facets/processor/GranularItemProcessor.php b/src/Plugin/facets/processor/GranularItemProcessor.php index 5329d32..05c590f 100644 --- a/src/Plugin/facets/processor/GranularItemProcessor.php +++ b/src/Plugin/facets/processor/GranularItemProcessor.php @@ -1,6 +1,5 @@ 1, - ] + parent::defaultConfiguration(); + 'granularity' => 1, + ] + parent::defaultConfiguration(); } /** diff --git a/tests/src/Functional/ProcessorIntegrationTest.php b/tests/src/Functional/ProcessorIntegrationTest.php index e79c8aa..7afe74c 100644 --- a/tests/src/Functional/ProcessorIntegrationTest.php +++ b/tests/src/Functional/ProcessorIntegrationTest.php @@ -286,7 +286,7 @@ public function testNumericGranularity() { // Check values. $this->drupalGet('search-api-test-fulltext'); $this->assertFacetLabel('30 (2)'); - $this->assertSession()->pageTextNotContains('35'); + $this->assertEmpty($this->findFacetLink('35')); $this->assertFacetLabel('40'); $this->assertFacetLabel('100'); } diff --git a/tests/src/Unit/Plugin/query_type/SearchApiGranularTest.php b/tests/src/Unit/Plugin/query_type/SearchApiGranularTest.php index b9194f0..717b3e5 100644 --- a/tests/src/Unit/Plugin/query_type/SearchApiGranularTest.php +++ b/tests/src/Unit/Plugin/query_type/SearchApiGranularTest.php @@ -2,9 +2,12 @@ namespace Drupal\Tests\facets\Unit\Plugin\query_type; +use Drupal\Core\DependencyInjection\ContainerBuilder; use Drupal\facets\Entity\Facet; use Drupal\facets\FacetInterface; +use Drupal\facets\Plugin\facets\processor\GranularItemProcessor; use Drupal\facets\Plugin\facets\query_type\SearchApiGranular; +use Drupal\facets\Processor\ProcessorPluginManager; use Drupal\search_api\Backend\BackendInterface; use Drupal\search_api\IndexInterface; use Drupal\facets\Result\ResultInterface; @@ -12,6 +15,7 @@ use Drupal\search_api\Plugin\views\query\SearchApiQuery; use Drupal\search_api\ServerInterface; use Drupal\Tests\UnitTestCase; +use Prophecy\Argument; /** * Unit test for granular query type. @@ -20,6 +24,32 @@ */ class SearchApiGranularTest extends UnitTestCase { + /** + * {@inheritdoc} + */ + public function setUp() { + parent::setUp(); + + $processor_id = 'granularity_item'; + $processor_definitions = [ + $processor_id => [ + 'id' => $processor_id, + 'class' => GranularItemProcessor::class, + ], + ]; + + $granularityProcessor = new GranularItemProcessor([], 'granularity_item', []); + + $processor_manager = $this->prophesize(ProcessorPluginManager::class); + $processor_manager->getDefinitions()->willReturn($processor_definitions); + $processor_manager->createInstance('granularity_item', Argument::any()) + ->willReturn($granularityProcessor); + + $container = new ContainerBuilder(); + $container->set('plugin.manager.facets.processor', $processor_manager->reveal()); + \Drupal::setContainer($container); + } + /** * Tests string query type without executing the query with an "AND" operator. */ @@ -37,14 +67,11 @@ public function testQueryTypeAnd() { ['query_operator' => 'AND', 'widget' => 'links'], 'facets_facet' ); - $facetReflection = new \ReflectionClass(Facet::class); - $widget = $this->getMockBuilder(WidgetPluginInterface::class) - ->disableOriginalConstructor() - ->getMock(); - $widget->method('getConfiguration')->will($this->returnValue(['granularity' => 10])); - $widget_instance = $facetReflection->getProperty('widgetInstance'); - $widget_instance->setAccessible(TRUE); - $widget_instance->setValue($facet, $widget); + $facet->addProcessor([ + 'processor_id' => 'granularity_item', + 'weights' => [], + 'settings' => ['granularity' => 10], + ]); // Results for the widget. $original_results = [