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