|
| 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 | + |
| 8 | +var app, Folder |
| 9 | + |
| 10 | +describe('reflexive relationship', function () { |
| 11 | + beforeEach(function (done) { |
| 12 | + app = loopback() |
| 13 | + app.set('legacyExplorer', false) |
| 14 | + var ds = loopback.createDataSource('memory') |
| 15 | + // create models |
| 16 | + Folder = ds.createModel('folder', { |
| 17 | + id: { type: Number, id: true }, |
| 18 | + name: String |
| 19 | + }) |
| 20 | + |
| 21 | + Folder.hasMany(Folder, { as: 'children', foreignKey: 'parentId' }) |
| 22 | + Folder.belongsTo(Folder, { as: 'parent', foreignKey: 'parentId' }) |
| 23 | + // add models |
| 24 | + app.model(Folder) |
| 25 | + |
| 26 | + // make data |
| 27 | + Folder.create( |
| 28 | + [ |
| 29 | + { name: 'Folder 1', parentId: 0 }, |
| 30 | + { name: 'Folder 2', parentId: 1 }, |
| 31 | + { name: 'Folder 3', parentId: 1 }, |
| 32 | + { name: 'Folder 4', parentId: 3 } |
| 33 | + ], |
| 34 | + function (err, foders) { |
| 35 | + if (err) console.error(err) |
| 36 | + done() |
| 37 | + } |
| 38 | + ) |
| 39 | + |
| 40 | + app.use(loopback.rest()) |
| 41 | + JSONAPIComponent(app, { restApiRoot: '' }) |
| 42 | + }) |
| 43 | + |
| 44 | + it('should make initial data', function (done) { |
| 45 | + request(app).get('/folders').end(function (err, res) { |
| 46 | + expect(err).to.equal(null) |
| 47 | + expect(res.body.data.length).to.equal(4) |
| 48 | + done(err) |
| 49 | + }) |
| 50 | + }) |
| 51 | + |
| 52 | + it('should have children', function (done) { |
| 53 | + request(app).get('/folders/1/children').end(function (err, res) { |
| 54 | + expect(err).to.equal(null) |
| 55 | + expect(res.body.data.length).to.equal(2) |
| 56 | + expect(res.body.data[0].relationships.children.data).to.equal(undefined) |
| 57 | + expect(res.body.data[1].relationships.children.data).to.equal(undefined) |
| 58 | + done(err) |
| 59 | + }) |
| 60 | + }) |
| 61 | +}) |
0 commit comments