@@ -28,4 +28,95 @@ describe('update', function () {
2828 Test . assert . deepEqual ( data , Test . p1 , 'post 5 should have been updated' )
2929 } )
3030 } )
31+ it ( 'should send nested relations' , function ( ) {
32+ var Test = this
33+ var JSData = Test . JSData
34+ var store = new JSData . Container ( )
35+ store . registerAdapter ( 'http' , Test . adapter , { default : true } )
36+ store . defineMapper ( 'user' , {
37+ relations : {
38+ hasMany : {
39+ post : {
40+ localField : 'posts' ,
41+ foreignKey : 'userId'
42+ } ,
43+ address : {
44+ localField : 'addresses' ,
45+ foreignKey : 'userId'
46+ }
47+ }
48+ }
49+ } )
50+ store . defineMapper ( 'post' , {
51+ relations : {
52+ belongsTo : {
53+ user : {
54+ localField : 'user' ,
55+ foreignKey : 'userId'
56+ }
57+ }
58+ }
59+ } )
60+ store . defineMapper ( 'address' , {
61+ relations : {
62+ belongsTo : {
63+ user : {
64+ localField : 'user' ,
65+ foreignKey : 'userId'
66+ }
67+ }
68+ }
69+ } )
70+
71+ setTimeout ( function ( ) {
72+ Test . requests [ 0 ] . respond ( 200 , { 'Content-Type' : 'application/json' } , JSON . stringify ( {
73+ id : 1 ,
74+ posts : [
75+ {
76+ id : 2 ,
77+ userId : 1
78+ }
79+ ]
80+ } ) )
81+ } , 30 )
82+
83+ return store . update ( 'user' , 1 , {
84+ id : 1 ,
85+ posts : [
86+ {
87+ id : 2 ,
88+ userId : 1
89+ }
90+ ] ,
91+ addresses : [
92+ {
93+ id : 3 ,
94+ userId : 1
95+ }
96+ ]
97+ } , { with : [ 'posts' ] } )
98+ . then ( function ( data ) {
99+ Test . assert . equal ( 1 , Test . requests . length )
100+ Test . assert . equal ( Test . requests [ 0 ] . url , 'user/1' )
101+ Test . assert . equal ( Test . requests [ 0 ] . method , 'PUT' )
102+ Test . assert . equal ( Test . requests [ 0 ] . requestBody , JSON . stringify ( {
103+ id : 1 ,
104+ posts : [
105+ {
106+ id : 2 ,
107+ userId : 1
108+ }
109+ ]
110+ } ) )
111+ Test . assert . deepEqual ( data , {
112+ id : 1 ,
113+ posts : [
114+ {
115+ id : 2 ,
116+ userId : 1
117+ }
118+ ]
119+ } )
120+ } )
121+ } )
31122} )
0 commit comments