File tree Expand file tree Collapse file tree 2 files changed +46
-1
lines changed Expand file tree Collapse file tree 2 files changed +46
-1
lines changed Original file line number Diff line number Diff line change @@ -25,5 +25,43 @@ describe('Resolver helper `alises` ->', () => {
2525      const  aliases  =  prepareAliases ( User ) ; 
2626      expect ( aliases ) . toEqual ( false ) ; 
2727    } ) ; 
28+ 
29+     it ( 'should extract field aliases from discriminator Models' ,  ( )  =>  { 
30+       const  UserSchema  =  new  mongoose . Schema ( { 
31+         e : { 
32+           type : String , 
33+           alias : 'emailAddress' , 
34+         } , 
35+       } ) ; 
36+       const  User  =  mongoose . model ( 'User111' ,  UserSchema ) ; 
37+       const  VIPUserSchema  =  new  mongoose . Schema ( { 
38+         f : { 
39+           type : Number , 
40+           alias : 'freeDrinks' , 
41+         } , 
42+       } ) ; 
43+       User . discriminator ( 'VIPUser111' ,  VIPUserSchema ) ; 
44+       const  aliases  =  prepareAliases ( User ) ; 
45+       expect ( aliases ) . toEqual ( {  emailAddress : 'e' ,  freeDrinks : 'f'  } ) ; 
46+     } ) ; 
47+ 
48+     it ( 'should extract field aliases in discriminator Models inherited from base Model' ,  ( )  =>  { 
49+       const  UserSchema  =  new  mongoose . Schema ( { 
50+         e : { 
51+           type : String , 
52+           alias : 'emailAddress' , 
53+         } , 
54+       } ) ; 
55+       const  User  =  mongoose . model ( 'User789' ,  UserSchema ) ; 
56+       const  VIPUserSchema  =  new  mongoose . Schema ( { 
57+         f : { 
58+           type : Number , 
59+           alias : 'freeDrinks' , 
60+         } , 
61+       } ) ; 
62+       const  VIPUser  =  User . discriminator ( 'VIPUser789' ,  VIPUserSchema ) ; 
63+       const  aliases  =  prepareAliases ( VIPUser ) ; 
64+       expect ( aliases ) . toEqual ( {  emailAddress : 'e' ,  freeDrinks : 'f'  } ) ; 
65+     } ) ; 
2866  } ) ; 
2967} ) ; 
Original file line number Diff line number Diff line change @@ -5,7 +5,14 @@ export type AliasesMap = {
55} ; 
66
77export  function  prepareAliases ( model : Model < any > ) : AliasesMap  |  false  { 
8-   const  aliases  =  ( model ?. schema  as  any ) ?. aliases ; 
8+   const  aliases  =  ( model ?. schema  as  any ) ?. aliases  ||  { } ; 
9+ 
10+   if  ( model . discriminators )  { 
11+     Object . keys ( model . discriminators ) . forEach ( ( subModelName : string )  =>  { 
12+       const  submodel : Model < any >  =  ( model . discriminators  as  any ) [ subModelName ] ; 
13+       Object . assign ( aliases ,  ( submodel ?. schema  as  any ) ?. aliases ) ; 
14+     } ) ; 
15+   } 
916  if  ( Object . keys ( aliases ) . length  >  0 )  { 
1017    return  aliases ; 
1118  } 
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments