@@ -16,6 +16,11 @@ describe("Model.save()", function() {
1616 } , opts || { } ) ;
1717
1818 Person . hasOne ( "parent" , Person , opts . hasOneOpts ) ;
19+ if ( 'saveAssociationsByDefault' in opts ) {
20+ Person . settings . set (
21+ 'instance.saveAssociationsByDefault' , opts . saveAssociationsByDefault
22+ ) ;
23+ }
1924
2025 return helper . dropSync ( Person , done ) ;
2126 } ;
@@ -206,111 +211,216 @@ describe("Model.save()", function() {
206211
207212 if ( common . protocol ( ) == 'mongodb' ) return ;
208213
209- beforeEach ( function ( done ) {
210- function afterSave ( ) {
211- afterSaveCalled = true ;
212- }
213- var hooks = { afterSave : afterSave } ;
214-
215- setup ( null , { hooks : hooks , cache : false , hasOneOpts : { autoFetch : true } } ) ( function ( err ) {
216- should . not . exist ( err ) ;
214+ describe ( "default on in settings" , function ( ) {
215+ beforeEach ( function ( done ) {
216+ function afterSave ( ) {
217+ afterSaveCalled = true ;
218+ }
219+ var hooks = { afterSave : afterSave } ;
217220
218- Person . create ( { name : 'Olga' } , function ( err , olga ) {
221+ setup ( null , { hooks : hooks , cache : false , hasOneOpts : { autoFetch : true } } ) ( function ( err ) {
219222 should . not . exist ( err ) ;
220223
221- should . exist ( olga ) ;
222- Person . create ( { name : 'Hagar' , parent_id : olga . id } , function ( err , hagar ) {
224+ Person . create ( { name : 'Olga' } , function ( err , olga ) {
223225 should . not . exist ( err ) ;
224- should . exist ( hagar ) ;
225- afterSaveCalled = false ;
226- done ( ) ;
226+
227+ should . exist ( olga ) ;
228+ Person . create ( { name : 'Hagar' , parent_id : olga . id } , function ( err , hagar ) {
229+ should . not . exist ( err ) ;
230+ should . exist ( hagar ) ;
231+ afterSaveCalled = false ;
232+ done ( ) ;
233+ } ) ;
227234 } ) ;
228235 } ) ;
229236 } ) ;
230- } ) ;
231237
232- it ( "off should not save associations but save itself" , function ( done ) {
233- Person . one ( { name : 'Hagar' } , function ( err , hagar ) {
234- should . not . exist ( err ) ;
235- should . exist ( hagar . parent ) ;
238+ it ( "should be on" , function ( ) {
239+ should . equal ( Person . settings . get ( 'instance.saveAssociationsByDefault' ) , true ) ;
240+ } ) ;
236241
237- hagar . parent . name = 'Olga2' ;
238- hagar . save ( { name : 'Hagar2' } , { saveAssociations : false } , function ( err ) {
242+ it ( "off should not save associations but save itself" , function ( done ) {
243+ Person . one ( { name : 'Hagar' } , function ( err , hagar ) {
239244 should . not . exist ( err ) ;
240- should . equal ( afterSaveCalled , true ) ;
245+ should . exist ( hagar . parent ) ;
241246
242- Person . get ( hagar . parent . id , function ( err , olga ) {
247+ hagar . parent . name = 'Olga2' ;
248+ hagar . save ( { name : 'Hagar2' } , { saveAssociations : false } , function ( err ) {
243249 should . not . exist ( err ) ;
244- should . equal ( olga . name , 'Olga' ) ;
245- done ( ) ;
250+ should . equal ( afterSaveCalled , true ) ;
251+
252+ Person . get ( hagar . parent . id , function ( err , olga ) {
253+ should . not . exist ( err ) ;
254+ should . equal ( olga . name , 'Olga' ) ;
255+ done ( ) ;
256+ } ) ;
246257 } ) ;
247258 } ) ;
248259 } ) ;
249- } ) ;
250260
251- it ( "off should not save associations or itself if there are no changes" , function ( done ) {
252- Person . one ( { name : 'Hagar' } , function ( err , hagar ) {
253- should . not . exist ( err ) ;
261+ it ( "off should not save associations or itself if there are no changes" , function ( done ) {
262+ Person . one ( { name : 'Hagar' } , function ( err , hagar ) {
263+ should . not . exist ( err ) ;
264+
265+ hagar . save ( { } , { saveAssociations : false } , function ( err ) {
266+ should . not . exist ( err ) ;
267+ should . equal ( afterSaveCalled , false ) ;
254268
255- hagar . save ( { } , { saveAssociations : false } , function ( err ) {
269+ Person . get ( hagar . parent . id , function ( err , olga ) {
270+ should . not . exist ( err ) ;
271+ should . equal ( olga . name , 'Olga' ) ;
272+ done ( ) ;
273+ } ) ;
274+ } ) ;
275+ } ) ;
276+ } ) ;
277+
278+ it ( "unspecified should save associations and itself" , function ( done ) {
279+ Person . one ( { name : 'Hagar' } , function ( err , hagar ) {
256280 should . not . exist ( err ) ;
257- should . equal ( afterSaveCalled , false ) ;
281+ should . exist ( hagar . parent ) ;
258282
259- Person . get ( hagar . parent . id , function ( err , olga ) {
283+ hagar . parent . name = 'Olga2' ;
284+ hagar . save ( { name : 'Hagar2' } , function ( err ) {
260285 should . not . exist ( err ) ;
261- should . equal ( olga . name , 'Olga' ) ;
262- done ( ) ;
286+
287+ Person . get ( hagar . parent . id , function ( err , olga ) {
288+ should . not . exist ( err ) ;
289+ should . equal ( olga . name , 'Olga2' ) ;
290+
291+ Person . get ( hagar . id , function ( err , person ) {
292+ should . not . exist ( err ) ;
293+ should . equal ( person . name , 'Hagar2' ) ;
294+
295+ done ( ) ;
296+ } ) ;
297+ } ) ;
298+ } ) ;
299+ } ) ;
300+ } ) ;
301+
302+ it ( "on should save associations and itself" , function ( done ) {
303+ Person . one ( { name : 'Hagar' } , function ( err , hagar ) {
304+ should . not . exist ( err ) ;
305+ should . exist ( hagar . parent ) ;
306+
307+ hagar . parent . name = 'Olga2' ;
308+ hagar . save ( { name : 'Hagar2' } , { saveAssociations : true } , function ( err ) {
309+ should . not . exist ( err ) ;
310+
311+ Person . get ( hagar . parent . id , function ( err , olga ) {
312+ should . not . exist ( err ) ;
313+ should . equal ( olga . name , 'Olga2' ) ;
314+
315+ Person . get ( hagar . id , function ( err , person ) {
316+ should . not . exist ( err ) ;
317+ should . equal ( person . name , 'Hagar2' ) ;
318+
319+ done ( ) ;
320+ } ) ;
321+ } ) ;
263322 } ) ;
264323 } ) ;
265324 } ) ;
266325 } ) ;
267326
268- it ( "unspecified should save associations and itself" , function ( done ) {
269- Person . one ( { name : 'Hagar' } , function ( err , hagar ) {
270- should . not . exist ( err ) ;
271- should . exist ( hagar . parent ) ;
327+ describe ( "turned off in settings" , function ( ) {
328+ beforeEach ( function ( done ) {
329+ function afterSave ( ) {
330+ afterSaveCalled = true ;
331+ }
332+ var hooks = { afterSave : afterSave } ;
272333
273- hagar . parent . name = 'Olga2' ;
274- hagar . save ( { name : 'Hagar2' } , function ( err ) {
334+ setup ( null , {
335+ hooks : hooks , cache : false , hasOneOpts : { autoFetch : true } ,
336+ saveAssociationsByDefault : false
337+ } ) ( function ( err ) {
275338 should . not . exist ( err ) ;
276339
277- Person . get ( hagar . parent . id , function ( err , olga ) {
340+ Person . create ( { name : 'Olga' } , function ( err , olga ) {
278341 should . not . exist ( err ) ;
279- should . equal ( olga . name , 'Olga2' ) ;
280342
281- Person . get ( hagar . id , function ( err , person ) {
343+ should . exist ( olga ) ;
344+ Person . create ( { name : 'Hagar' , parent_id : olga . id } , function ( err , hagar ) {
282345 should . not . exist ( err ) ;
283- should . equal ( person . name , 'Hagar2' ) ;
284-
346+ should . exist ( hagar ) ;
347+ afterSaveCalled = false ;
285348 done ( ) ;
286349 } ) ;
287350 } ) ;
288351 } ) ;
289352 } ) ;
290- } ) ;
291353
292- it ( "on should save associations and itself" , function ( done ) {
293- Person . one ( { name : 'Hagar' } , function ( err , hagar ) {
294- should . not . exist ( err ) ;
295- should . exist ( hagar . parent ) ;
354+ it ( "should be off" , function ( ) {
355+ should . equal ( Person . settings . get ( 'instance.saveAssociationsByDefault' ) , false ) ;
356+ } ) ;
296357
297- hagar . parent . name = 'Olga2' ;
298- hagar . save ( { name : 'Hagar2' } , { saveAssociations : true } , function ( err ) {
358+ it ( "unspecified should not save associations but save itself" , function ( done ) {
359+ Person . one ( { name : 'Hagar' } , function ( err , hagar ) {
299360 should . not . exist ( err ) ;
361+ should . exist ( hagar . parent ) ;
300362
301- Person . get ( hagar . parent . id , function ( err , olga ) {
363+ hagar . parent . name = 'Olga2' ;
364+ hagar . save ( { name : 'Hagar2' } , function ( err ) {
302365 should . not . exist ( err ) ;
303- should . equal ( olga . name , 'Olga2' ) ;
304366
305- Person . get ( hagar . id , function ( err , person ) {
367+ Person . get ( hagar . parent . id , function ( err , olga ) {
306368 should . not . exist ( err ) ;
307- should . equal ( person . name , 'Hagar2' ) ;
369+ should . equal ( olga . name , 'Olga' ) ;
370+
371+ Person . get ( hagar . id , function ( err , person ) {
372+ should . not . exist ( err ) ;
373+ should . equal ( person . name , 'Hagar2' ) ;
374+
375+ done ( ) ;
376+ } ) ;
377+ } ) ;
378+ } ) ;
379+ } ) ;
380+ } ) ;
308381
382+ it ( "off should not save associations but save itself" , function ( done ) {
383+ Person . one ( { name : 'Hagar' } , function ( err , hagar ) {
384+ should . not . exist ( err ) ;
385+ should . exist ( hagar . parent ) ;
386+
387+ hagar . parent . name = 'Olga2' ;
388+ hagar . save ( { name : 'Hagar2' } , { saveAssociations : false } , function ( err ) {
389+ should . not . exist ( err ) ;
390+ should . equal ( afterSaveCalled , true ) ;
391+
392+ Person . get ( hagar . parent . id , function ( err , olga ) {
393+ should . not . exist ( err ) ;
394+ should . equal ( olga . name , 'Olga' ) ;
309395 done ( ) ;
310396 } ) ;
311397 } ) ;
312398 } ) ;
313399 } ) ;
400+
401+ it ( "on should save associations and itself" , function ( done ) {
402+ Person . one ( { name : 'Hagar' } , function ( err , hagar ) {
403+ should . not . exist ( err ) ;
404+ should . exist ( hagar . parent ) ;
405+
406+ hagar . parent . name = 'Olga2' ;
407+ hagar . save ( { name : 'Hagar2' } , { saveAssociations : true } , function ( err ) {
408+ should . not . exist ( err ) ;
409+
410+ Person . get ( hagar . parent . id , function ( err , olga ) {
411+ should . not . exist ( err ) ;
412+ should . equal ( olga . name , 'Olga2' ) ;
413+
414+ Person . get ( hagar . id , function ( err , person ) {
415+ should . not . exist ( err ) ;
416+ should . equal ( person . name , 'Hagar2' ) ;
417+
418+ done ( ) ;
419+ } ) ;
420+ } ) ;
421+ } ) ;
422+ } ) ;
423+ } ) ;
314424 } ) ;
315425 } ) ;
316426
0 commit comments