You are here

public function DisplayKernelTest::testisIdentifierUnique in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/views/tests/src/Kernel/Plugin/DisplayKernelTest.php \Drupal\Tests\views\Kernel\Plugin\DisplayKernelTest::testisIdentifierUnique()

Tests the ::isIdentifierUnique method.

File

core/modules/views/tests/src/Kernel/Plugin/DisplayKernelTest.php, line 121

Class

DisplayKernelTest
Drupal unit tests for the DisplayPluginBase class.

Namespace

Drupal\Tests\views\Kernel\Plugin

Code

public function testisIdentifierUnique() {
  $view = Views::getView('test_view');
  $view
    ->initDisplay();

  // Add a handler that doesn't have an Identifier when exposed.
  $sorts = [
    'name' => [
      'id' => 'name',
      'field' => 'name',
      'table' => 'views_test_data',
      'plugin_id' => 'standard',
      'order' => 'asc',
      'expose' => [
        'label' => 'Id',
        'field_identifier' => 'name',
      ],
      'exposed' => TRUE,
    ],
  ];

  // Add a handler that does have an Identifier when exposed.
  $filters = [
    'id' => [
      'field' => 'id',
      'id' => 'id',
      'table' => 'views_test_data',
      'value' => [],
      'plugin_id' => 'numeric',
      'exposed' => TRUE,
      'expose' => [
        'operator_id' => '',
        'label' => 'Id',
        'description' => '',
        'identifier' => 'id',
        'required' => FALSE,
        'remember' => FALSE,
        'multiple' => FALSE,
      ],
    ],
  ];
  $view->display_handler
    ->setOption('sorts', $sorts);
  $view->display_handler
    ->setOption('filters', $filters);
  $this
    ->assertTrue($view->display_handler
    ->isIdentifierUnique('some_id', 'some_id'));
  $this
    ->assertFalse($view->display_handler
    ->isIdentifierUnique('some_id', 'id'));

  // Check that an exposed filter is able to use the same identifier as an
  // exposed sort.
  $sorts['name']['expose']['field_identifier'] = 'id';
  $view->display_handler->handlers = [];
  $view->display_handler
    ->setOption('sorts', $sorts);
  $this
    ->assertTrue($view->display_handler
    ->isIdentifierUnique('id', 'id'));
}