@@ -6,6 +6,7 @@ import { resolve } from 'path';
6
6
import { AdvertRepository } from './repository/advert.repository' ;
7
7
import { AbstractPolymorphicRepository } from '../' ;
8
8
import { MerchantEntity } from './entities/merchant.entity' ;
9
+ import { UserRepository } from './repository/user.repository' ;
9
10
10
11
describe ( 'AbstractPolymorphicRepository' , ( ) => {
11
12
let connection : DataSource ;
@@ -230,4 +231,40 @@ describe('AbstractPolymorphicRepository', () => {
230
231
} ) ;
231
232
} ) ;
232
233
} ) ;
234
+
235
+ describe ( 'Parent' , ( ) => {
236
+ describe ( 'findOne' , ( ) => {
237
+ it ( 'Can find parent entity with children' , async ( ) => {
238
+ const repository = AbstractPolymorphicRepository . createRepository (
239
+ connection ,
240
+ UserRepository ,
241
+ ) ;
242
+ const advertRepository = AbstractPolymorphicRepository . createRepository (
243
+ connection ,
244
+ AdvertRepository ,
245
+ ) ;
246
+
247
+ const user = await repository . save ( new UserEntity ( ) ) ;
248
+
249
+ const advert = await advertRepository . save (
250
+ advertRepository . create ( {
251
+ owner : user ,
252
+ } ) ,
253
+ ) ;
254
+
255
+ let result = await repository . findOne ( {
256
+ where : { id : user . id } ,
257
+ } ) ;
258
+
259
+ result = await repository . hydrateOne ( result ) ;
260
+
261
+ expect ( result ) . toBeInstanceOf ( UserEntity ) ;
262
+ expect ( result ?. adverts ) . toHaveLength ( 1 ) ;
263
+ expect ( result ?. adverts [ 0 ] ) . toBeInstanceOf ( AdvertEntity ) ;
264
+ expect ( result ?. adverts [ 0 ] . id ) . toBe ( advert . id ) ;
265
+ expect ( result ?. adverts [ 0 ] . entityType ) . toBe ( UserEntity . name ) ;
266
+ expect ( result ?. adverts [ 0 ] . entityId ) . toBe ( user . id ) ;
267
+ } ) ;
268
+ } ) ;
269
+ } ) ;
233
270
} ) ;
0 commit comments