@@ -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 ;
@@ -172,4 +173,40 @@ describe('AbstractPolymorphicRepository', () => {
172
173
} ) ;
173
174
} ) ;
174
175
} ) ;
176
+
177
+ describe ( 'Parent' , ( ) => {
178
+ describe ( 'findOne' , ( ) => {
179
+ it ( 'Can find parent entity with children' , async ( ) => {
180
+ const repository = AbstractPolymorphicRepository . createRepository (
181
+ connection ,
182
+ UserRepository ,
183
+ ) ;
184
+ const advertRepository = AbstractPolymorphicRepository . createRepository (
185
+ connection ,
186
+ AdvertRepository ,
187
+ ) ;
188
+
189
+ const user = await repository . save ( new UserEntity ( ) ) ;
190
+
191
+ const advert = await advertRepository . save (
192
+ advertRepository . create ( {
193
+ owner : user ,
194
+ } ) ,
195
+ ) ;
196
+
197
+ let result = await repository . findOne ( {
198
+ where : { id : user . id } ,
199
+ } ) ;
200
+
201
+ result = await repository . hydrateOne ( result ) ;
202
+
203
+ expect ( result ) . toBeInstanceOf ( UserEntity ) ;
204
+ expect ( result ?. adverts ) . toHaveLength ( 1 ) ;
205
+ expect ( result ?. adverts [ 0 ] ) . toBeInstanceOf ( AdvertEntity ) ;
206
+ expect ( result ?. adverts [ 0 ] . id ) . toBe ( advert . id ) ;
207
+ expect ( result ?. adverts [ 0 ] . entityType ) . toBe ( UserEntity . name ) ;
208
+ expect ( result ?. adverts [ 0 ] . entityId ) . toBe ( user . id ) ;
209
+ } ) ;
210
+ } ) ;
211
+ } ) ;
175
212
} ) ;
0 commit comments