@@ -100,29 +100,54 @@ describe('model', function() {
100
100
assert . deepEqual ( hydrated . schema . tree , C . schema . tree ) ;
101
101
} ) ;
102
102
it ( 'should deeply hydrate the document with the `hydratedPopulatedDocs` option (gh-4727)' , async function ( ) {
103
- const userSchema = new Schema ( {
104
- name : String
105
- } ) ;
106
- const companySchema = new Schema ( {
103
+ const StorySchema = new Schema ( {
104
+ title : {
105
+ type : String
106
+ }
107
+ } , { timestamps : true } ) ;
108
+
109
+ const UserSchema = new Schema ( {
107
110
name : String ,
108
- users : [ { ref : 'User' , type : Schema . Types . ObjectId } ]
109
- } ) ;
111
+ stories : [ {
112
+ type : Schema . Types . ObjectId ,
113
+ ref : 'Story1'
114
+ } ]
115
+ } , { timestamps : true } ) ;
116
+
117
+ const User = db . model ( 'User1' , UserSchema ) ;
118
+ const Story = db . model ( 'Story1' , StorySchema ) ;
110
119
111
- db . model ( 'UserTestHydrate' , userSchema ) ;
112
- const Company = db . model ( 'CompanyTestHydrate' , companySchema ) ;
120
+ const story1 = await Story . create ( { title : 'Ticket 1' } ) ;
121
+ const story2 = await Story . create ( { title : 'Ticket 2' } ) ;
113
122
114
- const users = [ { _id : new mongoose . Types . ObjectId ( ) , name : 'Val' } ] ;
115
- const company = { _id : new mongoose . Types . ObjectId ( ) , name : 'Booster' , users : [ users [ 0 ] ] } ;
123
+ await User . create ( { name : 'Alex' , stories : [ story1 , story2 ] } ) ;
116
124
117
- const C = Company . hydrate ( company , null , { hydratedPopulatedDocs : true } ) ;
118
- assert ( C . populated ( 'users' ) ) ;
119
- assert . equal ( C . users [ 0 ] . name , 'Val' ) ;
125
+ const populated = await User . findOne ( { name : 'Alex' } ) . populate ( [ 'stories' ] ) . lean ( ) ;
126
+ const hydrated = User . hydrate (
127
+ JSON . parse ( JSON . stringify ( populated ) ) ,
128
+ null ,
129
+ { hydratedPopulatedDocs : true }
130
+ ) ;
131
+
132
+ assert ( hydrated . populated ( 'stories' ) ) ;
133
+
134
+ assert . equal ( hydrated . stories [ 0 ] . _id . toString ( ) , story1 . _id . toString ( ) ) ;
135
+ assert ( typeof hydrated . stories [ 0 ] . _id == 'object' ) ;
136
+ assert ( hydrated . stories [ 0 ] . _id instanceof mongoose . Types . ObjectId ) ;
137
+ assert ( typeof hydrated . stories [ 0 ] . createdAt == 'object' ) ;
138
+ assert ( hydrated . stories [ 0 ] . createdAt instanceof Date ) ;
139
+
140
+ assert . equal ( hydrated . stories [ 1 ] . _id . toString ( ) , story2 . _id . toString ( ) ) ;
141
+ assert ( typeof hydrated . stories [ 1 ] . _id == 'object' ) ;
142
+ assert ( hydrated . stories [ 1 ] . _id instanceof mongoose . Types . ObjectId ) ;
143
+ assert ( typeof hydrated . stories [ 1 ] . createdAt == 'object' ) ;
144
+ assert ( hydrated . stories [ 1 ] . createdAt instanceof Date ) ;
120
145
} ) ;
121
146
it ( 'should hydrate documents in virtual populate (gh-14503)' , async function ( ) {
122
147
const StorySchema = new Schema ( {
123
148
userId : {
124
149
type : Schema . Types . ObjectId ,
125
- ref : 'User '
150
+ ref : 'User2 '
126
151
} ,
127
152
title : {
128
153
type : String
@@ -134,19 +159,19 @@ describe('model', function() {
134
159
} , { timestamps : true } ) ;
135
160
136
161
UserSchema . virtual ( 'stories' , {
137
- ref : 'Story ' ,
162
+ ref : 'Story2 ' ,
138
163
localField : '_id' ,
139
164
foreignField : 'userId'
140
165
} ) ;
141
166
UserSchema . virtual ( 'storiesCount' , {
142
- ref : 'Story ' ,
167
+ ref : 'Story2 ' ,
143
168
localField : '_id' ,
144
169
foreignField : 'userId' ,
145
170
count : true
146
171
} ) ;
147
172
148
- const User = db . model ( 'User ' , UserSchema ) ;
149
- const Story = db . model ( 'Story ' , StorySchema ) ;
173
+ const User = db . model ( 'User2 ' , UserSchema ) ;
174
+ const Story = db . model ( 'Story2 ' , StorySchema ) ;
150
175
151
176
const user = await User . create ( { name : 'Alex' } ) ;
152
177
const story1 = await Story . create ( { title : 'Ticket 1' , userId : user . _id } ) ;
@@ -160,15 +185,15 @@ describe('model', function() {
160
185
) ;
161
186
162
187
assert ( hydrated . populated ( 'stories' ) ) ;
188
+
163
189
assert . equal ( hydrated . stories [ 0 ] . _id . toString ( ) , story1 . _id . toString ( ) ) ;
164
- assert ( typeof hydrated . stories [ 0 ] . _id == 'object' , typeof hydrated . stories [ 0 ] . _id ) ;
190
+ assert ( typeof hydrated . stories [ 0 ] . _id == 'object' ) ;
165
191
assert ( hydrated . stories [ 0 ] . _id instanceof mongoose . Types . ObjectId ) ;
166
192
assert ( typeof hydrated . stories [ 0 ] . createdAt == 'object' ) ;
167
193
assert ( hydrated . stories [ 0 ] . createdAt instanceof Date ) ;
168
194
169
195
assert . equal ( hydrated . stories [ 1 ] . _id . toString ( ) , story2 . _id . toString ( ) ) ;
170
196
assert ( typeof hydrated . stories [ 1 ] . _id == 'object' ) ;
171
-
172
197
assert ( hydrated . stories [ 1 ] . _id instanceof mongoose . Types . ObjectId ) ;
173
198
assert ( typeof hydrated . stories [ 1 ] . createdAt == 'object' ) ;
174
199
assert ( hydrated . stories [ 1 ] . createdAt instanceof Date ) ;
0 commit comments