ClaroViewsBulkOperationsTest.php

Same filename and directory in other branches
  1. 10 core/tests/Drupal/FunctionalJavascriptTests/Theme/ClaroViewsBulkOperationsTest.php

Namespace

Drupal\FunctionalJavascriptTests\Theme

File

core/tests/Drupal/FunctionalJavascriptTests/Theme/ClaroViewsBulkOperationsTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\FunctionalJavascriptTests\Theme;

use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
use Drupal\Tests\node\Traits\ContentTypeCreationTrait;
use Drupal\Tests\node\Traits\NodeCreationTrait;

/**
 * Tests Claro's Views Bulk Operations form.
 *
 * @group claro
 */
class ClaroViewsBulkOperationsTest extends WebDriverTestBase {
    use ContentTypeCreationTrait;
    use NodeCreationTrait;
    
    /**
     * {@inheritdoc}
     */
    protected static $modules = [
        'node',
        'views',
    ];
    
    /**
     * {@inheritdoc}
     */
    protected $defaultTheme = 'claro';
    
    /**
     * {@inheritdoc}
     */
    protected function setUp() : void {
        parent::setUp();
        // Create a Content type and two test nodes.
        $this->createContentType([
            'type' => 'page',
        ]);
        $this->createNode([
            'title' => 'Page One',
        ]);
        $this->createNode([
            'title' => 'Page Two',
        ]);
        // Create a user privileged enough to use exposed filters and view content.
        $user = $this->drupalCreateUser([
            'administer site configuration',
            'access content',
            'access content overview',
            'edit any page content',
        ]);
        $this->drupalLogin($user);
    }
    
    /**
     * Tests the dynamic Bulk Operations form.
     */
    public function testBulkOperationsUi() : void {
        $this->drupalGet('admin/content');
        $page = $this->getSession()
            ->getPage();
        $assert_session = $this->assertSession();
        $no_items_selected = 'No items selected';
        $one_item_selected = '1 item selected';
        $two_items_selected = '2 items selected';
        $vbo_available_message = 'Bulk actions are now available';
        $this->assertNotNull($assert_session->waitForElementVisible('css', ".js-views-bulk-actions-status:contains(\"{$no_items_selected}\")"));
        $select_all = $page->find('css', '.select-all > input');
        $page->checkField('node_bulk_form[0]');
        $this->assertNotNull($assert_session->waitForElementVisible('css', ".js-views-bulk-actions-status:contains(\"{$one_item_selected}\")"));
        // When the bulk operations controls are first activated, this should be
        // relayed to screen readers.
        $this->assertNotNull($assert_session->waitForElement('css', "#drupal-live-announce:contains(\"{$vbo_available_message}\")"));
        $this->assertFalse($select_all->isChecked());
        $page->checkField('node_bulk_form[1]');
        $this->assertNotNull($assert_session->waitForElementVisible('css', ".js-views-bulk-actions-status:contains(\"{$two_items_selected}\")"));
        $this->assertNotNull($assert_session->waitForElement('css', "#drupal-live-announce:contains(\"{$two_items_selected}\")"));
        $assert_session->pageTextNotContains($vbo_available_message);
        $this->assertTrue($select_all->isChecked());
        $page->uncheckField('node_bulk_form[0]');
        $this->assertNotNull($assert_session->waitForElementVisible('css', ".js-views-bulk-actions-status:contains(\"{$one_item_selected}\")"));
        $this->assertNotNull($assert_session->waitForElement('css', "#drupal-live-announce:contains(\"{$one_item_selected}\")"));
        $assert_session->pageTextNotContains($vbo_available_message);
        $this->assertFalse($select_all->isChecked());
        $page->uncheckField('node_bulk_form[1]');
        $this->assertNotNull($assert_session->waitForElementVisible('css', ".js-views-bulk-actions-status:contains(\"{$no_items_selected}\")"));
        $this->assertNotNull($assert_session->waitForElement('css', "#drupal-live-announce:contains(\"{$no_items_selected}\")"));
        $assert_session->pageTextNotContains($vbo_available_message);
        $this->assertFalse($select_all->isChecked());
        $select_all->check();
        $this->assertNotNull($assert_session->waitForElementVisible('css', ".js-views-bulk-actions-status:contains(\"{$two_items_selected}\")"));
        $this->assertNotNull($assert_session->waitForElement('css', "#drupal-live-announce:contains(\"{$vbo_available_message}\")"));
        $this->assertNotNull($assert_session->waitForElement('css', "#drupal-live-announce:contains(\"{$two_items_selected}\")"));
        $select_all->uncheck();
        $this->assertNotNull($assert_session->waitForElementVisible('css', ".js-views-bulk-actions-status:contains(\"{$no_items_selected}\")"));
        $this->assertNotNull($assert_session->waitForElement('css', "#drupal-live-announce:contains(\"{$no_items_selected}\")"));
        $assert_session->pageTextNotContains($vbo_available_message);
    }

}

Classes

Title Deprecated Summary
ClaroViewsBulkOperationsTest Tests Claro's Views Bulk Operations form.

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