dialects.test.js
4.17 KB
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
var chai = require('chai');
var expect = chai.expect;
var helpers = require('./helpers');
var dialect = helpers.getTestDialect();
var dialects = require('../lib/dialects');
var _ = helpers.Sequelize.Utils._
describe(helpers.getTestDialectTeaser('sequelize-auto dialects'), function() {
describe('getForeignKeysQuery', function () {
it('mysql', function (done) {
var query = dialects.mysql.getForeignKeysQuery('mytable', 'mydatabase');
expect(query).to.include('K.TABLE_NAME = \'mytable\'');
expect(query).to.include('AND K.CONSTRAINT_SCHEMA = \'mydatabase\';');
done();
});
it('sqlite', function (done) {
var query = dialects.sqlite.getForeignKeysQuery('mytable', 'mydatabase');
expect(query).to.include('PRAGMA foreign_key_list(mytable);');
done();
});
it('postgres', function (done) {
var query = dialects.postgres.getForeignKeysQuery('mytable', 'mydatabase');
expect(query).to.include('WHERE o.conrelid = (SELECT oid FROM pg_class WHERE relname = \'mytable\' LIMIT 1)');
done();
});
it('mssql', function (done) {
var query = dialects.mssql.getForeignKeysQuery('mytable', 'mydatabase');
expect(query).to.include('WHERE ccu.table_name = ' + helpers.Sequelize.Utils.addTicks('mytable', "'"));
done();
});
});
describe('isForeignKey', function () {
it('mysql', function (done) {
expect(dialects.mysql.isForeignKey(null)).to.be.false;
expect(dialects.mysql.isForeignKey({some: 'value'})).to.be.false;
expect(dialects.mysql.isForeignKey({extra: 'auto_increment'})).to.be.false;
expect(dialects.mysql.isForeignKey({extra: 'foreign_key'})).to.be.true;
done();
});
it('postgres', function (done) {
expect(dialects.postgres.isForeignKey(null)).to.be.false;
expect(dialects.postgres.isForeignKey({some: 'value'})).to.be.false;
expect(dialects.postgres.isForeignKey({contype: 't'})).to.be.false;
expect(dialects.postgres.isForeignKey({contype: 'f'})).to.be.true;
done();
});
});
describe('isPrimaryKey', function () {
it('mysql', function (done) {
expect(dialects.mysql.isPrimaryKey(null)).to.be.false;
expect(dialects.mysql.isPrimaryKey({some: 'value'})).to.be.false;
expect(dialects.mysql.isPrimaryKey({constraint_name: 'index'})).to.be.false;
expect(dialects.mysql.isPrimaryKey({constraint_name: 'PRIMARY'})).to.be.true;
done();
});
it('sqlite', function (done) {
expect(dialects.sqlite.isPrimaryKey(null)).to.be.false;
expect(dialects.sqlite.isPrimaryKey({some: 'value'})).to.be.false;
expect(dialects.sqlite.isPrimaryKey({primaryKey: false})).to.be.false;
expect(dialects.sqlite.isPrimaryKey({primaryKey: true})).to.be.true;
done();
});
it('postgres', function (done) {
expect(dialects.postgres.isPrimaryKey(null)).to.be.false;
expect(dialects.postgres.isPrimaryKey({some: 'value'})).to.be.false;
expect(dialects.postgres.isPrimaryKey({contype: 'f'})).to.be.false;
expect(dialects.postgres.isPrimaryKey({contype: 'p'})).to.be.true;
done();
});
});
describe('isSerialKey', function () {
it('mysql', function (done) {
expect(dialects.mysql.isSerialKey(null)).to.be.false;
expect(dialects.mysql.isSerialKey({some: 'value'})).to.be.false;
expect(dialects.mysql.isSerialKey({extra: 'primary'})).to.be.false;
expect(dialects.mysql.isSerialKey({extra: 'auto_increment'})).to.be.true;
done();
});
it('postgres', function (done) {
expect(dialects.postgres.isSerialKey(null)).to.be.false;
expect(dialects.postgres.isSerialKey({some: 'value'})).to.be.false;
expect(dialects.postgres.isSerialKey({extra: 'primary'})).to.be.false;
expect(dialects.postgres.isSerialKey({contype: 'i'})).to.be.false;
expect(dialects.postgres.isSerialKey({contype: 'p'})).to.be.false;
expect(dialects.postgres.isSerialKey({contype: 'p', extra: null})).to.be.false;
expect(dialects.postgres.isSerialKey({contype: 'p', extra: 'primary'})).to.be.false;
expect(dialects.postgres.isSerialKey({contype: 'p', extra: 'nextval(table_seq::regclass)'})).to.be.true;
done();
});
});
});