@@ -164,6 +164,72 @@ describe.onServer('Remote Methods', function() {
164164 done ( ) ;
165165 } ) ;
166166 } ) ;
167+
168+ it ( 'creates related models' , function ( done ) {
169+ User . create ( { first : 'Bob' } , function ( err , res ) {
170+ expect ( res ) . to . have . property ( 'id' ) ;
171+ var aPost = { title : 'A story' , content : 'Once upon a time' } ;
172+ request ( app )
173+ . post ( '/users/' + res . id + '/posts' )
174+ . send ( aPost )
175+ . expect ( 'Content-Type' , / j s o n / )
176+ . expect ( 200 )
177+ . end ( function ( err , result ) {
178+ if ( err ) return done ( err ) ;
179+ expect ( result . body ) . to . have . property ( 'id' ) ;
180+ expect ( result . body ) . to . have . property ( 'title' , aPost . title ) ;
181+ expect ( result . body ) . to . have . property ( 'content' , aPost . content ) ;
182+ done ( ) ;
183+ } ) ;
184+ } ) ;
185+ } ) ;
186+
187+ it ( 'creates array of hasMany models' , function ( done ) {
188+ User . create ( { first : 'Bob' } , function ( err , res ) {
189+ expect ( res ) . to . have . property ( 'id' ) ;
190+ var twoPosts = [
191+ { title : 'One story' , content : 'Content #1' } ,
192+ { title : 'Two story' , content : 'Content #2' } ,
193+ ] ;
194+ request ( app )
195+ . post ( '/users/' + res . id + '/posts' )
196+ . send ( twoPosts )
197+ . expect ( 'Content-Type' , / j s o n / )
198+ . expect ( 200 )
199+ . end ( function ( err , result ) {
200+ if ( err ) return done ( err ) ;
201+ expect ( result . body . length ) . to . eql ( 2 ) ;
202+ expect ( result . body ) . to . have . deep . property ( '[0].title' , 'One story' ) ;
203+ expect ( result . body ) . to . have . deep . property ( '[1].title' , 'Two story' ) ;
204+ done ( ) ;
205+ } ) ;
206+ } ) ;
207+ } ) ;
208+
209+ it ( 'rejects array of obj input for hasOne relation' , function ( done ) {
210+ var Friend = app . registry . createModel ( 'friend' , { name : String } ) ;
211+ app . model ( Friend , { dataSource : 'db' } ) ;
212+ User . hasOne ( Friend ) ;
213+
214+ User . create ( { first : 'Bob' } , function ( err , res ) {
215+ expect ( res ) . to . have . property ( 'id' ) ;
216+ var twoFriends = [
217+ { name : 'bob' } ,
218+ { name : 'rob' } ,
219+ ] ;
220+ request ( app )
221+ . post ( '/users/' + res . id + '/friend' )
222+ . send ( twoFriends )
223+ . expect ( 'Content-Type' , / j s o n / )
224+ . expect ( 400 )
225+ . end ( function ( err , result ) {
226+ if ( err ) return done ( err ) ;
227+ var resError = result . body . error ;
228+ expect ( resError . message ) . to . match ( / v a l u e ( .* ?) n o t ( .* ?) o b j e c t ( \. ? ) / i) ;
229+ done ( ) ;
230+ } ) ;
231+ } ) ;
232+ } ) ;
167233 } ) ;
168234 // destoryAll is not exposed as a remoteMethod by default
169235 describe ( 'Model.destroyAll(callback)' , function ( ) {
0 commit comments