Skip to content

Commit 26ed162

Browse files
authored
[9.x] Fix database tests (#44704)
* Fix database tests * Test multiple scenarios
1 parent fa6e2f0 commit 26ed162

File tree

1 file changed

+146
-55
lines changed

1 file changed

+146
-55
lines changed

tests/Database/DatabaseSchemaBlueprintIntegrationTest.php

Lines changed: 146 additions & 55 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->assertContains($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 testChangingCharColumnsWork()
@@ -139,14 +171,23 @@ public function testChangingCharColumnsWork()
139171
$queries = $blueprint->toSql($this->db->connection(), new SQLiteGrammar);
140172

141173
$expected = [
142-
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
143-
'DROP TABLE users',
144-
'CREATE TABLE users (name CHAR(50) NOT NULL COLLATE BINARY)',
145-
'INSERT INTO users (name) SELECT name FROM __temp__users',
146-
'DROP TABLE __temp__users',
174+
[
175+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
176+
'DROP TABLE users',
177+
'CREATE TABLE users (name CHAR(50) NOT NULL COLLATE BINARY)',
178+
'INSERT INTO users (name) SELECT name FROM __temp__users',
179+
'DROP TABLE __temp__users',
180+
],
181+
[
182+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
183+
'DROP TABLE users',
184+
'CREATE TABLE users (name CHAR(50) NOT NULL COLLATE "BINARY")',
185+
'INSERT INTO users (name) SELECT name FROM __temp__users',
186+
'DROP TABLE __temp__users',
187+
],
147188
];
148189

149-
$this->assertEquals($expected, $queries);
190+
$this->assertContains($queries, $expected);
150191
}
151192

152193
public function testChangingDoubleColumnsWork()
@@ -234,15 +275,25 @@ public function testAddUniqueIndexWithoutNameWorks()
234275
$queries = $blueprintMySql->toSql($this->db->connection(), new MySqlGrammar);
235276

236277
$expected = [
237-
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
238-
'DROP TABLE users',
239-
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
240-
'INSERT INTO users (name) SELECT name FROM __temp__users',
241-
'DROP TABLE __temp__users',
242-
'alter table `users` add unique `users_name_unique`(`name`)',
278+
[
279+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
280+
'DROP TABLE users',
281+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
282+
'INSERT INTO users (name) SELECT name FROM __temp__users',
283+
'DROP TABLE __temp__users',
284+
'alter table `users` add unique `users_name_unique`(`name`)',
285+
],
286+
[
287+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
288+
'DROP TABLE users',
289+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE "BINARY")',
290+
'INSERT INTO users (name) SELECT name FROM __temp__users',
291+
'DROP TABLE __temp__users',
292+
'alter table `users` add unique `users_name_unique`(`name`)',
293+
],
243294
];
244295

245-
$this->assertEquals($expected, $queries);
296+
$this->assertContains($queries, $expected);
246297

