File tree Expand file tree Collapse file tree 2 files changed +31
-10
lines changed
Expand file tree Collapse file tree 2 files changed +31
-10
lines changed Original file line number Diff line number Diff line change @@ -222,11 +222,15 @@ function Instance(Model, opts) {
222222 finish ( ) ;
223223 } , false ) ;
224224 } else {
225- saveAssociations ( function ( err ) {
226- runAfterSaveActions ( function ( ) {
227- if ( err ) return cb ( err ) ;
225+ saveAssociations ( function ( err , assocSaved ) {
226+ if ( saved || assocSaved ) {
227+ runAfterSaveActions ( function ( ) {
228+ if ( err ) return cb ( err ) ;
229+ finish ( ) ;
230+ } , false , err ) ;
231+ } else {
228232 finish ( ) ;
229- } , false , err ) ;
233+ }
230234 } ) ;
231235 }
232236 }
@@ -261,11 +265,11 @@ function Instance(Model, opts) {
261265 if ( errored ) return ;
262266
263267 errored = true ;
264- return cb ( err ) ;
268+ return cb ( err , true ) ;
265269 }
266270
267271 if ( -- pending === 0 ) {
268- return cb ( ) ;
272+ return cb ( null , true ) ;
269273 }
270274 } ) ;
271275 } ;
@@ -317,7 +321,7 @@ function Instance(Model, opts) {
317321 }
318322
319323 if ( -- pending === 0 ) {
320- return cb ( ) ;
324+ return cb ( null , false ) ;
321325 }
322326 } ;
323327 var saveInstanceExtra = function ( cb ) {
Original file line number Diff line number Diff line change @@ -356,13 +356,30 @@ describe("Hook", function() {
356356 describe ( "afterSave" , function ( ) {
357357 beforeEach ( setup ( ) ) ;
358358
359- it ( "should trigger after saving an instance" , function ( done ) {
360- Person . create ( [ { name : "John Doe" } ] , function ( ) {
359+ it ( "should trigger after creating an instance" , function ( done ) {
360+ Person . create ( { name : "John Doe" } , function ( err , john ) {
361+ should . not . exist ( err ) ;
362+
361363 triggeredHooks . afterSave . should . be . a ( "number" ) ;
362364 triggeredHooks . beforeSave . should . be . a ( "number" ) ;
363365 triggeredHooks . afterSave . should . not . be . below ( triggeredHooks . beforeSave ) ;
366+ done ( ) ;
367+ } ) ;
368+ } ) ;
364369
365- return done ( ) ;
370+ it ( "should trigger after saving an instance" , function ( done ) {
371+ Person . create ( { name : "John Doe" } , function ( err , john ) {
372+ should . not . exist ( err ) ;
373+
374+ john . name = "John Doe 2" ;
375+
376+ triggeredHooks = { } ;
377+ john . save ( function ( err ) {
378+ triggeredHooks . afterSave . should . be . a ( "number" ) ;
379+ triggeredHooks . beforeSave . should . be . a ( "number" ) ;
380+ triggeredHooks . afterSave . should . not . be . below ( triggeredHooks . beforeSave ) ;
381+ done ( ) ;
382+ } ) ;
366383 } ) ;
367384 } ) ;
368385
You can’t perform that action at this time.
0 commit comments