views_view.test 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. <?php
  2. /**
  3. * @file
  4. * Definition of ViewsViewTest.
  5. */
  6. /**
  7. * Views class tests.
  8. */
  9. class ViewsViewTest extends ViewsSqlTest {
  10. public static function getInfo() {
  11. return array(
  12. 'name' => 'Test the view class',
  13. 'description' => 'Tests some functionality of the view class',
  14. 'group' => 'Views',
  15. );
  16. }
  17. /**
  18. * Tests the deconstructor to be sure that every kind of heavy objects are removed.
  19. */
  20. function testDestroy() {
  21. $view = $this->view_test_destroy();
  22. $view->preview();
  23. $view->destroy();
  24. $this->assertViewDestroy($view);
  25. // Manipulate the display variable to test a previous bug.
  26. $view = $this->view_test_destroy();
  27. $view->preview();
  28. $view->destroy();
  29. $this->assertViewDestroy($view);
  30. }
  31. function assertViewDestroy($view) {
  32. $this->assertFalse(isset($view->display['default']->handler), 'Make sure all displays are destroyed.');
  33. $this->assertFalse(isset($view->display['attachment_1']->handler), 'Make sure all displays are destroyed.');
  34. $this->assertFalse(isset($view->filter), 'Make sure all handlers are destroyed');
  35. $this->assertFalse(isset($view->field), 'Make sure all handlers are destroyed');
  36. $this->assertFalse(isset($view->argument), 'Make sure all handlers are destroyed');
  37. $this->assertFalse(isset($view->relationship), 'Make sure all handlers are destroyed');
  38. $this->assertFalse(isset($view->sort), 'Make sure all handlers are destroyed');
  39. $this->assertFalse(isset($view->area), 'Make sure all handlers are destroyed');
  40. $keys = array('current_display', 'display_handler', 'field', 'argument', 'filter', 'sort', 'relationship', 'header', 'footer', 'empty', 'query', 'result', 'inited', 'style_plugin', 'plugin_name', 'exposed_data', 'exposed_input', 'many_to_one_tables');
  41. foreach ($keys as $key) {
  42. $this->assertFalse(isset($view->{$key}), $key);
  43. }
  44. $this->assertEqual($view->built, FALSE);
  45. $this->assertEqual($view->executed, FALSE);
  46. $this->assertEqual($view->build_info, array());
  47. $this->assertEqual($view->attachment_before, '');
  48. $this->assertEqual($view->attachment_after, '');
  49. }
  50. function testDelete() {
  51. // Delete a database view
  52. $view = $this->view_test_delete();
  53. $view->save();
  54. $view = views_get_view($view->name);
  55. $view->delete();
  56. $view = views_get_view($view->name);
  57. $this->assertNotNull($view, 'Make sure that the old view is still in the static cache.');
  58. $view = views_get_view($view->name, TRUE);
  59. $this->assertNull($view, "Make sure that the old view gets cleared by the reset parameter.");
  60. }
  61. function testValidate() {
  62. // Test a view with multiple displays.
  63. // Validating a view shouldn't change the active display.
  64. // @todo: Create an extra validation view.
  65. $view = $this->view_test_destroy();
  66. $view->set_display('page_1');
  67. $view->validate();
  68. $this->assertEqual('page_1', $view->current_display, "The display should be constant while validating");
  69. // @todo: Write real tests for the validation.
  70. // In general the following things could be tested:
  71. // - Deleted displays shouldn't be validated
  72. // - Multiple displays are validating and the errors are merged together.
  73. }
  74. /**
  75. * This view provides some filters, fields, arguments, relationships, sorts, areas and attachments.
  76. */
  77. function view_test_destroy() {
  78. $view = new view;
  79. $view->name = 'test_destroy';
  80. $view->description = '';
  81. $view->tag = '';
  82. $view->base_table = 'node';
  83. $view->human_name = '';
  84. $view->api_version = '3.0-alpha1';
  85. $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
  86. /* Display: Master */
  87. $handler = $view->new_display('default', 'Master', 'default');
  88. $handler->display->display_options['access']['type'] = 'none';
  89. $handler->display->display_options['cache']['type'] = 'none';
  90. $handler->display->display_options['query']['type'] = 'views_query';
  91. $handler->display->display_options['exposed_form']['type'] = 'basic';
  92. $handler->display->display_options['pager']['type'] = 'full';
  93. $handler->display->display_options['style_plugin'] = 'default';
  94. $handler->display->display_options['row_plugin'] = 'fields';
  95. /* Header: Global: Text area */
  96. $handler->display->display_options['header']['area']['id'] = 'area';
  97. $handler->display->display_options['header']['area']['table'] = 'views';
  98. $handler->display->display_options['header']['area']['field'] = 'area';
  99. $handler->display->display_options['header']['area']['empty'] = FALSE;
  100. /* Header: Global: Text area */
  101. $handler->display->display_options['header']['area_1']['id'] = 'area_1';
  102. $handler->display->display_options['header']['area_1']['table'] = 'views';
  103. $handler->display->display_options['header']['area_1']['field'] = 'area';
  104. $handler->display->display_options['header']['area_1']['empty'] = FALSE;
  105. /* Footer: Global: Text area */
  106. $handler->display->display_options['footer']['area']['id'] = 'area';
  107. $handler->display->display_options['footer']['area']['table'] = 'views';
  108. $handler->display->display_options['footer']['area']['field'] = 'area';
  109. $handler->display->display_options['footer']['area']['empty'] = FALSE;
  110. /* Footer: Global: Text area */
  111. $handler->display->display_options['footer']['area_1']['id'] = 'area_1';
  112. $handler->display->display_options['footer']['area_1']['table'] = 'views';
  113. $handler->display->display_options['footer']['area_1']['field'] = 'area';
  114. $handler->display->display_options['footer']['area_1']['empty'] = FALSE;
  115. /* Empty text: Global: Text area */
  116. $handler->display->display_options['empty']['area']['id'] = 'area';
  117. $handler->display->display_options['empty']['area']['table'] = 'views';
  118. $handler->display->display_options['empty']['area']['field'] = 'area';
  119. $handler->display->display_options['empty']['area']['empty'] = FALSE;
  120. /* Empty text: Global: Text area */
  121. $handler->display->display_options['empty']['area_1']['id'] = 'area_1';
  122. $handler->display->display_options['empty']['area_1']['table'] = 'views';
  123. $handler->display->display_options['empty']['area_1']['field'] = 'area';
  124. $handler->display->display_options['empty']['area_1']['empty'] = FALSE;
  125. /* Relationship: Comment: Node */
  126. $handler->display->display_options['relationships']['nid']['id'] = 'nid';
  127. $handler->display->display_options['relationships']['nid']['table'] = 'comments';
  128. $handler->display->display_options['relationships']['nid']['field'] = 'nid';
  129. /* Relationship: Comment: Parent comment */
  130. $handler->display->display_options['relationships']['pid']['id'] = 'pid';
  131. $handler->display->display_options['relationships']['pid']['table'] = 'comments';
  132. $handler->display->display_options['relationships']['pid']['field'] = 'pid';
  133. /* Relationship: Comment: User */
  134. $handler->display->display_options['relationships']['uid']['id'] = 'uid';
  135. $handler->display->display_options['relationships']['uid']['table'] = 'comments';
  136. $handler->display->display_options['relationships']['uid']['field'] = 'uid';
  137. /* Field: Content: Nid */
  138. $handler->display->display_options['fields']['nid']['id'] = 'nid';
  139. $handler->display->display_options['fields']['nid']['table'] = 'node';
  140. $handler->display->display_options['fields']['nid']['field'] = 'nid';
  141. /* Field: Content: Path */
  142. $handler->display->display_options['fields']['path']['id'] = 'path';
  143. $handler->display->display_options['fields']['path']['table'] = 'node';
  144. $handler->display->display_options['fields']['path']['field'] = 'path';
  145. /* Field: Content: Post date */
  146. $handler->display->display_options['fields']['created']['id'] = 'created';
  147. $handler->display->display_options['fields']['created']['table'] = 'node';
  148. $handler->display->display_options['fields']['created']['field'] = 'created';
  149. /* Sort criterion: Content: In moderation */
  150. $handler->display->display_options['sorts']['moderate']['id'] = 'moderate';
  151. $handler->display->display_options['sorts']['moderate']['table'] = 'node';
  152. $handler->display->display_options['sorts']['moderate']['field'] = 'moderate';
  153. /* Sort criterion: Content: Last comment author */
  154. $handler->display->display_options['sorts']['last_comment_name']['id'] = 'last_comment_name';
  155. $handler->display->display_options['sorts']['last_comment_name']['table'] = 'node_comment_statistics';
  156. $handler->display->display_options['sorts']['last_comment_name']['field'] = 'last_comment_name';
  157. /* Sort criterion: Content: Last comment time */
  158. $handler->display->display_options['sorts']['last_comment_timestamp']['id'] = 'last_comment_timestamp';
  159. $handler->display->display_options['sorts']['last_comment_timestamp']['table'] = 'node_comment_statistics';
  160. $handler->display->display_options['sorts']['last_comment_timestamp']['field'] = 'last_comment_timestamp';
  161. /* Argument: Content: Created date */
  162. $handler->display->display_options['arguments']['created_fulldate']['id'] = 'created_fulldate';
  163. $handler->display->display_options['arguments']['created_fulldate']['table'] = 'node';
  164. $handler->display->display_options['arguments']['created_fulldate']['field'] = 'created_fulldate';
  165. $handler->display->display_options['arguments']['created_fulldate']['style_plugin'] = 'default_summary';
  166. $handler->display->display_options['arguments']['created_fulldate']['default_argument_type'] = 'fixed';
  167. /* Argument: Content: Created day */
  168. $handler->display->display_options['arguments']['created_day']['id'] = 'created_day';
  169. $handler->display->display_options['arguments']['created_day']['table'] = 'node';
  170. $handler->display->display_options['arguments']['created_day']['field'] = 'created_day';
  171. $handler->display->display_options['arguments']['created_day']['style_plugin'] = 'default_summary';
  172. $handler->display->display_options['arguments']['created_day']['default_argument_type'] = 'fixed';
  173. /* Argument: Content: Created month */
  174. $handler->display->display_options['arguments']['created_month']['id'] = 'created_month';
  175. $handler->display->display_options['arguments']['created_month']['table'] = 'node';
  176. $handler->display->display_options['arguments']['created_month']['field'] = 'created_month';
  177. $handler->display->display_options['arguments']['created_month']['style_plugin'] = 'default_summary';
  178. $handler->display->display_options['arguments']['created_month']['default_argument_type'] = 'fixed';
  179. /* Filter: Content: Nid */
  180. $handler->display->display_options['filters']['nid']['id'] = 'nid';
  181. $handler->display->display_options['filters']['nid']['table'] = 'node';
  182. $handler->display->display_options['filters']['nid']['field'] = 'nid';
  183. /* Filter: Content: Published */
  184. $handler->display->display_options['filters']['status']['id'] = 'status';
  185. $handler->display->display_options['filters']['status']['table'] = 'node';
  186. $handler->display->display_options['filters']['status']['field'] = 'status';
  187. /* Filter: Content: Title */
  188. $handler->display->display_options['filters']['title']['id'] = 'title';
  189. $handler->display->display_options['filters']['title']['table'] = 'node';
  190. $handler->display->display_options['filters']['title']['field'] = 'title';
  191. /* Display: Page */
  192. $handler = $view->new_display('page', 'Page', 'page_1');
  193. $handler->display->display_options['path'] = 'test_destroy';
  194. /* Display: Attachment */
  195. $handler = $view->new_display('attachment', 'Attachment', 'attachment_1');
  196. $handler->display->display_options['pager']['type'] = 'some';
  197. $handler->display->display_options['displays'] = array(
  198. 'default' => 'default',
  199. 'page_1' => 'page_1',
  200. );
  201. /* Display: Attachment */
  202. $handler = $view->new_display('attachment', 'Attachment', 'attachment_2');
  203. $handler->display->display_options['pager']['type'] = 'some';
  204. $handler->display->display_options['displays'] = array(
  205. 'default' => 'default',
  206. 'page_1' => 'page_1',
  207. );
  208. $translatables['test_destroy'] = array(
  209. t('Master'),
  210. t('more'),
  211. t('Apply'),
  212. t('Reset'),
  213. t('Sort By'),
  214. t('Asc'),
  215. t('Desc'),
  216. t('Items per page'),
  217. t('- All -'),
  218. t('Offset'),
  219. t('Text area'),
  220. t('Content'),
  221. t('Parent comment'),
  222. t('User'),
  223. t('Nid'),
  224. t('Path'),
  225. t('Post date'),
  226. t('All'),
  227. t('Page'),
  228. t('Attachment'),
  229. );
  230. return $view;
  231. }
  232. function view_test_delete() {
  233. $view = new view;
  234. $view->name = 'test_view_delete';
  235. $view->description = '';
  236. $view->tag = '';
  237. $view->base_table = 'node';
  238. $view->human_name = 'test_view_delete';
  239. $view->core = 7;
  240. $view->api_version = '3.0-alpha1';
  241. $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
  242. /* Display: Defaults */
  243. $handler = $view->new_display('default', 'Defaults', 'default');
  244. $handler->display->display_options['access']['type'] = 'none';
  245. $handler->display->display_options['cache']['type'] = 'none';
  246. $handler->display->display_options['query']['type'] = 'views_query';
  247. $handler->display->display_options['exposed_form']['type'] = 'basic';
  248. $handler->display->display_options['pager']['type'] = 'full';
  249. $handler->display->display_options['style_plugin'] = 'default';
  250. $handler->display->display_options['row_plugin'] = 'fields';
  251. $translatables['test_view_delete'] = array(
  252. t('Defaults'),
  253. t('more'),
  254. t('Apply'),
  255. t('Reset'),
  256. t('Sort By'),
  257. t('Asc'),
  258. t('Desc'),
  259. t('Items per page'),
  260. t('- All -'),
  261. t('Offset'),
  262. );
  263. return $view;
  264. }
  265. }