You are here

function dsNodeTests::testDSNodeEntity in Display Suite 7

Same name and namespace in other branches
  1. 7.2 tests/ds.entities.test \dsNodeTests::testDSNodeEntity()

Test basic node display fields.

File

tests/ds.entities.test, line 102
Entities tests

Class

dsNodeTests
@file Entities tests

Code

function testDSNodeEntity() {
  $node = $this
    ->entitiesTestSetup();

  // Look at node and verify token and block field.
  $this
    ->drupalGet('node/' . $node->nid);
  $this
    ->assertRaw('view-mode-full', 'Template file found (in full view mode)');
  $this
    ->assertRaw('<div class="token-class">' . $node->title . '</span>', t('Token field found'));
  $this
    ->assertRaw('I am a PHP field', t('PHP field found'));
  $this
    ->assertRaw('group-header', 'Template found (region header)');
  $this
    ->assertRaw('group-footer', 'Template found (region footer)');
  $this
    ->assertRaw('group-left', 'Template found (region left)');
  $this
    ->assertRaw('group-right', 'Template found (region right)');

  // Configure teaser layout.
  $teaser = array(
    'additional_settings[layout]' => 'ds_2col',
  );
  $teaser_assert = array(
    'regions' => array(
      'left' => '<td colspan="8">' . t('Left') . '</td>',
      'right' => '<td colspan="8">' . t('Right') . '</td>',
    ),
  );
  $this
    ->dsSelectLayout($teaser, $teaser_assert, 'admin/structure/types/manage/article/display/teaser');
  $fields = array(
    'fields[token_field][region]' => 'left',
    'fields[php_field][region]' => 'left',
    'fields[body][region]' => 'right',
    'fields[links][region]' => 'right',
  );
  $this
    ->dsConfigureUI($fields, 'admin/structure/types/manage/article/display/teaser');

  // Switch view mode on full node page.
  $edit = array(
    'ds_switch' => 'teaser',
  );
  $this
    ->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
  $this
    ->assertRaw('view-mode-teaser', 'Switched to teaser mode');
  $this
    ->assertRaw('group-left', 'Template found (region left)');
  $this
    ->assertRaw('group-right', 'Template found (region right)');
  $this
    ->assertNoRaw('group-header', 'Template found (no region header)');
  $this
    ->assertNoRaw('group-footer', 'Template found (no region footer)');
  $edit = array(
    'ds_switch' => '',
  );
  $this
    ->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
  $this
    ->assertRaw('view-mode-full', 'Switched to full mode again');

  // Test all options of a block field.
  $block = array(
    'name' => 'Test block field',
    'field' => 'test_block_field',
    'entities[node]' => '1',
    'block' => 'node|recent',
    'block_render' => DS_BLOCK_TEMPLATE,
  );
  $this
    ->dsCreateBlockField($block);
  $fields = array(
    'fields[test_block_field][region]' => 'left',
    'fields[token_field][region]' => 'hidden',
    'fields[php_field][region]' => 'hidden',
    'fields[body][region]' => 'hidden',
    'fields[links][region]' => 'hidden',
  );
  $this
    ->dsConfigureUI($fields);
  $this
    ->drupalGet('node/' . $node->nid);
  $this
    ->assertRaw('<h2>Recent content</h2>');
  $block = array(
    'block_render' => DS_BLOCK_TITLE_CONTENT,
  );
  $this
    ->dsCreateBlockField($block, 'admin/structure/ds/fields/manage_block/test_block_field', FALSE);
  $this
    ->drupalGet('node/' . $node->nid);
  $this
    ->assertNoRaw('<h2>Recent content</h2>');
  $this
    ->assertRaw('Recent content');
  $block = array(
    'block_render' => DS_BLOCK_CONTENT,
  );
  $this
    ->dsCreateBlockField($block, 'admin/structure/ds/fields/manage_block/test_block_field', FALSE);
  $this
    ->drupalGet('node/' . $node->nid);
  $this
    ->assertNoRaw('<h2>Recent content</h2>');
  $this
    ->assertNoRaw('Recent content');

  // Remove the page title (we'll use the switch view mode functionality too for this).
  $edit = array(
    'additional_settings[ds_page_title_options][page_option_type]' => '1',
  );
  $this
    ->dsConfigureUI($edit, 'admin/structure/types/manage/article/display/teaser');
  $this
    ->drupalGet('node/' . $node->nid);
  $this
    ->assertRaw('<h1 class="title" id="page-title">
          ' . $node->title . '        </h1>');
  $edit = array(
    'ds_switch' => 'teaser',
  );
  $this
    ->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
  $this
    ->drupalGet('node/' . $node->nid);
  $this
    ->assertNoRaw('<h1 class="title" id="page-title">
          ' . $node->title . '        </h1>');

  // Use page title substitutions.
  $edit = array(
    'additional_settings[ds_page_title_options][page_option_type]' => '2',
    'additional_settings[ds_page_title_options][page_option_title]' => 'Change title: %node:type',
  );
  $this
    ->dsConfigureUI($edit, 'admin/structure/types/manage/article/display/teaser');
  $this
    ->drupalGet('node/' . $node->nid);
  $this
    ->assertRaw('<h1 class="title" id="page-title">
          Change title: ' . $node->type . '        </h1>');
  $edit = array(
    'additional_settings[ds_page_title_options][page_option_type]' => '0',
  );
  $this
    ->dsConfigureUI($edit, 'admin/structure/types/manage/article/display/teaser');

  // Go to home page, page title shouldn't bleed here
  // see http://drupal.org/node/1446554.
  $edit = array(
    'ds_switch' => '',
  );
  $this
    ->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
  $edit = array(
    'additional_settings[ds_page_title_options][page_option_type]' => '2',
    'additional_settings[ds_page_title_options][page_option_title]' => 'Bleed title: %node:type',
  );
  $this
    ->dsConfigureUI($edit, 'admin/structure/types/manage/article/display');
  $this
    ->drupalGet('node/' . $node->nid);
  $this
    ->assertRaw('<h1 class="title" id="page-title">
          Bleed title: ' . $node->type . '        </h1>');
  $this
    ->drupalGet('node');
  $this
    ->assertNoText('Bleed title');

  // Test revisions. Enable the revision view mode
  $edit = array(
    'additional_settings[modes][view_modes_custom][revision]' => '1',
  );
  $this
    ->drupalPost('admin/structure/types/manage/article/display', $edit, t('Save'));

  // Select layout and configure fields.
  $edit = array(
    'additional_settings[layout]' => 'ds_2col',
  );
  $assert = array(
    'regions' => array(
      'left' => '<td colspan="8">' . t('Left') . '</td>',
      'right' => '<td colspan="8">' . t('Right') . '</td>',
    ),
  );
  $this
    ->dsSelectLayout($edit, $assert, 'admin/structure/types/manage/article/display/revision');
  $edit = array(
    'fields[body][region]' => 'left',
    'fields[links][region]' => 'right',
    'fields[author][region]' => 'right',
  );
  $this
    ->dsConfigureUI($edit, 'admin/structure/types/manage/article/display/revision');

  // Create revision of the node.
  $edit = array(
    'revision' => TRUE,
    'log' => 'Test revision',
  );
  $this
    ->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
  $this
    ->assertText('Revisions');

  // Assert revision is using 2 col template.
  $this
    ->drupalGet('node/' . $node->nid . '/revisions/1/view');
  $this
    ->assertText('Body:', 'Body label');

  // Change title of revision.
  $edit = array(
    'additional_settings[ds_page_title_options][page_option_type]' => '2',
    'additional_settings[ds_page_title_options][page_option_title]' => 'Custom revision title',
  );
  $this
    ->dsConfigureUI($edit, 'admin/structure/types/manage/article/display/revision');
  $this
    ->drupalGet('node/' . $node->nid . '/revisions/1/view');
  $this
    ->assertText('Custom revision title', 'Custom title on revision view mode');

  // Assert full view is using stacked template.
  $this
    ->drupalGet('node/' . $node->nid);
  $this
    ->assertNoText('Body:', 'Body label');

  // Test formatter limit on article with tags.
  $edit = array(
    'ds_switch' => '',
    'field_tags[und]' => 'Tag 1, Tag 2',
  );
  $this
    ->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
  $edit = array(
    'fields[field_tags][region]' => 'right',
  );
  $this
    ->dsConfigureUI($edit, 'admin/structure/types/manage/article/display');
  $this
    ->drupalGet('node/' . $node->nid);
  $this
    ->assertText('Tag 1');
  $this
    ->assertText('Tag 2');
  $edit = array(
    'fields[field_tags][format][limit]' => '1',
  );
  $this
    ->dsConfigureUI($edit, 'admin/structure/types/manage/article/display');
  $this
    ->drupalGet('node/' . $node->nid);
  $this
    ->assertText('Tag 1');
  $this
    ->assertNoText('Tag 2');

  // Test check_plain() on ds_render_field() with the title field.
  $edit = array(
    'fields[title][region]' => 'right',
  );
  $this
    ->dsConfigureUI($edit, 'admin/structure/types/manage/article/display');
  $edit = array(
    'title' => 'Hi, I am an article <script>alert(\'with a javascript tag in the title\');</script>',
  );
  $this
    ->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
  $this
    ->drupalGet('node/' . $node->nid);
  $this
    ->assertRaw('<h2>Hi, I am an article &lt;script&gt;alert(&#039;with a javascript tag in the title&#039;);&lt;/script&gt;</h2>');
}