/
change-column.test.js
74 lines (63 loc) · 2.37 KB
/
change-column.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
'use strict';
const Support = require(__dirname + '/../support'),
DataTypes = require('../../../lib/data-types'),
expectsql = Support.expectsql,
sinon = require('sinon'),
current = Support.sequelize,
Promise = current.Promise;
if (current.dialect.name !== 'sqlite') {
describe(Support.getTestDialectTeaser('SQL'), () => {
describe('changeColumn', () => {
const Model = current.define('users', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
level_id: {
type: DataTypes.INTEGER
}
}, { timestamps: false });
before(function() {
this.stub = sinon.stub(current, 'query').callsFake(sql => {
return Promise.resolve(sql);
});
});
beforeEach(function() {
this.stub.resetHistory();
});
after(function() {
this.stub.restore();
});
it('properly generate alter queries', () => {
return current.getQueryInterface().changeColumn(Model.getTableName(), 'level_id', {
type: DataTypes.FLOAT,
allowNull: false
}).then(sql => {
expectsql(sql, {
mssql: 'ALTER TABLE [users] ALTER COLUMN [level_id] FLOAT NOT NULL;',
mysql: 'ALTER TABLE `users` CHANGE `level_id` `level_id` FLOAT NOT NULL;',
postgres: 'ALTER TABLE "users" ALTER COLUMN "level_id" SET NOT NULL;ALTER TABLE "users" ALTER COLUMN "level_id" DROP DEFAULT;ALTER TABLE "users" ALTER COLUMN "level_id" TYPE FLOAT;'
});
});
});
it('properly generate alter queries for foreign keys', () => {
return current.getQueryInterface().changeColumn(Model.getTableName(), 'level_id', {
type: DataTypes.INTEGER,
references: {
model: 'level',
key: 'id'
},
onUpdate: 'cascade',
onDelete: 'cascade'
}).then(sql => {
expectsql(sql, {
mssql: 'ALTER TABLE [users] ADD FOREIGN KEY ([level_id]) REFERENCES [level] ([id]) ON DELETE CASCADE;',
mysql: 'ALTER TABLE `users` ADD FOREIGN KEY (`level_id`) REFERENCES `level` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;',
postgres: 'ALTER TABLE "users" ADD FOREIGN KEY ("level_id") REFERENCES "level" ("id") ON DELETE CASCADE ON UPDATE CASCADE;'
});
});
});
});
});
}