@@ -179,6 +179,31 @@ describe('AbstractPolymorphicRepository', () => {
179179 expect ( result ?. entityId ) . toBeNull ( ) ;
180180 expect ( result ?. entityType ) . toBeNull ( ) ;
181181 } ) ;
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+ } ) ;
182207 } ) ;
183208
184209 describe ( 'find' , ( ) => {
@@ -265,6 +290,38 @@ describe('AbstractPolymorphicRepository', () => {
265290 expect ( result ?. adverts [ 0 ] . entityType ) . toBe ( UserEntity . name ) ;
266291 expect ( result ?. adverts [ 0 ] . entityId ) . toBe ( user . id ) ;
267292 } ) ;
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+ } ) ;
268325 } ) ;
269326 } ) ;
270327} ) ;
0 commit comments