Skip to content

Commit 1c4e4f8

Browse files
committed
Created tests to check if glob on modelPaths is working
As suggested, I created 2 folders. In the first, all the files are already inside and should work normally. The other one has subfolders and must be matched via glob.
1 parent 3820dd6 commit 1c4e4f8

File tree

7 files changed

+114
-1
lines changed

7 files changed

+114
-1
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import {Table, Model, Column,} from "../../../../index";
2+
3+
@Table
4+
export default class PlayerDir extends Model<PlayerDir> {
5+
@Column
6+
name: string;
7+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import {Table, Model, Column} from "../../../../index";
2+
3+
@Table
4+
export default class ShoeDir extends Model<ShoeDir> {
5+
6+
@Column
7+
brand: string;
8+
9+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import {Table, Model, Column} from "../../../../index";
2+
3+
@Table
4+
export default class TeamDir extends Model<TeamDir> {
5+
6+
@Column
7+
name: string;
8+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import {Table, Model, Column,} from "../../../../../index";
2+
3+
@Table
4+
export default class PlayerGlob extends Model<PlayerGlob> {
5+
@Column
6+
name: string;
7+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import {Table, Model, Column} from "../../../../../index";
2+
3+
@Table
4+
export default class ShoeGlob extends Model<ShoeGlob> {
5+
6+
@Column
7+
brand: string;
8+
9+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import {Table, Model, Column} from "../../../../../index";
2+
3+
@Table
4+
export default class TeamGlob extends Model<TeamGlob> {
5+
6+
@Column
7+
name: string;
8+
}

test/specs/models/sequelize.spec.ts

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ import Gamer from "../../models/exports/gamer.model";
77
import {Sequelize} from "../../../lib/models/Sequelize";
88
import {Model} from '../../../lib/models/Model';
99
import {Table} from '../../../lib/annotations/Table';
10+
import PlayerGlob from "../../models/globs/match-sub-dir-files/players/player.model";
11+
import ShoeGlob from "../../models/globs/match-sub-dir-files/shoes/shoe.model";
12+
import TeamGlob from "../../models/globs/match-sub-dir-files/teams/team.model";
13+
import PlayerDir from "../../models/globs/match-dir-only/PlayerDir";
14+
import TeamDir from "../../models/globs/match-dir-only/TeamDir";
15+
import ShoeDir from "../../models/globs/match-dir-only/ShoeDir";
1016

1117
describe('sequelize', () => {
1218

@@ -104,7 +110,7 @@ describe('sequelize', () => {
104110
.to.have.property('options')
105111
.that.has.property('define')
106112
.that.eqls(DEFINE_OPTIONS)
107-
;
113+
;
108114
});
109115

110116
it('should set define options for models', () => {
@@ -188,4 +194,63 @@ describe('sequelize', () => {
188194
});
189195

190196
});
197+
198+
describe('Add models as glob and dir', () => {
199+
it('should load classes from subfolders matching glob criteria', () => {
200+
const db = '__';
201+
const sequelizeGlob = new Sequelize({
202+
name: db,
203+
dialect: 'sqlite',
204+
username: 'root',
205+
password: '',
206+
storage: ':memory:',
207+
logging: !('SEQ_SILENT' in process.env),
208+
modelPaths: [__dirname + '/../../models/globs/match-sub-dir-files/**/*.model.ts']
209+
});
210+
211+
expect(sequelizeGlob._).to.have.property('PlayerGlob', PlayerGlob);
212+
expect(sequelizeGlob._).to.have.property('TeamGlob', TeamGlob);
213+
expect(sequelizeGlob._).to.have.property('ShoeGlob', ShoeGlob);
214+
215+
});
216+
217+
it('should load classes from folders', () => {
218+
const db = '__';
219+
const sequelizeFolder = new Sequelize({
220+
name: db,
221+
dialect: 'sqlite',
222+
username: 'root',
223+
password: '',
224+
storage: ':memory:',
225+
logging: !('SEQ_SILENT' in process.env),
226+
modelPaths: [__dirname + '/../../models/globs/match-dir-only']
227+
});
228+
229+
expect(sequelizeFolder._).to.have.property('PlayerDir', PlayerDir);
230+
expect(sequelizeFolder._).to.have.property('TeamDir', TeamDir);
231+
expect(sequelizeFolder._).to.have.property('ShoeDir', ShoeDir);
232+
233+
});
234+
235+
it('should load classes from folders and from glob', () => {
236+
const db = '__';
237+
const sequelizeGlobFolder = new Sequelize({
238+
name: db,
239+
dialect: 'sqlite',
240+
username: 'root',
241+
password: '',
242+
storage: ':memory:',
243+
logging: !('SEQ_SILENT' in process.env),
244+
modelPaths: [__dirname + '/../../models/globs/match-dir-only', __dirname + '/../../models/globs/match-sub-dir-files/**/*.model.ts']
245+
});
246+
247+
expect(sequelizeGlobFolder._).to.have.property('PlayerDir', PlayerDir);
248+
expect(sequelizeGlobFolder._).to.have.property('TeamDir', TeamDir);
249+
expect(sequelizeGlobFolder._).to.have.property('ShoeDir', ShoeDir);
250+
expect(sequelizeGlobFolder._).to.have.property('PlayerGlob', PlayerGlob);
251+
expect(sequelizeGlobFolder._).to.have.property('TeamGlob', TeamGlob);
252+
expect(sequelizeGlobFolder._).to.have.property('ShoeGlob', ShoeGlob);
253+
254+
});
255+
});
191256
});

0 commit comments

Comments
 (0)