function FilterCombineTest::testFilterCombineContainsFieldsOverwritten

Same name and namespace in other branches
  1. 9 core/modules/views/tests/src/Kernel/Handler/FilterCombineTest.php \Drupal\Tests\views\Kernel\Handler\FilterCombineTest::testFilterCombineContainsFieldsOverwritten()
  2. 8.9.x core/modules/views/tests/src/Kernel/Handler/FilterCombineTest.php \Drupal\Tests\views\Kernel\Handler\FilterCombineTest::testFilterCombineContainsFieldsOverwritten()
  3. 10 core/modules/views/tests/src/Kernel/Handler/FilterCombineTest.php \Drupal\Tests\views\Kernel\Handler\FilterCombineTest::testFilterCombineContainsFieldsOverwritten()

Tests if the filter can handle removed fields.

Tests the combined filter handler when a field overwrite is done and fields set in the combine filter are removed from the display but not from the combined filter settings.

File

core/modules/views/tests/src/Kernel/Handler/FilterCombineTest.php, line 268

Class

FilterCombineTest
Tests the combine filter handler.

Namespace

Drupal\Tests\views\Kernel\Handler

Code

public function testFilterCombineContainsFieldsOverwritten() : void {
    $view = Views::getView('test_view');
    $view->setDisplay();
    $fields = $view->displayHandlers
        ->get('default')
        ->getOption('fields');
    $view->displayHandlers
        ->get('default')
        ->overrideOption('fields', $fields + [
        'job' => [
            'id' => 'job',
            'table' => 'views_test_data',
            'field' => 'job',
            'relationship' => 'none',
        ],
    ]);
    // Change the filtering.
    $view->displayHandlers
        ->get('default')
        ->overrideOption('filters', [
        'age' => [
            'id' => 'combine',
            'table' => 'views',
            'field' => 'combine',
            'relationship' => 'none',
            'operator' => 'contains',
            'fields' => [
                'name',
                'job',
                // Add a dummy field to the combined fields to simulate
                // a removed or deleted field.
'dummy',
            ],
            'value' => 'ing',
        ],
    ]);
    $this->executeView($view);
    // Make sure this view will not get displayed.
    $this->assertTrue($view->build_info['fail'], "View build has been marked as failed.");
    // Make sure this view does not pass validation with the right error.
    $errors = $view->validate();
    $this->assertEquals('Field dummy set in Global: Combine fields filter is not set in display Default.', reset($errors['default']));
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.