Skip to content

Commit 7037994

Browse files
authored
Merge pull request #2782 from strongloop/backport/compat_flag_cleanup
Update tests to use registry for model creation [2.x]
2 parents 4a0835a + e244153 commit 7037994

File tree

9 files changed

+128
-104
lines changed

9 files changed

+128
-104
lines changed

example/colors/app.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ var schema = {
1414
name: String
1515
};
1616

17-
var Color = app.model('color', schema);
18-
19-
app.dataSource('db', {adapter: 'memory'}).attach(Color);
17+
app.dataSource('db', { connector: 'memory' });
18+
var Color = app.registry.createModel('color', schema);
19+
app.model(Color, { dataSource: 'db' });
2020

2121
Color.create({name: 'red'});
2222
Color.create({name: 'green'});

example/replication/app.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55

66
var loopback = require('../../');
77
var app = loopback();
8-
var db = app.dataSource('db', {connector: loopback.Memory});
9-
var Color = app.model('color', {dataSource: 'db', options: {trackChanges: true}});
10-
var Color2 = app.model('color2', {dataSource: 'db', options: {trackChanges: true}});
8+
var db = app.dataSource('db', { connector: 'memory' });
9+
var Color = app.registry.createModel('color', {}, { trackChanges: true });
10+
app.model(Color, { dataSource: 'db' });
11+
var Color2 = app.registry.createModel('color2', {}, { trackChanges: true });
12+
app.model(Color2, { dataSource: 'db' });
1113
var target = Color2;
1214
var source = Color;
1315
var SPEED = process.env.SPEED || 100;

test/acl.test.js

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -363,19 +363,17 @@ describe('security ACLs', function() {
363363
});
364364

