search_api-8.x-1.15/tests/src/Unit/Processor/StopwordsTest.php
tests/src/Unit/Processor/StopwordsTest.php
<?php namespace Drupal\Tests\search_api\Unit\Processor; use Drupal\search_api\IndexInterface; use Drupal\search_api\Plugin\search_api\processor\Stopwords; use Drupal\Tests\UnitTestCase; /** * Tests the "Stopwords" processor. * * @group search_api * * @see \Drupal\search_api\Plugin\search_api\processor\Stopwords */ class StopwordsTest extends UnitTestCase { use ProcessorTestTrait, TestItemsTrait; /** * Creates a new processor object for use in the tests. */ protected function setUp() { parent::setUp(); $this->setUpMockContainer(); $this->processor = new Stopwords([], 'stopwords', []);; } /** * Tests the process() method of the Stopwords processor. * * @param string $passed_value * The string that should be passed to process(). * @param string $expected_value * The expected altered string. * @param string[] $stopwords * The stopwords with which to configure the test processor. * * @dataProvider processDataProvider */ public function testProcess($passed_value, $expected_value, array $stopwords) { $this->processor->setConfiguration(['stopwords' => $stopwords]); $this->invokeMethod('process', [&$passed_value]); $this->assertEquals($expected_value, $passed_value); } /** * Data provider for testStopwords(). * * Processor checks for exact case, and tokenized content. */ public function processDataProvider() { return [ [ 'or', '', ['or'], ], [ 'orb', 'orb', ['or'], ], [ 'for', 'for', ['or'], ], [ 'ordor', 'ordor', ['or'], ], [ 'ÄÖÜÀÁ<>»«û', 'ÄÖÜÀÁ<>»«û', ['stopword1', 'ÄÖÜÀÁ<>»«', 'stopword3'], ], [ 'ÄÖÜÀÁ', '', ['stopword1', 'ÄÖÜÀÁ', 'stopword3'], ], [ 'ÄÖÜÀÁ stopword1', 'ÄÖÜÀÁ stopword1', ['stopword1', 'ÄÖÜÀÁ', 'stopword3'], ], ]; } /** * Tests the processor's preprocessSearchQuery() method. */ public function testPreprocessSearchQuery() { $index = $this->createMock(IndexInterface::class); $index->expects($this->any()) ->method('status') ->will($this->returnValue(TRUE)); /** @var \Drupal\search_api\IndexInterface $index */ $this->processor->setIndex($index); $query = \Drupal::getContainer() ->get('search_api.query_helper') ->createQuery($index); $keys = ['#conjunction' => 'AND', 'foo', 'bar', 'bar foo']; $query->keys($keys); $configuration = ['stopwords' => ['foobar', 'bar', 'barfoo']]; $this->processor->setConfiguration($configuration); $this->processor->preprocessSearchQuery($query); unset($keys[1]); $this->assertEquals($keys, $query->getKeys()); $this->assertEquals(['bar'], $query->getResults()->getIgnoredSearchKeys()); } }