-
Notifications
You must be signed in to change notification settings - Fork 106
/
dumper-sequelize.test.js
109 lines (91 loc) · 4.51 KB
/
dumper-sequelize.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
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
104
105
106
107
108
109
const rimraf = require('rimraf');
const fs = require('fs');
const simpleModel = require('../../../test-expected/sequelize/db-analysis-output/customers.expected.json');
const belongsToModel = require('../../../test-expected/sequelize/db-analysis-output/addresses.expected.json');
const otherAssociationsModel = require('../../../test-expected/sequelize/db-analysis-output/users.expected.json');
const exportModel = require('../../../test-expected/sequelize/db-analysis-output/export.expected.json');
const defaultValuesModel = require('../../../test-expected/sequelize/db-analysis-output/default-values.expected.js');
const Dumper = require('../../../services/dumper');
function getDumper() {
return new Dumper({
appName: 'test-output/sequelize',
dbDialect: 'postgres',
dbConnectionUrl: 'postgres://localhost:27017',
ssl: false,
dbSchema: 'public',
appHostname: 'localhost',
appPort: 1654,
db: true,
});
}
function cleanOutput() {
rimraf.sync('./test-output/sequelize');
}
describe('services > dumper > sequelize', () => {
it('should generate a simple model file', async () => {
expect.assertions(1);
const dumper = await getDumper();
await dumper.dump(simpleModel);
const generatedFile = fs.readFileSync('./test-output/sequelize/models/customers.js', 'utf8');
const expectedFile = fs.readFileSync('./test-expected/sequelize/dumper-output/customers.expected.js', 'utf-8');
expect(generatedFile).toStrictEqual(expectedFile);
cleanOutput();
});
it('should generate a model file with belongsTo associations', async () => {
expect.assertions(1);
const dumper = await getDumper();
await dumper.dump(belongsToModel);
const generatedFile = fs.readFileSync('./test-output/sequelize/models/addresses.js', 'utf8');
const expectedFile = fs.readFileSync('./test-expected/sequelize/dumper-output/addresses.expected.js', 'utf-8');
expect(generatedFile).toStrictEqual(expectedFile);
cleanOutput();
});
it('should generate a model file with hasMany, hasOne and belongsToMany', async () => {
expect.assertions(1);
const dumper = await getDumper();
await dumper.dump(otherAssociationsModel);
const generatedFile = fs.readFileSync('./test-output/sequelize/models/users.js', 'utf8');
const expectedFile = fs.readFileSync('./test-expected/sequelize/dumper-output/users.expected.js', 'utf-8');
expect(generatedFile).toStrictEqual(expectedFile);
cleanOutput();
});
it('should still generate a model file when reserved word is used', async () => {
expect.assertions(2);
const dumper = await getDumper();
await dumper.dump(exportModel);
const generatedModelFile = fs.readFileSync('./test-output/sequelize/models/export.js', 'utf8');
const generatedRouteFile = fs.readFileSync('./test-output/sequelize/routes/export.js', 'utf8');
const expectedModelFile = fs.readFileSync('./test-expected/sequelize/dumper-output/export.expected.js', 'utf-8');
const expectedRouteFile = fs.readFileSync('./test-expected/sequelize/dumper-output/export.expected.route.js', 'utf-8');
expect(generatedModelFile).toStrictEqual(expectedModelFile);
expect(generatedRouteFile).toStrictEqual(expectedRouteFile);
cleanOutput();
});
it('should generate a model with default values', async () => {
expect.assertions(1);
const dumper = await getDumper();
await dumper.dump(defaultValuesModel);
const generatedFile = fs.readFileSync('./test-output/sequelize/models/default-values.js', 'utf8');
const expectedFile = fs.readFileSync('./test-expected/sequelize/dumper-output/default-values.expected.js', 'utf-8');
expect(generatedFile).toStrictEqual(expectedFile);
cleanOutput();
});
it('should generate the model index file', async () => {
expect.assertions(1);
const dumper = await getDumper();
await dumper.dump(simpleModel);
const generatedFile = fs.readFileSync('./test-output/sequelize/models/index.js', 'utf8');
const expectedFile = fs.readFileSync('./test-expected/sequelize/dumper-output/index.expected.js', 'utf-8');
expect(generatedFile).toStrictEqual(expectedFile);
cleanOutput();
});
it('should generate the env file', async () => {
expect.assertions(1);
const dumper = await getDumper();
await dumper.dump(simpleModel);
const generatedFile = fs.readFileSync('./test-output/sequelize/.env', 'utf8');
const expectedFile = fs.readFileSync('./test-expected/sequelize/dumper-output/env.expected', 'utf-8');
expect(generatedFile).toStrictEqual(expectedFile);
cleanOutput();
});
});