ctools_export.test 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <?php
  2. /**
  3. * Tests for the CTools export system.
  4. */
  5. class CtoolsExportCrudTestCase extends DrupalWebTestCase {
  6. /**
  7. * {@inheritdoc}
  8. */
  9. public static function getInfo() {
  10. return array(
  11. 'name' => 'Export CRUD',
  12. 'description' => 'Test the CRUD functionality for the ctools export system.',
  13. 'group' => 'ctools',
  14. );
  15. }
  16. /**
  17. * {@inheritdoc}
  18. */
  19. public function setUp(array $modules = array()) {
  20. $modules[] = 'ctools';
  21. $modules[] = 'ctools_export_test';
  22. parent::setUp($modules);
  23. }
  24. /**
  25. * Tests CRUD operation: Load.
  26. */
  27. public function testCrudExportLoad() {
  28. $loaded_export = ctools_export_crud_load('ctools_export_test', 'database_test');
  29. $expected_export = new stdClass();
  30. $expected_export->machine = 'database_test';
  31. $expected_export->title = 'Database test';
  32. $expected_export->number = 0;
  33. $expected_export->data = array(
  34. 'test_1' => 'Test 1',
  35. 'test_2' => 'Test 2',
  36. );
  37. $expected_export->table = 'ctools_export_test';
  38. $expected_export->export_type = EXPORT_IN_DATABASE;
  39. $expected_export->type = 'Normal';
  40. $this->assertEqual($expected_export, $loaded_export, 'An exportable object has been loaded correctly from the database.');
  41. }
  42. /**
  43. * Tests CRUD operation: Load multiple.
  44. */
  45. public function testCrudExportLoadMultiple() {
  46. $exportable_names = array('database_test', 'overridden_test', 'default_test');
  47. $loaded_exports = ctools_export_crud_load_multiple('ctools_export_test', $exportable_names);
  48. $this->assertEqual(count($loaded_exports), 3, 'All exportables have been loaded.');
  49. }
  50. /**
  51. * Tests CRUD operation: Load all.
  52. */
  53. public function testCrudExportLoadAll() {
  54. $loaded_exports = ctools_export_crud_load_all('ctools_export_test');
  55. $this->assertEqual(count($loaded_exports), 3, 'All exportables have been loaded.');
  56. }
  57. /**
  58. * Tests CRUD operation: Save.
  59. */
  60. public function testCrudExportSave() {
  61. $default_export = ctools_export_crud_load('ctools_export_test', 'default_test');
  62. $this->assertTrue($default_export->in_code_only, 'The loaded exportable is in code only.');
  63. ctools_export_crud_save('ctools_export_test', $default_export);
  64. // Clear the static cache.
  65. ctools_export_load_object_reset('ctools_export_test');
  66. $overridden_export = ctools_export_crud_load('ctools_export_test', 'default_test');
  67. $this->assertTrue($overridden_export->export_type === 3, 'The loaded exportable is overridden in the database.');
  68. }
  69. /**
  70. * Tests CRUD operation: New.
  71. */
  72. public function testCrudExportNew() {
  73. // Default exportable with defualt values.
  74. $new_export = ctools_export_crud_new('ctools_export_test');
  75. $expected_export = new stdClass();
  76. $expected_export->machine = '';
  77. $expected_export->title = '';
  78. $expected_export->number = 0;
  79. $expected_export->data = NULL;
  80. $expected_export->export_type = NULL;
  81. $expected_export->type = 'Local';
  82. $this->assertEqual($expected_export, $new_export, 'An exportable with default values is created.');
  83. // Default exportable without default values.
  84. $new_export = ctools_export_crud_new('ctools_export_test', FALSE);
  85. $expected_export = new stdClass();
  86. $expected_export->machine = '';
  87. $expected_export->title = '';
  88. $expected_export->number = NULL;
  89. $expected_export->data = NULL;
  90. $this->assertEqual($expected_export, $new_export, 'An exportable without default values has been created.');
  91. }
  92. /**
  93. * Tests CRUD operation: Revert.
  94. */
  95. public function testCrudExportRevert() {
  96. // Load exportable, will come from database.
  97. $original_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
  98. $this->assertTrue($original_export->export_type === 3, 'Loaded export is overridden.');
  99. $machine = $original_export->machine;
  100. ctools_export_crud_delete('ctools_export_test', $original_export);
  101. $result = db_query("SELECT machine FROM {ctools_export_test} WHERE machine = :machine", array(':machine' => $machine))->fetchField();
  102. $this->assertFalse($result, 'The exportable object has been removed from the database.');
  103. // Clear the static cache.
  104. ctools_export_load_object_reset('ctools_export_test');
  105. // Reload the same object.
  106. $default_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
  107. // Check the exportable is now in_code_only.
  108. $this->assertTrue($default_export->in_code_only, 'The loaded exportable is in the database only.');
  109. // Make sure the default object loaded matches the same overridden one in
  110. // the database.
  111. $this->assertEqual($original_export->machine, $default_export->machine, 'The default exportable has been loaded and matches the overridden exportable.');
  112. }
  113. /**
  114. * Tests CRUD operation: Delete.
  115. */
  116. public function testCrudExportDelete() {
  117. // Create a stub entry save it and delete it from the database.
  118. $new_export = ctools_export_crud_new('ctools_export_test');
  119. ctools_export_crud_save('ctools_export_test', $new_export);
  120. $machine = $new_export->machine;
  121. ctools_export_crud_delete('ctools_export_test', $new_export);
  122. $result = ctools_export_crud_load('ctools_export_test', $machine);
  123. $this->assertFalse($result, 'The new exportable has been removed from the database.');
  124. // Load the database only exportable.
  125. $database_export = ctools_export_crud_load('ctools_export_test', 'database_test');
  126. $machine = $database_export->machine;
  127. ctools_export_crud_delete('ctools_export_test', $database_export);
  128. // Clear the exportable caches as it's been loaded above.
  129. ctools_export_load_object_reset('ctools_export_test');
  130. $result = ctools_export_crud_load('ctools_export_test', $machine);
  131. $this->assertFalse($result, 'The database exportable has been removed from the database.');
  132. }
  133. /**
  134. * Tests CRUD operation: Set status.
  135. */
  136. public function testCrudExportSetStatus() {
  137. // Database only object.
  138. $database_export = ctools_export_crud_load('ctools_export_test', 'database_test');
  139. ctools_export_crud_disable('ctools_export_test', $database_export);
  140. ctools_export_load_object_reset('ctools_export_test');
  141. $disabled_export = ctools_export_crud_load('ctools_export_test', 'database_test');
  142. $this->assertTrue($disabled_export->disabled, 'The database only exportable has been disabled.');
  143. ctools_export_crud_enable('ctools_export_test', $disabled_export);
  144. ctools_export_load_object_reset('ctools_export_test');
  145. $enabled_export = ctools_export_crud_load('ctools_export_test', 'database_test');
  146. $this->assertTrue(empty($enabled_export->disabled), 'The database only exportable has been enabled.');
  147. // Overridden object.
  148. $overridden_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
  149. ctools_export_crud_disable('ctools_export_test', $overridden_export);
  150. ctools_export_load_object_reset('ctools_export_test');
  151. $disabled_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
  152. $this->assertTrue($disabled_export->disabled, 'The overridden exportable has been disabled.');
  153. ctools_export_crud_enable('ctools_export_test', $disabled_export);
  154. ctools_export_load_object_reset('ctools_export_test');
  155. $enabled_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
  156. $this->assertTrue(empty($enabled_export->disabled), 'The overridden exportable has been enabled.');
  157. // Default object.
  158. $default_export = ctools_export_crud_load('ctools_export_test', 'default_test');
  159. ctools_export_crud_disable('ctools_export_test', $default_export);
  160. ctools_export_load_object_reset('ctools_export_test');
  161. $disabled_export = ctools_export_crud_load('ctools_export_test', 'default_test');
  162. $this->assertTrue($disabled_export->disabled, 'The default exportable has been disabled.');
  163. ctools_export_crud_enable('ctools_export_test', $disabled_export);
  164. ctools_export_load_object_reset('ctools_export_test');
  165. $enabled_export = ctools_export_crud_load('ctools_export_test', 'default_test');
  166. $this->assertTrue(empty($enabled_export->disabled), 'The default exportable has been enabled.');
  167. }
  168. }