Skip to content

Commit 4fda519

Browse files
committed
fix(serializer): support reflexive relationships
1 parent ae2dafb commit 4fda519

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

test/reflexiveRelationship.test.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/* global describe, beforeEach, it */
2+
3+
var request = require('supertest')
4+
var loopback = require('loopback')
5+
var expect = require('chai').expect
6+
var JSONAPIComponent = require('../')
7+
var RSVP = require('rsvp')
8+
9+
var app, Folder;
10+
11+
describe('reflexive relationship', function () {
12+
beforeEach(function (done) {
13+
app = loopback()
14+
app.set('legacyExplorer', false)
15+
var ds = loopback.createDataSource('memory')
16+
// create models
17+
Folder = ds.createModel('folder', {
18+
id: { type: Number, id: true },
19+
name: String
20+
})
21+
22+
Folder.hasMany(Folder, { as: 'children', foreignKey: 'parentId' })
23+
Folder.belongsTo(Folder, { as: 'parent', foreignKey: 'parentId' })
24+
// add models
25+
app.model(Folder)
26+
27+
// make data
28+
Folder.create(
29+
[
30+
{ name: 'Folder 1', parentId: 0 },
31+
{ name: 'Folder 2', parentId: 1 },
32+
{ name: 'Folder 3', parentId: 1 },
33+
{ name: 'Folder 4', parentId: 3 }
34+
],
35+
function (err, foders) {
36+
if (err) console.error(err)
37+
done()
38+
}
39+
)
40+
41+
app.use(loopback.rest())
42+
JSONAPIComponent(app, { restApiRoot: '' })
43+
})
44+
45+
46+
it('should make initial data', function (done) {
47+
request(app).get('/folders').end(function (err, res) {
48+
expect(err).to.equal(null)
49+
expect(res.body.data.length).to.equal(4)
50+
done(err)
51+
})
52+
})
53+
54+
it('should have children', function (done) {
55+
request(app).get('/folders/1/children').end(function (err, res) {
56+
expect(err).to.equal(null)
57+
expect(res.body.data.length).to.equal(2)
58+
expect(res.body.data[0].relationships.children.data).to.equal(null)
59+
expect(res.body.data[1].relationships.children.data).to.be.an('array')
60+
done(err)
61+
})
62+
})
63+
})

0 commit comments

Comments
 (0)