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