365365
describe('access check', function() {
366-
var app;
367-
before(function() {
368-
app = loopback();
369-
app.use(loopback.rest());
370-
app.enableAuth();
371-
app.dataSource('test', {connector: 'memory'});
372-
});
373-
374366
it('should occur before other remote hooks', function(done) {
375-
var MyTestModel = app.model('MyTestModel', {base: 'PersistedModel', dataSource: 'test'});
367+
var app = loopback();
368+
var MyTestModel = app.registry.createModel('MyTestModel');
376369
var checkAccessCalled = false;
377370
var beforeHookCalled = false;
378371

372+
app.use(loopback.rest());
373+
app.enableAuth();
374+
app.dataSource('test', { connector: 'memory' });
375+
app.model(MyTestModel, { dataSource: 'test' });
376+
379377
// fake / spy on the checkAccess method
380378
MyTestModel.checkAccess = function() {
381379
var cb = arguments[arguments.length - 1];

test/app.test.js

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -617,11 +617,11 @@ describe('app', function() {
617617
});
618618

619619
describe('app.model(Model)', function() {
620-
var app;
621-
var db;
620+
var app, db, MyTestModel;
622621
beforeEach(function() {
623622
app = loopback();
624-
db = loopback.createDataSource({connector: loopback.Memory});
623+
db = loopback.createDataSource({ connector: loopback.Memory });
624+
MyTestModel = app.registry.createModel('MyTestModel', {}, {base: 'Model'});
625625
});
626626

627627
it('Expose a `Model` to remote clients', function() {
@@ -632,8 +632,8 @@ describe('app', function() {
632632
expect(app.models()).to.eql([Color]);
633633
});
634634

635-
it('uses singlar name as app.remoteObjects() key', function() {
636-
var Color = PersistedModel.extend('color', {name: String});
635+
it('uses singular name as app.remoteObjects() key', function() {
636+
var Color = PersistedModel.extend('color', { name: String });
637637
app.model(Color);
638638
Color.attachTo(db);
639639
expect(app.remoteObjects()).to.eql({ color: Color });
@@ -695,18 +695,22 @@ describe('app', function() {
695695
});
696696
});
697697

698-
it('accepts null dataSource', function() {
699-
app.model('MyTestModel', { dataSource: null });
698+
it('accepts null dataSource', function(done) {
699+
app.model(MyTestModel, { dataSource: null });
700+
expect(MyTestModel.dataSource).to.eql(null);
701+
done();
700702
});
701703

702-
it('accepts false dataSource', function() {
703-
app.model('MyTestModel', { dataSource: false });
704+
it('accepts false dataSource', function(done) {
705+
app.model(MyTestModel, { dataSource: false });
706+
expect(MyTestModel.getDataSource()).to.eql(null);
707+
done();
704708
});
705709

706-
it('should not require dataSource', function() {
707-
app.model('MyTestModel', {});
710+
it('does not require dataSource', function(done) {
711+
app.model(MyTestModel);
712+
done();
708713
});
709-
710714
});
711715

712716
describe('app.model(name, config)', function() {
@@ -767,7 +771,6 @@ describe('app', function() {
767771
expect(app.models.foo.app).to.equal(app);
768772
expect(app.models.foo.shared).to.equal(true);
769773
});
770-
771774
});
772775

773776
describe('app.model(ModelCtor, config)', function() {
@@ -780,15 +783,17 @@ describe('app', function() {
780783
}
781784

782785
assert(!previousModel || !previousModel.dataSource);
783-
app.model('TestModel', { dataSource: 'db' });
786+
var TestModel = app.registry.createModel('TestModel');
787+
app.model(TestModel, { dataSource: 'db' });
784788
expect(app.models.TestModel.dataSource).to.equal(app.dataSources.db);
785789
});
786790
});
787791

788792
describe('app.models', function() {
789793
it('is unique per app instance', function() {
790794
app.dataSource('db', { connector: 'memory' });
791-
var Color = app.model('Color', { dataSource: 'db' });
795+
var Color = app.registry.createModel('Color');
796+
app.model(Color, { dataSource: 'db' });
792797
expect(app.models.Color).to.equal(Color);
793798
var anotherApp = loopback();
794799
expect(anotherApp.models.Color).to.equal(undefined);

test/change-stream.test.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ describe('PersistedModel.createChangeStream()', function() {
77
describe('configured to source changes locally', function() {
88
before(function() {
99
var test = this;
10-
var app = loopback({localRegistry: true});
11-
var ds = app.dataSource('ds', {connector: 'memory'});
12-
this.Score = app.model('Score', {
10+
var app = loopback({ localRegistry: true });
11+
var ds = app.dataSource('ds', { connector: 'memory' });
12+
var Score = app.registry.createModel('Score');
13+
this.Score = app.model(Score, {
1314
dataSource: 'ds',
1415
changeDataSource: false // use only local observers
1516
});

test/integration.test.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ describe('loopback application', function() {
4141
loopback.ACL.attachTo(db);
4242
loopback.User.hasMany(loopback.AccessToken, { as: 'accessTokens' });
4343

44-
var Streamer = app.model('Streamer', { dataSource: 'db' });
44+
var Streamer = app.registry.createModel('Streamer');
45+
app.model(Streamer, { dataSource: 'db' });
4546
Streamer.read = function(req, res, cb) {
4647
var body = new Buffer(0);
4748
req.on('data', function(chunk) {

test/registries.test.js

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,17 @@ describe('Registry', function() {
1616
var dsFoo = appFoo.dataSource('dsFoo', {connector: 'memory'});
1717
var dsBar = appFoo.dataSource('dsBar', {connector: 'memory'});
1818

19-
var FooModel = appFoo.model(modelName, settings);
20-
var FooSubModel = appFoo.model(subModelName, settings);
21-
var BarModel = appBar.model(modelName, settings);
22-
var BarSubModel = appBar.model(subModelName, settings);
23-
24-
FooModel.attachTo(dsFoo);
25-
FooSubModel.attachTo(dsFoo);
26-
BarModel.attachTo(dsBar);
27-
BarSubModel.attachTo(dsBar);
19+
var FooModel = appFoo.registry.createModel(modelName, {}, settings);
20+
appFoo.model(FooModel, { dataSource: dsFoo });
21+
22+
var FooSubModel = appFoo.registry.createModel(subModelName, {}, settings);
23+
appFoo.model(FooSubModel, { dataSource: dsFoo });
24+
25+
var BarModel = appBar.registry.createModel(modelName, {}, settings);
26+
appBar.model(BarModel, { dataSource: dsBar });
27+
28+
var BarSubModel = appBar.registry.createModel(subModelName, {}, settings);
29+
appBar.model(BarSubModel, { dataSource: dsBar });
2830

2931
FooModel.hasMany(FooSubModel);
3032
BarModel.hasMany(BarSubModel);

test/relations.integration.js

Lines changed: 70 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -41,24 +41,14 @@ describe('relations - integration', function() {
4141
describe('polymorphicHasMany', function() {
4242

4343
before(function defineProductAndCategoryModels() {
44-
var Team = app.model(
45-
'Team',
46-
{ properties: { name: 'string' },
47-
dataSource: 'db'
48-
}
49-
);
50-
var Reader = app.model(
51-
'Reader',
52-
{ properties: { name: 'string' },
53-
dataSource: 'db'
54-
}
55-
);
56-
var Picture = app.model(
57-
'Picture',
58-
{ properties: { name: 'string', imageableId: 'number', imageableType: 'string'},
59-
dataSource: 'db'
60-
}
61-
);
44+
var Team = app.registry.createModel('Team', { name: 'string' });
45+
var Reader = app.registry.createModel('Reader', { name: 'string' });
46+
var Picture = app.registry.createModel('Picture',
47+
{ name: 'string', imageableId: 'number', imageableType: 'string' });
48+
49+
app.model(Team, { dataSource: 'db' });
50+
app.model(Reader, { dataSource: 'db' });
51+
app.model(Picture, { dataSource: 'db' });
6252

6353
Reader.hasMany(Picture, { polymorphic: { // alternative syntax
6454
as: 'imageable', // if not set, default to: reference
@@ -684,15 +674,17 @@ describe('relations - integration', function() {
684674

685675
describe('hasAndBelongsToMany', function() {
686676
beforeEach(function defineProductAndCategoryModels() {
687-
var product = app.model(
688-
'product',
689-
{ properties: { id: 'string', name: 'string' }, dataSource: 'db' }
690-
677+
var product = app.registry.createModel(
678+
'product',
679+
{ id: 'string', name: 'string' }
691680
);
692-
var category = app.model(
681+
var category = app.registry.createModel(
693682
'category',
694-
{ properties: { id: 'string', name: 'string' }, dataSource: 'db' }
683+
{ id: 'string', name: 'string' }
695684
);
685+
app.model(product, { dataSource: 'db' });
686+
app.model(category, { dataSource: 'db' });
687+
696688
product.hasAndBelongsToMany(category);
697689
category.hasAndBelongsToMany(product);
698690
});
@@ -807,17 +799,18 @@ describe('relations - integration', function() {
807799
describe('embedsOne', function() {
808800

809801
before(function defineGroupAndPosterModels() {
810-
var group = app.model(
811-
'group',
812-
{ properties: { name: 'string' },
813-
dataSource: 'db',
814-
plural: 'groups'
815-
}
802+
var group = app.registry.createModel('group',
803+
{ name: 'string' },
804+
{ plural: 'groups' }
816805
);
817-
var poster = app.model(
806+
app.model(group, { dataSource: 'db' });
807+
808+
var poster = app.registry.createModel(
818809
'poster',
819-
{ properties: { url: 'string' }, dataSource: 'db' }
810+
{ url: 'string' }
820811
);
812+
app.model(poster, { dataSource: 'db' });
813+
821814
group.embedsOne(poster, { as: 'cover' });
822815
});
823816

@@ -924,17 +917,18 @@ describe('relations - integration', function() {
924917
describe('embedsMany', function() {
925918

926919
before(function defineProductAndCategoryModels() {
927-
var todoList = app.model(
920+
var todoList = app.registry.createModel(
928921
'todoList',
929-
{ properties: { name: 'string' },
930-
dataSource: 'db',
931-
plural: 'todo-lists'
932-
}
922+
{ name: 'string' },
923+
{ plural: 'todo-lists' }
933924
);
934-
var todoItem = app.model(
925+
app.model(todoList, { dataSource: 'db' });
926+
927+
var todoItem = app.registry.createModel(
935928
'todoItem',
936-
{ properties: { content: 'string' }, dataSource: 'db' }
929+
{ content: 'string' }, { forceId: false }
937930
);
931+
app.model(todoItem, { dataSource: 'db' });
938932
todoList.embedsMany(todoItem, { as: 'items' });
939933
});
940934

@@ -1112,18 +1106,24 @@ describe('relations - integration', function() {
11121106
describe('referencesMany', function() {
11131107

11141108
before(function defineProductAndCategoryModels() {
1115-
var recipe = app.model(
1109+
var recipe = app.registry.createModel(
11161110
'recipe',
1117-
{ properties: { name: 'string' }, dataSource: 'db' }
1111+
{ name: 'string' }
11181112
);
1119-
var ingredient = app.model(
1113+
app.model(recipe, { dataSource: 'db' });
1114+
1115+
var ingredient = app.registry.createModel(
11201116
'ingredient',
1121-
{ properties: { name: 'string' }, dataSource: 'db' }
1117+
{ name: 'string' }
11221118
);
1123-
var photo = app.model(
1119+
app.model(ingredient, { dataSource: 'db' });
1120+
1121+
var photo = app.registry.createModel(
11241122
'photo',
1125-
{ properties: { name: 'string' }, dataSource: 'db' }
1123+
{ name: 'string' }
11261124
);
1125+
app.model(photo, { dataSource: 'db' });
1126+
11271127
recipe.referencesMany(ingredient);
11281128
// contrived example for test:
11291129
recipe.hasOne(photo, { as: 'picture', options: {
@@ -1460,31 +1460,41 @@ describe('relations - integration', function() {
14601460
describe('nested relations', function() {
14611461

14621462
before(function defineModels() {
1463-
var Book = app.model(
1463+
var Book = app.registry.createModel(
14641464
'Book',
1465-
{ properties: { name: 'string' }, dataSource: 'db',
1466-
plural: 'books' }
1465+
{ name: 'string' },
1466+
{ plural: 'books' }
14671467
);
1468-
var Page = app.model(
1468+
app.model(Book, { dataSource: 'db' });
1469+
1470+
var Page = app.registry.createModel(
14691471
'Page',
1470-
{ properties: { name: 'string' }, dataSource: 'db',
1471-
plural: 'pages' }
1472+
{ name: 'string' },
1473+
{ plural: 'pages' }
14721474
);
1473-
var Image = app.model(
1475+
app.model(Page, { dataSource: 'db' });
1476+
1477+
var Image = app.registry.createModel(
14741478
'Image',
1475-
{ properties: { name: 'string' }, dataSource: 'db',
1476-
plural: 'images' }
1479+
{ name: 'string' },
1480+
{ plural: 'images' }
14771481
);
1478-
var Note = app.model(
1482+
app.model(Image, { dataSource: 'db' });
1483+
1484+
var Note = app.registry.createModel(
14791485
'Note',
1480-
{ properties: { text: 'string' }, dataSource: 'db',
1481-
plural: 'notes' }
1486+
{ text: 'string' },
1487+
{ plural: 'notes' }
14821488
);
1483-
var Chapter = app.model(
1489+
app.model(Note, { dataSource: 'db' });
1490+
1491+
var Chapter = app.registry.createModel(
14841492
'Chapter',
1485-
{ properties: { name: 'string' }, dataSource: 'db',
1486-
plural: 'chapters' }
1493+
{ name: 'string' },
1494+
{ plural: 'chapters' }
14871495
);
1496+
app.model(Chapter, { dataSource: 'db' });
1497+
14881498
Book.hasMany(Page);
14891499
Book.hasMany(Chapter);
14901500
Page.hasMany(Note);

0 commit comments

Comments
 (0)