search_api-8.x-1.15/tests/src/Unit/BackendPluginBaseTest.php
tests/src/Unit/BackendPluginBaseTest.php
<?php namespace Drupal\Tests\search_api\Unit; use Drupal\search_api\IndexInterface; use Drupal\search_api\Query\QueryInterface; use Drupal\search_api_test\Plugin\search_api\backend\TestBackend; use Drupal\Tests\UnitTestCase; /** * Tests methods provided by the backend plugin base class. * * @coversDefaultClass \Drupal\search_api\Backend\BackendPluginBase * * @group search_api */ class BackendPluginBaseTest extends UnitTestCase { /** * Tests whether fulltext fields are correctly extracted from queries. * * @param string[]|null $query_fields * The fulltext fields set explicitly on the query, if any. * @param string[] $expected * The field IDs that are expected to be returned. * * @covers ::getQueryFulltextFields * * @dataProvider getQueryFulltextFieldsDataProvider */ public function testGetQueryFulltextFields($query_fields, array $expected) { $index = $this->createMock(IndexInterface::class); $index->method('getFulltextFields')->willReturn(['field1', 'field2']); $query = $this->createMock(QueryInterface::class); $query->method('getFulltextFields')->willReturn($query_fields); $query->method('getIndex')->willReturn($index); $backend = new TestBackend([], '', []); $class = new \ReflectionClass(TestBackend::class); $method = $class->getMethod('getQueryFulltextFields'); $method->setAccessible(TRUE); $this->assertEquals($expected, $method->invokeArgs($backend, [$query])); } /** * Provides test data for testGetQueryFulltextFields(). * * @return array[] * An array of argument arrays for testGetQueryFulltextFields(). */ public function getQueryFulltextFieldsDataProvider() { return [ 'null fields' => [NULL, ['field1', 'field2']], 'field1' => [['field1'], ['field1']], 'field2' => [['field2'], ['field2']], 'all fields' => [['field1', 'field2'], ['field1', 'field2']], 'invalid fields' => [['field1', 'foo'], ['field1']], ]; } }