Skip to content

Commit acc14c3

Browse files
committed
Merge pull request #100 from EmberSherpa/through-model-support
Added failing test to show not being able to create a through model directly
2 parents 406fc18 + eac8957 commit acc14c3

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

test/throughModel.test.js

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
var request = require('supertest');
2+
var loopback = require('loopback');
3+
var expect = require('chai').expect;
4+
var JSONAPIComponent = require('../');
5+
var app, User, Interest, Topic;
6+
7+
describe('through Model', function(){
8+
9+
beforeEach(function () {
10+
app = loopback();
11+
app.set('legacyExplorer', false);
12+
ds = loopback.createDataSource('memory');
13+
14+
User = ds.createModel('user', {
15+
id: {type: Number, id: true},
16+
name: String
17+
});
18+
19+
app.model(User);
20+
21+
Topic = ds.createModel('topic', {
22+
id: {type: Number, id: true},
23+
name: String
24+
});
25+
26+
app.model(Topic);
27+
28+
Interest = ds.createModel('interest', {
29+
id: {type: Number, id: true}
30+
});
31+
32+
app.model(Interest);
33+
34+
User.hasMany(Topic, { through: Interest });
35+
Topic.hasMany(User, { through: Interest });
36+
37+
Interest.belongsTo(User);
38+
Interest.belongsTo(Topic);
39+
40+
app.use(loopback.rest());
41+
JSONAPIComponent(app, {restApiRoot: '/'});
42+
});
43+
44+
it('should allow interest to be created', function(done){
45+
46+
User.create({ name: 'User 1' }, function(err, user){
47+
expect(err).to.equal(null);
48+
49+
Topic.create({ name: 'Topic 1'}, function(err, topic){
50+
expect(err).to.equal(null);
51+
52+
request(app)
53+
.post('/interests')
54+
.send({
55+
data: {
56+
type: 'interests',
57+
relationships: {
58+
user: { id: user.id, type: 'users' },
59+
topic: { id: topic.id, type: 'topics' }
60+
}
61+
}
62+
})
63+
.end(function(err, res){
64+
expect(err).to.equal(null);
65+
console.error(res.body.errors);
66+
expect(res).to.not.have.deep.property('body.errors');
67+
expect(res).to.have.deep.property('body.data.id').and.equal("1");
68+
done(err);
69+
});
70+
});
71+
});
72+
73+
});
74+
75+
});

0 commit comments

Comments
 (0)