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