ctools_export.test 8.0 KB

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