@@ -10484,4 +10484,48 @@ describe('document', function() {
10484
10484
10485
10485
assert . ok ( ! doc . nested . otherProp ) ;
10486
10486
} ) ;
10487
+
10488
+ it ( 'depopulate all should depopulate nested array population (gh-10592)' , function ( ) {
10489
+
10490
+ const Person = db . model ( 'Person' , {
10491
+ name : String
10492
+ } ) ;
10493
+
10494
+ const Band = db . model ( 'Band' , {
10495
+ name : String ,
10496
+ members : [ { type : Schema . Types . ObjectId , ref : 'Person' } ] ,
10497
+ lead : { type : Schema . Types . ObjectId , ref : 'Person' } ,
10498
+ embeddedMembers : [ {
10499
+ active : Boolean ,
10500
+ member : {
10501
+ type : Schema . Types . ObjectId , ref : 'Person'
10502
+ }
10503
+ } ]
10504
+ } ) ;
10505
+
10506
+ return co ( function * ( ) {
10507
+ const people = [ { name : 'Axl Rose' } , { name : 'Slash' } ] ;
10508
+
10509
+ const docs = yield Person . create ( people ) ;
10510
+ let band = {
10511
+ name : 'Guns N\' Roses' ,
10512
+ members : [ docs [ 0 ] . _id , docs [ 1 ] ] ,
10513
+ lead : docs [ 0 ] . _id ,
10514
+ embeddedMembers : [ { active : true , member : docs [ 0 ] . _id } , { active : false , member : docs [ 1 ] . _id } ]
10515
+ } ;
10516
+ band = yield Band . create ( band ) ;
10517
+ yield band . populate ( 'members lead' ) . populate ( 'embeddedMembers.member' ) . execPopulate ( ) ;
10518
+ assert . ok ( band . populated ( 'members' ) ) ;
10519
+ assert . ok ( band . populated ( 'lead' ) ) ;
10520
+ assert . ok ( band . populated ( 'embeddedMembers.member' ) ) ;
10521
+ assert . equal ( band . members [ 0 ] . name , 'Axl Rose' ) ;
10522
+ assert . equal ( band . embeddedMembers [ 0 ] . member . name , 'Axl Rose' ) ;
10523
+ band . depopulate ( ) ;
10524
+
10525
+ assert . ok ( ! band . populated ( 'members' ) ) ;
10526
+ assert . ok ( ! band . populated ( 'lead' ) ) ;
10527
+ assert . ok ( ! band . populated ( 'embeddedMembers.member' ) ) ;
10528
+ assert . ok ( ! band . embeddedMembers [ 0 ] . member . name ) ;
10529
+ } ) ;
10530
+ } ) ;
10487
10531
} ) ;
0 commit comments