ds.views.test 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <?php
  2. /**
  3. * @file
  4. * Entities tests
  5. */
  6. class dsViewsTests extends dsBaseTest {
  7. /**
  8. * Implements getInfo().
  9. */
  10. public static function getInfo() {
  11. return array(
  12. 'name' => t('Views'),
  13. 'description' => t('Tests for Display Suite Views integration.'),
  14. 'group' => t('Display Suite'),
  15. );
  16. }
  17. /**
  18. * Test views integration.
  19. */
  20. function testDSViews() {
  21. $edit_tag_1 = array(
  22. 'field_tags[und]' => 'Tag 1',
  23. );
  24. $edit_tag_2 = array(
  25. 'field_tags[und]' => 'Tag 2',
  26. );
  27. // Create 3 nodes.
  28. $settings_1 = array(
  29. 'type' => 'article',
  30. 'title' => 'Article 1',
  31. 'created' => REQUEST_TIME,
  32. );
  33. $node_1 = $this->drupalCreateNode($settings_1);
  34. $this->drupalPost('node/' . $node_1->nid . '/edit', $edit_tag_1, t('Save'));
  35. $settings_2 = array(
  36. 'type' => 'article',
  37. 'title' => 'Article 2',
  38. 'created' => REQUEST_TIME + 3600,
  39. );
  40. $node_2 = $this->drupalCreateNode($settings_2);
  41. $this->drupalPost('node/' . $node_2->nid . '/edit', $edit_tag_1, t('Save'));
  42. $settings_3 = array(
  43. 'type' => 'article',
  44. 'title' => 'Article 3',
  45. 'created' => REQUEST_TIME + 7200,
  46. );
  47. $node_3 = $this->drupalCreateNode($settings_3);
  48. $this->drupalPost('node/' . $node_3->nid . '/edit', $edit_tag_2, t('Save'));
  49. // Configure teaser and full layout.
  50. $layout = array(
  51. 'additional_settings[layout]' => 'ds_2col',
  52. );
  53. $fields = array(
  54. 'fields[title][region]' => 'left',
  55. 'fields[body][region]' => 'right',
  56. );
  57. $assert = array(
  58. 'regions' => array(
  59. 'left' => '<td colspan="8">' . t('Left') . '</td>',
  60. 'right' => '<td colspan="8">' . t('Right') . '</td>',
  61. ),
  62. );
  63. $this->dsSelectLayout($layout, $assert, 'admin/structure/types/manage/article/display/teaser');
  64. $this->dsConfigureUI($fields, 'admin/structure/types/manage/article/display/teaser');
  65. $layout = array(
  66. 'additional_settings[layout]' => 'ds_4col',
  67. );
  68. $fields = array(
  69. 'fields[post_date][region]' => 'first',
  70. 'fields[body][region]' => 'second',
  71. 'fields[author][region]' => 'third',
  72. 'fields[node_link][region]' => 'fourth',
  73. );
  74. $assert = array(
  75. 'regions' => array(
  76. 'first' => '<td colspan="8">' . t('First') . '</td>',
  77. 'second' => '<td colspan="8">' . t('Second') . '</td>',
  78. 'third' => '<td colspan="8">' . t('Third') . '</td>',
  79. 'fourth' => '<td colspan="8">' . t('Fourth') . '</td>',
  80. ),
  81. );
  82. $this->dsSelectLayout($layout, $assert);
  83. $this->dsConfigureUI($fields);
  84. // Get default teaser view.
  85. $this->drupalGet('ds-testing');
  86. foreach (array('group-left', 'group-right') as $region) {
  87. $this->assertRaw($region, t('Region !region found', array('!region' => $region)));
  88. }
  89. $this->assertRaw('Article 1');
  90. $this->assertRaw('Article 2');
  91. $this->assertRaw('Article 3');
  92. // Get alternating view.
  93. $this->drupalGet('ds-testing-2');
  94. foreach (array('group-left', 'group-right', 'first', 'second', 'third', 'fourth') as $region) {
  95. $this->assertRaw($region, t('Region !region found', array('!region' => $region)));
  96. }
  97. $this->assertNoRaw('Article 1');
  98. $this->assertRaw('Article 2');
  99. $this->assertRaw('Article 3');
  100. // Get grouping view (without changing header function).
  101. $this->drupalGet('ds-testing-3');
  102. foreach (array('group-left', 'group-right') as $region) {
  103. $this->assertRaw($region, t('Region !region found', array('!region' => $region)));
  104. }
  105. $this->assertRaw('Article 1');
  106. $this->assertRaw('Article 2');
  107. $this->assertRaw('Article 3');
  108. $this->assertRaw('<h2 class="grouping-title">1</h2>');
  109. $this->assertRaw('<h2 class="grouping-title">2</h2>');
  110. // Get grouping view (with changing header function).
  111. $this->drupalGet('ds-testing-4');
  112. foreach (array('group-left', 'group-right') as $region) {
  113. $this->assertRaw($region, t('Region !region found', array('!region' => $region)));
  114. }
  115. $this->assertRaw('Article 1');
  116. $this->assertRaw('Article 2');
  117. $this->assertRaw('Article 3');
  118. $this->assertRaw('<h2 class="grouping-title">Tag 1</h2>');
  119. $this->assertRaw('<h2 class="grouping-title">Tag 2</h2>');
  120. // Get advanced function view.
  121. $this->drupalGet('ds-testing-5');
  122. $this->assertRaw('Advanced display for id 1');
  123. $this->assertRaw('Advanced display for id 2');
  124. $this->assertRaw('Advanced display for id 3');
  125. // Test views templates overrides.
  126. $this->drupalGet('admin/structure/ds/vd/manage/ds_testing-page_5/display');
  127. $this->assertText('No view found to layout.');
  128. $edit = array(
  129. 'vd' => 'ds_testing-page_5',
  130. );
  131. $this->drupalPost('admin/structure/ds/vd', $edit, t('Add'));
  132. $this->dsSelectLayout(array(), array(), 'admin/structure/ds/vd/manage/ds_testing-page_5/display');
  133. $edit = array(
  134. 'fields[pager][region]' => 'header',
  135. 'fields[footer][region]' => 'header',
  136. 'fields[rows][region]' => 'left',
  137. 'fields[exposed][region]' => 'right',
  138. 'fields[header][region]' => 'footer',
  139. );
  140. $this->dsConfigureUI($edit, 'admin/structure/ds/vd/manage/ds_testing-page_5/display');
  141. // Test on the views page itself.
  142. $this->drupalGet('ds-testing-6');
  143. $this->assertRaw('<div class="group-header">
  144. <p>Footer text</p>
  145. </div>');
  146. $this->assertRaw('<div class="group-left">
  147. <div class="views-row views-row-1 views-row-odd views-row-first">');
  148. $this->assertRaw('<div class="group-right">
  149. <form action="' . url('ds-testing-6') . '"');
  150. $this->assertRaw('<div class="group-footer">
  151. <p>Header text</p>');
  152. }
  153. }