function OverrideDisplaysTest::testOverrideDisplays

Tests that displays can be overridden via the UI.

File

drupal/core/modules/views/lib/Drupal/views/Tests/UI/OverrideDisplaysTest.php, line 26
Definition of Drupal\views\Tests\UI\OverrideDisplaysTest.

Class

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

Namespace

Drupal\views\Tests\UI

Code

function testOverrideDisplays() {

  // Create a basic view that shows all content, with a page and a block
  // display.
  $view['human_name'] = $this
    ->randomName(16);
  $view['name'] = strtolower($this
    ->randomName(16));
  $view['page[create]'] = 1;
  $view['page[path]'] = $this
    ->randomName(16);
  $view['block[create]'] = 1;
  $view_path = $view['page[path]'];
  $this
    ->drupalPost('admin/structure/views/add', $view, t('Save & exit'));

  // Configure its title. Since the page and block both started off with the
  // same (empty) title in the views wizard, we expect the wizard to have set
  // things up so that they both inherit from the default display, and we
  // therefore only need to change that to have it take effect for both.
  $edit = array();
  $edit['title'] = $original_title = $this
    ->randomName(16);
  $edit['override[dropdown]'] = 'default';
  $this
    ->drupalPost("admin/structure/views/nojs/display/{$view['name']}/page_1/title", $edit, t('Apply'));
  $this
    ->drupalPost("admin/structure/views/view/{$view['name']}/edit/page_1", array(), t('Save'));

  // Put the block into the first sidebar region, and make sure it will not
  // display on the view's page display (since we will be searching for the
  // presence/absence of the view's title in both the page and the block).
  $this
    ->drupalGet('admin/structure/block');
  $edit = array();
  $edit["blocks[views_{$view['name']}-block_1][region]"] = 'sidebar_first';
  $this
    ->drupalPost('admin/structure/block', $edit, t('Save blocks'));
  $edit = array();
  $edit['visibility'] = BLOCK_VISIBILITY_NOTLISTED;
  $edit['pages'] = $view_path;
  $this
    ->drupalPost("admin/structure/block/manage/views/{$view['name']}-block_1/configure", $edit, t('Save block'));

  // Add a node that will appear in the view, so that the block will actually
  // be displayed.
  $this
    ->drupalCreateNode();

  // Make sure the title appears in both the page and the block.
  $this
    ->drupalGet($view_path);
  $this
    ->assertResponse(200);
  $this
    ->assertText($original_title);
  $this
    ->drupalGet('');
  $this
    ->assertText($original_title);

  // Change the title for the page display only, and make sure that is the
  // only one that is changed.
  $edit = array();
  $edit['title'] = $new_title = $this
    ->randomName(16);
  $edit['override[dropdown]'] = 'page_1';
  $this
    ->drupalPost("admin/structure/views/nojs/display/{$view['name']}/page_1/title", $edit, t('Apply'));
  $this
    ->drupalPost("admin/structure/views/view/{$view['name']}/edit/page_1", array(), t('Save'));
  $this
    ->drupalGet($view_path);
  $this
    ->assertResponse(200);
  $this
    ->assertText($new_title);
  $this
    ->assertNoText($original_title);
  $this
    ->drupalGet('');
  $this
    ->assertText($original_title);
  $this
    ->assertNoText($new_title);
}