You are here

public function ViewsBulkTest::testBulkSelection in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/views/tests/src/Functional/Plugin/ViewsBulkTest.php \Drupal\Tests\views\Functional\Plugin\ViewsBulkTest::testBulkSelection()
  2. 10 core/modules/views/tests/src/Functional/Plugin/ViewsBulkTest.php \Drupal\Tests\views\Functional\Plugin\ViewsBulkTest::testBulkSelection()

Tests bulk selection.

File

core/modules/views/tests/src/Functional/Plugin/ViewsBulkTest.php, line 43

Class

ViewsBulkTest
Tests views bulk operation selection.

Namespace

Drupal\Tests\views\Functional\Plugin

Code

public function testBulkSelection() {

  // Create first node, set updated time to the past.
  $node_1 = $this
    ->drupalCreateNode([
    'type' => 'page',
    'title' => 'The first node',
    'changed' => \Drupal::time()
      ->getRequestTime() - 180,
  ]);

  // Login as administrator and go to admin/content.
  $this
    ->drupalLogin($this->admin_user);
  $this
    ->drupalGet('admin/content');
  $this
    ->assertSession()
    ->pageTextContains($node_1
    ->getTitle());

  // Create second node now that the admin overview has been rendered.
  $node_2 = $this
    ->drupalCreateNode([
    'type' => 'page',
    'title' => 'The second node',
    'changed' => \Drupal::time()
      ->getRequestTime() - 120,
  ]);

  // Now click 'Apply to selected items' and assert the first node is selected
  // on the confirm form.
  $this
    ->submitForm([
    'node_bulk_form[0]' => TRUE,
  ], 'Apply to selected items');
  $this
    ->assertSession()
    ->pageTextContains($node_1
    ->getTitle());
  $this
    ->assertSession()
    ->pageTextNotContains($node_2
    ->getTitle());

  // Change the pager limit to 2.
  $this
    ->config('views.view.content')
    ->set('display.default.display_options.pager.options.items_per_page', 2)
    ->save();

  // Render the overview page again.
  $this
    ->drupalGet('admin/content');

  // Create third node now that the admin overview has been rendered.
  $node_3 = $this
    ->drupalCreateNode([
    'type' => 'page',
    'title' => 'The third node',
  ]);

  // Now click 'Apply to selected items' and assert the second node is
  // selected on the confirm form.
  $this
    ->submitForm([
    'node_bulk_form[1]' => TRUE,
  ], 'Apply to selected items');
  $this
    ->assertSession()
    ->pageTextContains($node_1
    ->getTitle());
  $this
    ->assertSession()
    ->pageTextNotContains($node_3
    ->getTitle());
}