/** * Tests with multiple active items. */ public function testSetMultipleActiveItems() { $facet = new Facet([], 'facet'); $facet->setResults($this->originalResults); $facet->setUrlAlias('test'); $facet->setFieldIdentifier('test'); $request = new Request(); $request->query->set('f', ['test:badger', 'test:mushroom', 'donkey:kong']); $this->processor = new QueryString(['facet' => $facet], 'query_string', [], $request); $this->processor->setActiveItems($facet); $this->assertEquals(['badger', 'mushroom'], $facet->getActiveItems()); }
/** * Tests filtering happens for regex filter. * * @dataProvider provideRegexTests */ public function testRegexFilter($regex, $expected_results) { $facet = new Facet([], 'facet'); $facet->setResults($this->originalResults); $facet->addProcessor(['processor_id' => 'exclude_specified_items', 'weights' => [], 'settings' => ['exclude' => 'alpaca', 'regex' => 0]]); $this->processor->setConfiguration(['exclude' => $regex, 'regex' => 1]); $filtered_results = $this->processor->build($facet, $this->originalResults); $this->assertCount(count($expected_results), $filtered_results); foreach ($filtered_results as $res) { $this->assertTrue(in_array($res->getDisplayValue(), $expected_results)); } }
/** * Tests filtering of results. */ public function testFilterResults() { $results = $this->originalResults; $results[2]->setActiveState(TRUE); $facet = new Facet([], 'facet'); $facet->setResults($results); $filtered_results = $this->processor->build($facet, $results); $this->assertCount(2, $filtered_results); $this->assertEquals(10, $filtered_results[0]->getCount()); $this->assertEquals('llama', $filtered_results[0]->getDisplayValue()); $this->assertEquals(15, $filtered_results[1]->getCount()); $this->assertEquals('badger', $filtered_results[1]->getDisplayValue()); }
/** * Tests filtering of results. */ public function testFilterResults() { $results = $this->originalResults; $results[2]->setActiveState(TRUE); $facet = new Facet([], 'facet'); $facet->setResults($results); $filtered_results = $this->processor->build($facet, $results); $this->assertCount(2, $filtered_results); // Llama is shown because it narrows results. $this->assertEquals(10, $filtered_results[0]->getCount()); $this->assertEquals('llama', $filtered_results[0]->getDisplayValue()); // Duck is shown because it's already active. $this->assertEquals(15, $filtered_results[2]->getCount()); $this->assertEquals('duck', $filtered_results[2]->getDisplayValue()); }
/** * Tests that results were correctly changed. */ public function testResultsChanged() { $original_results = [new Result(1, 1, 5)]; $facet = new Facet([], 'facet'); $facet->setResults($original_results); $expected_results = [['uid' => 1, 'name' => 'Admin']]; foreach ($expected_results as $key => $expected) { $this->assertEquals($expected['uid'], $original_results[$key]->getRawValue()); $this->assertEquals($expected['uid'], $original_results[$key]->getDisplayValue()); } $filtered_results = $this->processor->build($facet, $original_results); foreach ($expected_results as $key => $expected) { $this->assertEquals($expected['uid'], $filtered_results[$key]->getRawValue()); $this->assertEquals($expected['name'], $filtered_results[$key]->getDisplayValue()); } }
/** * Tests that results were correctly changed. */ public function testResultsChanged() { /** @var \Drupal\facets\Result\ResultInterface[] $original_results */ $original_results = [new Result(1, 1, 5)]; $facet = new Facet([], 'facet'); $facet->setResults($original_results); $expected_results = [['tid' => 1, 'name' => 'Burrowing owl']]; foreach ($expected_results as $key => $expected) { $this->assertEquals($expected['tid'], $original_results[$key]->getRawValue()); $this->assertEquals($expected['tid'], $original_results[$key]->getDisplayValue()); } $filtered_results = $this->processor->build($facet, $original_results); foreach ($expected_results as $key => $expected) { $this->assertEquals($expected['tid'], $filtered_results[$key]->getRawValue()); $this->assertEquals($expected['name'], $filtered_results[$key]->getDisplayValue()); } }
/** * Tests widget without filters. */ public function testNoFilterResults() { $facet = new Facet([], 'facet'); $facet->setResults($this->originalResults); $facet->setWidgetConfigs(['show_numbers' => 1]); $output = $this->widget->build($facet); $this->assertInternalType('array', $output); $this->assertCount(4, $output['#items']); $this->assertEquals(['js-facets-checkbox-links'], $output['#attributes']['class']); $expected_links = [$this->buildLinkAssertion('Llama', 10), $this->buildLinkAssertion('Badger', 20), $this->buildLinkAssertion('Duck', 15), $this->buildLinkAssertion('Alpaca', 9)]; foreach ($expected_links as $index => $value) { $this->assertInternalType('array', $output['#items'][$index]); $this->assertEquals($value, $output['#items'][$index]['#title']); $this->assertInstanceOf(FormattableMarkup::class, $output['#items'][$index]['#title']); $this->assertEquals('link', $output['#items'][$index]['#type']); $this->assertEquals(['facet-item'], $output['#items'][$index]['#wrapper_attributes']['class']); } }
/** * 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 for links widget with children. */ public function testChildren() { $original_results = $this->originalResults; $child = new Result('snake', 'Snake', 5); $original_results[1]->setActiveState(TRUE); $original_results[1]->setChildren($child); $facet = new Facet([], 'facet'); $facet->setResults($original_results); $facet->setWidgetConfigs(['show_numbers' => 1]); $output = $this->widget->build($facet); $this->assertInternalType('array', $output); $this->assertCount(4, $output['#items']); $expected_links = [$this->buildLinkAssertion('Llama', 10), $this->buildLinkAssertion('Badger', 20, TRUE), $this->buildLinkAssertion('Duck', 15), $this->buildLinkAssertion('Alpaca', 9)]; foreach ($expected_links as $index => $value) { $this->assertInternalType('array', $output['#items'][$index]); $this->assertEquals($value, $output['#items'][$index]['#title']); $this->assertEquals('link', $output['#items'][$index]['#type']); if ($index === 1) { $this->assertEquals('active-trail', $output['#items'][$index]['#attributes']['class']); $this->assertEquals(['facet-item', 'expanded'], $output['#items'][$index]['#wrapper_attributes']['class']); } else { $this->assertEquals(['facet-item'], $output['#items'][$index]['#wrapper_attributes']['class']); } } }
/** * Tests filtering of results. */ public function testFilterResults() { $facet = new Facet([], 'facet'); $facet->setResults($this->originalResults); $facet->addProcessor(['processor_id' => 'count_limit', 'weights' => [], 'settings' => ['minimum_items' => 8]]); $this->processor->setConfiguration(['minimum_items' => 8]); $sorted_results = $this->processor->build($facet, $this->originalResults); $this->assertCount(2, $sorted_results); $this->assertEquals('llama', $sorted_results[0]->getDisplayValue()); $this->assertEquals('duck', $sorted_results[2]->getDisplayValue()); }
/** * Tests the return value of the plugin for an inactive facet value. */ public function testInactiveFacetValue() { $facet = new Facet([], 'facets_facet'); /** @var \Drupal\facets\Result\ResultInterface[] $results */ $results = [new Result('llama', 'Llama', 1), new Result('kitten', 'Kitten', 5), new Result('puppy', 'Puppy', 3)]; $results[1]->setActiveState(TRUE); $facet->setResults($results); $block = $this->getMockBuilder('\\Drupal\\facets\\Plugin\\Block\\FacetBlock')->disableOriginalConstructor()->getMock(); $block->expects($this->exactly(0))->method('access'); $block->expects($this->exactly(1))->method('getPluginId')->willReturn('block:id'); $storage = $this->getMock('\\Drupal\\Core\\Entity\\EntityStorageInterface'); $storage->expects($this->exactly(1))->method('load')->with('id')->willReturn($facet); $manager = $this->getMockBuilder('\\Drupal\\Core\\Block\\BlockManager')->disableOriginalConstructor()->getMock(); $manager->expects($this->exactly(1))->method('createInstance')->willReturn($block); $user = $this->getMock('\\Drupal\\Core\\Session\\AccountProxyInterface'); $facet_manager = $this->getMockBuilder('\\Drupal\\facets\\FacetManager\\DefaultFacetManager')->disableOriginalConstructor()->getMock(); $facet_manager->expects($this->exactly(1))->method('returnProcessedFacet')->with($facet)->willReturn($facet); $configuration = ['facets' => 'test', 'facet_value' => 'llama']; $sut = new OtherFacet($storage, $manager, $user, $facet_manager, $configuration, 'other_facet', ''); $evaluation = $sut->evaluate(); $this->assertFalse($evaluation); }