DatabaseTestBase.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?php
  2. namespace Drupal\KernelTests\Core\Database;
  3. use Drupal\KernelTests\KernelTestBase;
  4. /**
  5. * Base class for databases database tests.
  6. *
  7. * Because all database tests share the same test data, we can centralize that
  8. * here.
  9. */
  10. abstract class DatabaseTestBase extends KernelTestBase {
  11. public static $modules = ['database_test'];
  12. protected function setUp() {
  13. parent::setUp();
  14. $this->installSchema('database_test', [
  15. 'test',
  16. 'test_people',
  17. 'test_people_copy',
  18. 'test_one_blob',
  19. 'test_two_blobs',
  20. 'test_task',
  21. 'test_null',
  22. 'test_serialized',
  23. 'test_special_columns',
  24. 'TEST_UPPERCASE',
  25. ]);
  26. self::addSampleData();
  27. }
  28. /**
  29. * Sets up tables for NULL handling.
  30. */
  31. public function ensureSampleDataNull() {
  32. db_insert('test_null')
  33. ->fields(['name', 'age'])
  34. ->values([
  35. 'name' => 'Kermit',
  36. 'age' => 25,
  37. ])
  38. ->values([
  39. 'name' => 'Fozzie',
  40. 'age' => NULL,
  41. ])
  42. ->values([
  43. 'name' => 'Gonzo',
  44. 'age' => 27,
  45. ])
  46. ->execute();
  47. }
  48. /**
  49. * Sets up our sample data.
  50. */
  51. public static function addSampleData() {
  52. // We need the IDs, so we can't use a multi-insert here.
  53. $john = db_insert('test')
  54. ->fields([
  55. 'name' => 'John',
  56. 'age' => 25,
  57. 'job' => 'Singer',
  58. ])
  59. ->execute();
  60. $george = db_insert('test')
  61. ->fields([
  62. 'name' => 'George',
  63. 'age' => 27,
  64. 'job' => 'Singer',
  65. ])
  66. ->execute();
  67. db_insert('test')
  68. ->fields([
  69. 'name' => 'Ringo',
  70. 'age' => 28,
  71. 'job' => 'Drummer',
  72. ])
  73. ->execute();
  74. $paul = db_insert('test')
  75. ->fields([
  76. 'name' => 'Paul',
  77. 'age' => 26,
  78. 'job' => 'Songwriter',
  79. ])
  80. ->execute();
  81. db_insert('test_people')
  82. ->fields([
  83. 'name' => 'Meredith',
  84. 'age' => 30,
  85. 'job' => 'Speaker',
  86. ])
  87. ->execute();
  88. db_insert('test_task')
  89. ->fields(['pid', 'task', 'priority'])
  90. ->values([
  91. 'pid' => $john,
  92. 'task' => 'eat',
  93. 'priority' => 3,
  94. ])
  95. ->values([
  96. 'pid' => $john,
  97. 'task' => 'sleep',
  98. 'priority' => 4,
  99. ])
  100. ->values([
  101. 'pid' => $john,
  102. 'task' => 'code',
  103. 'priority' => 1,
  104. ])
  105. ->values([
  106. 'pid' => $george,
  107. 'task' => 'sing',
  108. 'priority' => 2,
  109. ])
  110. ->values([
  111. 'pid' => $george,
  112. 'task' => 'sleep',
  113. 'priority' => 2,
  114. ])
  115. ->values([
  116. 'pid' => $paul,
  117. 'task' => 'found new band',
  118. 'priority' => 1,
  119. ])
  120. ->values([
  121. 'pid' => $paul,
  122. 'task' => 'perform at superbowl',
  123. 'priority' => 3,
  124. ])
  125. ->execute();
  126. db_insert('test_special_columns')
  127. ->fields([
  128. 'id' => 1,
  129. 'offset' => 'Offset value 1',
  130. ])
  131. ->execute();
  132. }
  133. }