You are here

public function ProcessorTestBase::setUp in Search API 8

Performs setup tasks before each individual test method is run.

Installs commonly used schemas and sets up a search server and an index, with the specified processor enabled.

Parameters

string|null $processor: (optional) The plugin ID of the processor that should be set up for testing.

Overrides KernelTestBase::setUp

9 calls to ProcessorTestBase::setUp()
AddHierarchyTest::setUp in tests/src/Kernel/Processor/AddHierarchyTest.php
Performs setup tasks before each individual test method is run.
AddURLKernelTest::setUp in tests/src/Kernel/Processor/AddURLKernelTest.php
Performs setup tasks before each individual test method is run.
ContentAccessTest::setUp in tests/src/Kernel/Processor/ContentAccessTest.php
Performs setup tasks before each individual test method is run.
LanguageWithFallbackTest::setUp in tests/src/Kernel/Processor/LanguageWithFallbackTest.php
Performs setup tasks before each individual test method is run.
NumberFieldBoostTest::setUp in tests/src/Kernel/Processor/NumberFieldBoostTest.php
Performs setup tasks before each individual test method is run.

... See full list

9 methods override ProcessorTestBase::setUp()
AddHierarchyTest::setUp in tests/src/Kernel/Processor/AddHierarchyTest.php
Performs setup tasks before each individual test method is run.
AddURLKernelTest::setUp in tests/src/Kernel/Processor/AddURLKernelTest.php
Performs setup tasks before each individual test method is run.
ContentAccessTest::setUp in tests/src/Kernel/Processor/ContentAccessTest.php
Performs setup tasks before each individual test method is run.
LanguageWithFallbackTest::setUp in tests/src/Kernel/Processor/LanguageWithFallbackTest.php
Performs setup tasks before each individual test method is run.
NumberFieldBoostTest::setUp in tests/src/Kernel/Processor/NumberFieldBoostTest.php
Performs setup tasks before each individual test method is run.

... See full list

File

tests/src/Kernel/Processor/ProcessorTestBase.php, line 63

Class

ProcessorTestBase
Provides a base class for Drupal unit tests for processors.

Namespace

Drupal\Tests\search_api\Kernel\Processor

Code

public function setUp($processor = NULL) {
  parent::setUp();
  $this
    ->installSchema('node', [
    'node_access',
  ]);
  $this
    ->installSchema('search_api', [
    'search_api_item',
  ]);
  $this
    ->installEntitySchema('user');
  $this
    ->installEntitySchema('node');
  $this
    ->installEntitySchema('comment');
  $this
    ->installEntitySchema('search_api_task');
  $this
    ->installSchema('comment', [
    'comment_entity_statistics',
  ]);
  $this
    ->installConfig([
    'field',
  ]);
  $this
    ->installConfig('search_api');

  // Do not use a batch for tracking the initial items after creating an
  // index when running the tests via the GUI. Otherwise, it seems Drupal's
  // Batch API gets confused and the test fails.
  if (!Utility::isRunningInCli()) {
    \Drupal::state()
      ->set('search_api_use_tracking_batch', FALSE);
  }
  $this->server = Server::create([
    'id' => 'server',
    'name' => 'Server & Name',
    'status' => TRUE,
    'backend' => 'search_api_db',
    'backend_config' => [
      'min_chars' => 3,
      'database' => 'default:default',
    ],
  ]);
  $this->server
    ->save();
  $this->index = Index::create([
    'id' => 'index',
    'name' => 'Index name',
    'status' => TRUE,
    'datasource_settings' => [
      'entity:comment' => [],
      'entity:node' => [],
    ],
    'server' => 'server',
    'tracker_settings' => [
      'default' => [],
    ],
  ]);
  $this->index
    ->setServer($this->server);
  $field_subject = new Field($this->index, 'subject');
  $field_subject
    ->setType('text');
  $field_subject
    ->setPropertyPath('subject');
  $field_subject
    ->setDatasourceId('entity:comment');
  $field_subject
    ->setLabel('Subject');
  $field_title = new Field($this->index, 'title');
  $field_title
    ->setType('text');
  $field_title
    ->setPropertyPath('title');
  $field_title
    ->setDatasourceId('entity:node');
  $field_title
    ->setLabel('Title');
  $this->index
    ->addField($field_subject);
  $this->index
    ->addField($field_title);
  if ($processor) {
    $this->processor = \Drupal::getContainer()
      ->get('search_api.plugin_helper')
      ->createProcessorPlugin($this->index, $processor);
    $this->index
      ->addProcessor($this->processor);
  }
  $this->index
    ->save();
}