function LibraryCachingTest::testConsecutiveDialogRequests

Tests if the Views UI dialogs open on consecutive requests.

File

core/modules/views_ui/tests/src/FunctionalJavascript/LibraryCachingTest.php, line 27

Class

LibraryCachingTest
Tests the JavaScript library caching on consecutive requests.

Namespace

Drupal\Tests\views_ui\FunctionalJavascript

Code

public function testConsecutiveDialogRequests() {
  $admin_user = $this->drupalCreateUser([
    'administer site configuration',
    'administer views',
    'administer nodes',
    'access content overview',
  ]);
  // Disable automatic live preview to make the sequence of calls clearer.
  \Drupal::configFactory()->getEditable('views.settings')
    ->set('ui.always_live_preview', FALSE)
    ->save();
  $this->drupalLogin($admin_user);
  $this->drupalGet('admin/structure/views/view/content');
  $page = $this->getSession()
    ->getPage();
  // Use the 'Add' link for fields to open a dialog. This will load the proper
  // dialog libraries.
  $add_link = $page->findById('views-add-field');
  $this->assertTrue($add_link->isVisible(), 'Add fields button found.');
  $add_link->click();
  $this->assertJsCondition("jQuery('.ui-dialog-titlebar').length > 0");
  // Close the dialog and open it again. No no libraries will be loaded, but a
  // cache entry will be made for not loading any libraries.
  $page->pressButton('Close');
  $add_link->click();
  $this->assertJsCondition("jQuery('.ui-dialog-titlebar').length > 0");
  $page->pressButton('Close');
  // Reload the page.
  $this->drupalGet('admin/structure/views/view/content');
  $page = $this->getSession()
    ->getPage();
  // Now use the 'Update preview' button to load libraries.
  $preview = $page->findById('preview-submit');
  // The first click will load all the libraries.
  $preview->click();
  $this->assertJsCondition("jQuery('.ajax-progress').length === 0");
  // The second click will not load any new libraries.
  $preview->click();
  $this->assertJsCondition("jQuery('.ajax-progress').length === 0");
  // Check to see if the dialogs still open.
  $add_link = $page->findById('views-add-field');
  $add_link->click();
  $this->assertJsCondition("jQuery('.ui-dialog-titlebar').length > 0");
  $page->pressButton('Close');
}

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