Skip to content

Commit 36c2292

Browse files
[8.x] Fix database tests (#44831)
(cherry picked from commit 26ed162) Co-authored-by: Dries Vints <dries@vints.io>
1 parent 5ed7945 commit 36c2292

File tree

1 file changed

+131
-49
lines changed

1 file changed

+131
-49
lines changed

tests/Database/DatabaseSchemaBlueprintIntegrationTest.php

Lines changed: 131 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,18 @@ public function testRenamingAndChangingColumnsWork()
8484
'INSERT INTO users (first_name, age) SELECT name, age FROM __temp__users',
8585
'DROP TABLE __temp__users',
8686
],
87+
[
88+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name, age FROM users',
89+
'DROP TABLE users',
90+
'CREATE TABLE users (name VARCHAR(255) NOT NULL COLLATE "BINARY", age INTEGER NOT NULL)',
91+
'INSERT INTO users (name, age) SELECT name, age FROM __temp__users',
92+
'DROP TABLE __temp__users',
93+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name, age FROM users',
94+
'DROP TABLE users',
95+
'CREATE TABLE users (first_name VARCHAR(255) NOT NULL, age VARCHAR(255) NOT NULL COLLATE "BINARY")',
96+
'INSERT INTO users (first_name, age) SELECT name, age FROM __temp__users',
97+
'DROP TABLE __temp__users',
98+
],
8799
];
88100

89101
$this->assertTrue(in_array($queries, $expected));
@@ -104,26 +116,46 @@ public function testChangingColumnWithCollationWorks()
104116
});
105117

106118
$queries = $blueprint->toSql($this->db->connection(), new SQLiteGrammar);
107-
$queries2 = $blueprint2->toSql($this->db->connection(), new SQLiteGrammar);
108119

109120
$expected = [
110-
'CREATE TEMPORARY TABLE __temp__users AS SELECT age FROM users',
111-
'DROP TABLE users',
112-
'CREATE TABLE users (age INTEGER NOT NULL COLLATE RTRIM)',
113-
'INSERT INTO users (age) SELECT age FROM __temp__users',
114-
'DROP TABLE __temp__users',
121+
[
122+
'CREATE TEMPORARY TABLE __temp__users AS SELECT age FROM users',
123+
'DROP TABLE users',
124+
'CREATE TABLE users (age INTEGER NOT NULL COLLATE RTRIM)',
125+
'INSERT INTO users (age) SELECT age FROM __temp__users',
126+
'DROP TABLE __temp__users',
127+
],
128+
[
129+
'CREATE TEMPORARY TABLE __temp__users AS SELECT age FROM users',
130+
'DROP TABLE users',
131+
'CREATE TABLE users (age INTEGER NOT NULL COLLATE "RTRIM")',
132+
'INSERT INTO users (age) SELECT age FROM __temp__users',
133+
'DROP TABLE __temp__users',
134+
],
115135
];
116136

117-
$expected2 = [
118-
'CREATE TEMPORARY TABLE __temp__users AS SELECT age FROM users',
119-
'DROP TABLE users',
120-
'CREATE TABLE users (age INTEGER NOT NULL COLLATE NOCASE)',
121-
'INSERT INTO users (age) SELECT age FROM __temp__users',
122-
'DROP TABLE __temp__users',
137+
$this->assertContains($queries, $expected);
138+
139+
$queries = $blueprint2->toSql($this->db->connection(), new SQLiteGrammar);
140+
141+
$expected = [
142+
[
143+
'CREATE TEMPORARY TABLE __temp__users AS SELECT age FROM users',
144+
'DROP TABLE users',
145+
'CREATE TABLE users (age INTEGER NOT NULL COLLATE NOCASE)',
146+
'INSERT INTO users (age) SELECT age FROM __temp__users',
147+
'DROP TABLE __temp__users',
148+
],
149+
[
150+
'CREATE TEMPORARY TABLE __temp__users AS SELECT age FROM users',
151+
'DROP TABLE users',
152+
'CREATE TABLE users (age INTEGER NOT NULL COLLATE "NOCASE")',
153+
'INSERT INTO users (age) SELECT age FROM __temp__users',
154+
'DROP TABLE __temp__users',
155+
],
123156
];
124157

125-
$this->assertEquals($expected, $queries);
126-
$this->assertEquals($expected2, $queries2);
158+
$this->assertContains($queries, $expected);
127159
}
128160

129161
public function testRenameIndexWorks()
@@ -188,15 +220,25 @@ public function testAddUniqueIndexWithoutNameWorks()
188220
$queries = $blueprintMySql->toSql($this->db->connection(), new MySqlGrammar);
189221

190222
$expected = [
191-
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
192-
'DROP TABLE users',
193-
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
194-
'INSERT INTO users (name) SELECT name FROM __temp__users',
195-
'DROP TABLE __temp__users',
196-
'alter table `users` add unique `users_name_unique`(`name`)',
223+
[
224+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
225+
'DROP TABLE users',
226+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
227+
'INSERT INTO users (name) SELECT name FROM __temp__users',
228+
'DROP TABLE __temp__users',
229+
'alter table `users` add unique `users_name_unique`(`name`)',
230+
],
231+
[
232+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
233+
'DROP TABLE users',
234+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE "BINARY")',
235+
'INSERT INTO users (name) SELECT name FROM __temp__users',
236+
'DROP TABLE __temp__users',
237+
'alter table `users` add unique `users_name_unique`(`name`)',
238+
],
197239
];
198240

