1 views_ui.test ViewsUIWizardDisplaysTestCase::testPageDisplaysWithDifferentPermissions()

Test multiple overridden page displays with different permissions.

File

core/modules/views/tests/views_ui.test, line 957
Tests Views UI Wizard.

Class

ViewsUIWizardDisplaysTestCase
Tests that displays can be correctly overridden via the user interface.

Code

function testPageDisplaysWithDifferentPermissions() {
  // Create a basic view with no displays.
  $view['human_name'] = $this->randomName(16);
  $view['name'] = strtolower($this->randomName(16));
  $view['page[create]'] = FALSE;
  $view['block[create]'] = FALSE;

  $this->backdropPost('admin/structure/views/add', $view, t('Continue and configure'));

  // Add 4 page displays. Using different permissions for each one.
  $displays = array(
    'page_1' => 'administer modules',
    'page_2' => 'administer nodes',
    'page_3' => 'access content',
    'page_4' => 'bypass node access',
  );
  foreach ($displays as $display => $permission) {
    // Add a new Page, Set it permissions to 'administer modules'.
    $edit = array();
    $this->backdropPost("admin/structure/views/view/{$view['name']}/configure", $edit, t('Add Page'));

    $edit = array(
      'path' => "my-path",
    );
    $this->backdropPost("admin/structure/views/nojs/display/{$view['name']}/$display/path", $edit, t('Apply'));

    $edit = array(
      'override[dropdown]' => $display,
      'access_options[perm]' => $permission,
    );
    $this->backdropPost("admin/structure/views/nojs/display/{$view['name']}/$display/access_options", $edit, t('Apply'));
  }

  // Save all the displays.
  $this->backdropPost("admin/structure/views/view/{$view['name']}/configure/page_4", array(), t('Save'));

  foreach ($displays as $display => $permission) {
    $this->backdropGet("admin/structure/views/nojs/display/{$view['name']}/$display/access_options");
    // Check the permissions are the same after save all the displays.
    $this->assertOptionSelected('edit-access-options-perm', $permission);
  }

  // Now set page_1, page_2, and page_4 to defaults.
  foreach (array('page_1', 'page_2', 'page_4') as $display) {
    $edit = array(
      'override[dropdown]' => 'default',
      'access_options[perm]' => 'administer nodes',
    );
    $this->backdropPost("admin/structure/views/nojs/display/{$view['name']}/$display/access_options", $edit, t('Apply'));
  }

  // Save all the displays.
  $this->backdropPost("admin/structure/views/view/{$view['name']}/configure/page_4", array(), t('Save'));

  // Finally check that only 'page_3' have a different permission assigned.
  foreach (array('page_1', 'page_2', 'page_3', 'page_4') as $display) {
    $this->backdropGet("admin/structure/views/nojs/display/{$view['name']}/$display/access_options");
    $permission = 'administer nodes';
    if ($display == 'page_3') {
      $permission = 'access content';
    }
    $this->assertOptionSelected('edit-access-options-perm', $permission);
  }
}