1.20.x views_ui.test ViewsUIWizardDisplaysTestCase::testOverrideDisplays()

Tests that displays can be overridden via the UI.

File

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

Class

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

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->backdropPost('admin/structure/views/add', $view, t('Save view'));

  // 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->backdropPost("admin/structure/views/nojs/display/{$view['name']}/page/title", $edit, t('Apply'));
  $this->backdropPost("admin/structure/views/view/{$view['name']}/configure/page", array(), t('Save'));

  // Put the block into the 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).
  views_invalidate_cache();
  $layout = layout_load('default');
  $block = $layout->addBlock('views', $view['name'] . '-block', 'sidebar');
  $block->conditions[] = layout_create_access('path', array(
    'settings' => array(
      'visibility_setting' => 0,
      'paths' => $view_path,
    )
  ));
  $layout->save();

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

  // Make sure the title appears in both the page and the block.
  $this->backdropGet($view_path);
  $this->assertText($original_title);
  $this->backdropGet('user');
  $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';
  $this->backdropPost("admin/structure/views/nojs/display/{$view['name']}/page/title", $edit, t('Apply'));
  $this->backdropPost("admin/structure/views/view/{$view['name']}/configure/page", array(), t('Save'));
  $this->backdropGet($view_path);
  $this->assertText($new_title);
  $this->assertNoText($original_title);
  $this->backdropGet('user');
  $this->assertText($original_title);
  $this->assertNoText($new_title);
}