247298
$blueprintPostgres = new Blueprint('users', function ($table) {
248299
$table->string('name')->nullable()->unique()->change();
@@ -251,15 +302,25 @@ public function testAddUniqueIndexWithoutNameWorks()
251302
$queries = $blueprintPostgres->toSql($this->db->connection(), new PostgresGrammar);
252303

253304
$expected = [
254-
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
255-
'DROP TABLE users',
256-
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
257-
'INSERT INTO users (name) SELECT name FROM __temp__users',
258-
'DROP TABLE __temp__users',
259-
'alter table "users" add constraint "users_name_unique" unique ("name")',
305+
[
306+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
307+
'DROP TABLE users',
308+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
309+
'INSERT INTO users (name) SELECT name FROM __temp__users',
310+
'DROP TABLE __temp__users',
311+
'alter table "users" add constraint "users_name_unique" unique ("name")',
312+
],
313+
[
314+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
315+
'DROP TABLE users',
316+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE "BINARY")',
317+
'INSERT INTO users (name) SELECT name FROM __temp__users',
318+
'DROP TABLE __temp__users',
319+
'alter table "users" add constraint "users_name_unique" unique ("name")',
320+
],
260321
];
261322

262-
$this->assertEquals($expected, $queries);
323+
$this->assertContains($queries, $expected);
263324

264325
$blueprintSQLite = new Blueprint('users', function ($table) {
265326
$table->string('name')->nullable()->unique()->change();
@@ -268,15 +329,25 @@ public function testAddUniqueIndexWithoutNameWorks()
268329
$queries = $blueprintSQLite->toSql($this->db->connection(), new SQLiteGrammar);
269330

270331
$expected = [
271-
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
272-
'DROP TABLE users',
273-
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
274-
'INSERT INTO users (name) SELECT name FROM __temp__users',
275-
'DROP TABLE __temp__users',
276-
'create unique index "users_name_unique" on "users" ("name")',
332+
[
333+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
334+
'DROP TABLE users',
335+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
336+
'INSERT INTO users (name) SELECT name FROM __temp__users',
337+
'DROP TABLE __temp__users',
338+
'create unique index "users_name_unique" on "users" ("name")',
339+
],
340+
[
341+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
342+
'DROP TABLE users',
343+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE "BINARY")',
344+
'INSERT INTO users (name) SELECT name FROM __temp__users',
345+
'DROP TABLE __temp__users',
346+
'create unique index "users_name_unique" on "users" ("name")',
347+
],
277348
];
278349

279-
$this->assertEquals($expected, $queries);
350+
$this->assertContains($queries, $expected);
280351

281352
$blueprintSqlServer = new Blueprint('users', function ($table) {
282353
$table->string('name')->nullable()->unique()->change();
@@ -285,15 +356,25 @@ public function testAddUniqueIndexWithoutNameWorks()
285356
$queries = $blueprintSqlServer->toSql($this->db->connection(), new SqlServerGrammar);
286357

287358
$expected = [
288-
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
289-
'DROP TABLE users',
290-
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
291-
'INSERT INTO users (name) SELECT name FROM __temp__users',
292-
'DROP TABLE __temp__users',
293-
'create unique index "users_name_unique" on "users" ("name")',
359+
[
360+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
361+
'DROP TABLE users',
362+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
363+
'INSERT INTO users (name) SELECT name FROM __temp__users',
364+
'DROP TABLE __temp__users',
365+
'create unique index "users_name_unique" on "users" ("name")',
366+
],
367+
[
368+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
369+
'DROP TABLE users',
370+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE "BINARY")',
371+
'INSERT INTO users (name) SELECT name FROM __temp__users',
372+
'DROP TABLE __temp__users',
373+
'create unique index "users_name_unique" on "users" ("name")',
374+
],
294375
];
295376

296-
$this->assertEquals($expected, $queries);
377+
$this->assertContains($queries, $expected);
297378
}
298379

299380
public function testAddUniqueIndexWithNameWorks()
@@ -309,15 +390,25 @@ public function testAddUniqueIndexWithNameWorks()
309390
$queries = $blueprintMySql->toSql($this->db->connection(), new MySqlGrammar);
310391

311392
$expected = [
312-
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
313-
'DROP TABLE users',
314-
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
315-
'INSERT INTO users (name) SELECT name FROM __temp__users',
316-
'DROP TABLE __temp__users',
317-
'alter table `users` add unique `index1`(`name`)',
393+
[
394+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
395+
'DROP TABLE users',
396+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE BINARY)',
397+
'INSERT INTO users (name) SELECT name FROM __temp__users',
398+
'DROP TABLE __temp__users',
399+
'alter table `users` add unique `index1`(`name`)',
400+
],
401+
[
402+
'CREATE TEMPORARY TABLE __temp__users AS SELECT name FROM users',
403+
'DROP TABLE users',
404+
'CREATE TABLE users (name VARCHAR(255) DEFAULT NULL COLLATE "BINARY")',
405+
'INSERT INTO users (name) SELECT name FROM __temp__users',
406+
'DROP TABLE __temp__users',
407+
'alter table `users` add unique `index1`(`name`)',
408+
],
318409
];
319410

320-
$this->assertEquals($expected, $queries);
411+
$this->assertContains($queries, $expected);
321412

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

0 commit comments

Comments
 (0)