/** * Tests string query type without executing the query with an "OR" operator. */ public function testQueryTypeOr() { $query = new SearchApiQuery([], 'search_api_query', []); $facet = new Facet(['query_operator' => 'OR'], 'facets_facet'); $facet->setFieldIdentifier('field_animal'); $original_results = [['count' => 3, 'filter' => 'badger'], ['count' => 5, 'filter' => 'mushroom'], ['count' => 7, 'filter' => 'narwhal'], ['count' => 9, 'filter' => 'unicorn']]; $query_type = new SearchApiString(['facet' => $facet, 'query' => $query, 'results' => $original_results], 'search_api_string', []); $built_facet = $query_type->build(); $this->assertInstanceOf('\\Drupal\\facets\\FacetInterface', $built_facet); $results = $built_facet->getResults(); $this->assertInternalType('array', $results); foreach ($original_results as $k => $result) { $this->assertInstanceOf('\\Drupal\\facets\\Result\\ResultInterface', $results[$k]); $this->assertEquals($result['count'], $results[$k]->getCount()); $this->assertEquals($result['filter'], $results[$k]->getDisplayValue()); } }
/** * Tests facet build with base props. */ public function testFacetBasepropBuild() { $config_manager = $this->getMockBuilder(ConfigManager::class)->disableOriginalConstructor()->getMock(); $base_field = $this->getMockBuilder(BaseFieldDefinition::class)->disableOriginalConstructor()->getMock(); $base_field->expects($this->any())->method('getSetting')->willReturnMap([['allowed_values_function', ''], ['allowed_values', [1 => 'blue whale', 2 => 'lynx', 3 => 'dog-wolf-lion']]]); $entity_field_manager = $this->getMockBuilder(EntityFieldManager::class)->disableOriginalConstructor()->getMock(); $entity_field_manager->expects($this->any())->method('getFieldDefinitions')->with('node', '')->willReturn(['test_facet_baseprop' => $base_field]); $processor_id = 'list_item'; $processor = new ListItemProcessor([], $processor_id, [], $config_manager, $entity_field_manager); // Base prop facet. $base_prop_facet = new Facet([], 'facet'); $base_prop_facet->setFieldIdentifier('test_facet_baseprop'); $base_prop_facet->setResults($this->results); $base_prop_facet->addProcessor(['processor_id' => 'list_item', 'weights' => [], 'settings' => []]); /** @var \Drupal\facets\Result\Result[] $base_prop_results */ $base_prop_results = $processor->build($base_prop_facet, $this->results); $this->assertCount(3, $base_prop_results); $this->assertEquals('blue whale', $base_prop_results[0]->getDisplayValue()); $this->assertEquals('lynx', $base_prop_results[1]->getDisplayValue()); $this->assertEquals('dog-wolf-lion', $base_prop_results[2]->getDisplayValue()); }
/** * Tests that the facet source configuration filter key override works. */ public function testFacetSourceFilterKeyOverride() { $facet_source = new FacetSource(['filter_key' => 'ab'], 'facets_facet_source'); // Override the container with the new facet source. $storage = $this->getMock('\\Drupal\\Core\\Entity\\EntityStorageInterface'); $storage->expects($this->once())->method('load')->willReturn($facet_source); $em = $this->getMockBuilder('\\Drupal\\Core\\Entity\\EntityTypeManagerInterface')->disableOriginalConstructor()->getMock(); $em->expects($this->any())->method('getStorage')->willReturn($storage); $container = \Drupal::getContainer(); $container->set('entity_type.manager', $em); \Drupal::setContainer($container); $facet = new Facet([], 'facet'); $facet->setFieldIdentifier('test'); $facet->setFacetSourceId('facet_source__dummy'); $facet->setUrlAlias('test'); $request = new Request(); $request->query->set('ab', []); $this->processor = new QueryString(['facet' => $facet], 'query_string', [], $request); $results = $this->processor->buildUrls($facet, $this->originalResults); /** @var \Drupal\facets\Result\ResultInterface $r */ foreach ($results as $r) { $this->assertInstanceOf('\\Drupal\\facets\\Result\\ResultInterface', $r); $this->assertEquals('route:test?ab[0]=test%3A' . $r->getRawValue(), $r->getUrl()->toUriString()); } }