@@ -179,6 +179,31 @@ describe('AbstractPolymorphicRepository', () => {
179
179
expect ( result ?. entityId ) . toBeNull ( ) ;
180
180
expect ( result ?. entityType ) . toBeNull ( ) ;
181
181
} ) ;
182
+
183
+ it ( 'Can find entity with customized entity and id columns' , async ( ) => {
184
+ const repository = AbstractPolymorphicRepository . createRepository (
185
+ connection ,
186
+ AdvertRepository ,
187
+ ) ;
188
+ const userRepository = connection . getRepository ( UserEntity ) ;
189
+
190
+ const user = await userRepository . save ( new UserEntity ( ) ) ;
191
+
192
+ const advert = await repository . save (
193
+ repository . create ( {
194
+ creator : user ,
195
+ } ) ,
196
+ ) ;
197
+
198
+ const result = await repository . findOne ( { where : { id : advert . id } } ) ;
199
+
200
+ expect ( result ) . toBeInstanceOf ( AdvertEntity ) ;
201
+
202
+ expect ( result ?. creator ) . toBeInstanceOf ( UserEntity ) ;
203
+ expect ( result ?. creator . id ) . toBe ( result ?. creatorId ) ;
204
+ expect ( result ?. creatorType ) . toBe ( UserEntity . name ) ;
205
+ expect ( result ?. creatorId ) . toBe ( result ?. creator . id ) ;
206
+ } ) ;
182
207
} ) ;
183
208
184
209
describe ( 'find' , ( ) => {
@@ -265,6 +290,38 @@ describe('AbstractPolymorphicRepository', () => {
265
290
expect ( result ?. adverts [ 0 ] . entityType ) . toBe ( UserEntity . name ) ;
266
291
expect ( result ?. adverts [ 0 ] . entityId ) . toBe ( user . id ) ;
267
292
} ) ;
293
+
294
+ it ( 'Can find parent entity with children with customized entity and id columns' , async ( ) => {
295
+ const repository = AbstractPolymorphicRepository . createRepository (
296
+ connection ,
297
+ UserRepository ,
298
+ ) ;
299
+ const advertRepository = AbstractPolymorphicRepository . createRepository (
300
+ connection ,
301
+ AdvertRepository ,
302
+ ) ;
303
+
304
+ const user = await repository . save ( new UserEntity ( ) ) ;
305
+
306
+ const advert = await advertRepository . save (
307
+ advertRepository . create ( {
308
+ creator : user ,
309
+ } ) ,
310
+ ) ;
311
+
312
+ let result = await repository . findOne ( {
313
+ where : { id : user . id } ,
314
+ } ) ;
315
+
316
+ result = await repository . hydrateOne ( result ) ;
317
+
318
+ expect ( result ) . toBeInstanceOf ( UserEntity ) ;
319
+ expect ( result ?. createdAdverts ) . toHaveLength ( 1 ) ;
320
+ expect ( result ?. createdAdverts [ 0 ] ) . toBeInstanceOf ( AdvertEntity ) ;
321
+ expect ( result ?. createdAdverts [ 0 ] . id ) . toBe ( advert . id ) ;
322
+ expect ( result ?. createdAdverts [ 0 ] . creatorType ) . toBe ( UserEntity . name ) ;
323
+ expect ( result ?. createdAdverts [ 0 ] . creatorId ) . toBe ( user . id ) ;
324
+ } ) ;
268
325
} ) ;
269
326
} ) ;
270
327
} ) ;
0 commit comments