199-
$this->assertEquals($expected, $queries);
241+
$this->assertContains($queries, $expected);
200242

201243
$blueprintPostgres = new Blueprint('users', function ($table) {
202244
$table->string('name')->nullable()->unique()->change();
@@ -205,15 +247,25 @@ public function testAddUniqueIndexWithoutNameWorks()
205247
$queries = $blueprintPostgres->toSql($this->db->connection(), new PostgresGrammar);
206248

207249
$expected = [
208-
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
209-
'DROP TABLE users',
210-
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
211-
'INSERT INTO users (name) SELECT name FROM __temp__users',
212-
'DROP TABLE __temp__users',
213-
'alter table "users" add constraint "users_name_unique" unique ("name")',
250+
[
251+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
252+
'DROP TABLE users',
253+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
254+
'INSERT INTO users (name) SELECT name FROM __temp__users',
255+
'DROP TABLE __temp__users',
256+
'alter table "users" add constraint "users_name_unique" unique ("name")',
257+
],
258+
[
259+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
260+
'DROP TABLE users',
261+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE "BINARY")',
262+
'INSERT INTO users (name) SELECT name FROM __temp__users',
263+
'DROP TABLE __temp__users',
264+
'alter table "users" add constraint "users_name_unique" unique ("name")',
265+
],
214266
];
215267

216-
$this->assertEquals($expected, $queries);
268+
$this->assertContains($queries, $expected);
217269

218270
$blueprintSQLite = new Blueprint('users', function ($table) {
219271
$table->string('name')->nullable()->unique()->change();
@@ -222,15 +274,25 @@ public function testAddUniqueIndexWithoutNameWorks()
222274
$queries = $blueprintSQLite->toSql($this->db->connection(), new SQLiteGrammar);
223275

224276
$expected = [
225-
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
226-
'DROP TABLE users',
227-
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
228-
'INSERT INTO users (name) SELECT name FROM __temp__users',
229-
'DROP TABLE __temp__users',
230-
'create unique index "users_name_unique" on "users" ("name")',
277+
[
278+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
279+
'DROP TABLE users',
280+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
281+
'INSERT INTO users (name) SELECT name FROM __temp__users',
282+
'DROP TABLE __temp__users',
283+
'create unique index "users_name_unique" on "users" ("name")',
284+
],
285+
[
286+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
287+
'DROP TABLE users',
288+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE "BINARY")',
289+
'INSERT INTO users (name) SELECT name FROM __temp__users',
290+
'DROP TABLE __temp__users',
291+
'create unique index "users_name_unique" on "users" ("name")',
292+
],
231293
];
232294

233-
$this->assertEquals($expected, $queries);
295+
$this->assertContains($queries, $expected);
234296

235297
$blueprintSqlServer = new Blueprint('users', function ($table) {
236298
$table->string('name')->nullable()->unique()->change();
@@ -239,15 +301,25 @@ public function testAddUniqueIndexWithoutNameWorks()
239301
$queries = $blueprintSqlServer->toSql($this->db->connection(), new SqlServerGrammar);
240302

241303
$expected = [
242-
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
243-
'DROP TABLE users',
244-
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
245-
'INSERT INTO users (name) SELECT name FROM __temp__users',
246-
'DROP TABLE __temp__users',
247-
'create unique index "users_name_unique" on "users" ("name")',
304+
[
305+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
306+
'DROP TABLE users',
307+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
308+
'INSERT INTO users (name) SELECT name FROM __temp__users',
309+
'DROP TABLE __temp__users',
310+
'create unique index "users_name_unique" on "users" ("name")',
311+
],
312+
[
313+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
314+
'DROP TABLE users',
315+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE "BINARY")',
316+
'INSERT INTO users (name) SELECT name FROM __temp__users',
317+
'DROP TABLE __temp__users',
318+
'create unique index "users_name_unique" on "users" ("name")',
319+
],
248320
];
249321

250-
$this->assertEquals($expected, $queries);
322+
$this->assertContains($queries, $expected);
251323
}
252324

253325
public function testAddUniqueIndexWithNameWorks()
@@ -263,15 +335,25 @@ public function testAddUniqueIndexWithNameWorks()
263335
$queries = $blueprintMySql->toSql($this->db->connection(), new MySqlGrammar);
264336

265337
$expected = [
266-
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
267-
'DROP TABLE users',
268-
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
269-
'INSERT INTO users (name) SELECT name FROM __temp__users',
270-
'DROP TABLE __temp__users',
271-
'alter table `users` add unique `index1`(`name`)',
338+
[
339+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
340+
'DROP TABLE users',
341+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
342+
'INSERT INTO users (name) SELECT name FROM __temp__users',
343+
'DROP TABLE __temp__users',
344+
'alter table `users` add unique `index1`(`name`)',
345+
],
346+
[
347+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
348+
'DROP TABLE users',
349+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE "BINARY")',
350+
'INSERT INTO users (name) SELECT name FROM __temp__users',
351+
'DROP TABLE __temp__users',
352+
'alter table `users` add unique `index1`(`name`)',
353+
],
272354
];
273355

274-
$this->assertEquals($expected, $queries);
356+
$this->assertContains($queries, $expected);
275357

276358
$blueprintPostgres = new Blueprint('users', function ($table) {
277359
$table->unsignedInteger('name')->nullable()->unique('index1')->change();

0 commit comments

Comments
 (0)