@@ -1664,6 +1664,55 @@ describe('basic functionality', () => {
1664
1664
expect ( transformedUser ) . toEqual ( likeUser ) ;
1665
1665
} ) ;
1666
1666
1667
+ it ( 'should expose inherited method and accessors that have @Expose()' , ( ) => {
1668
+ class User {
1669
+ firstName : string ;
1670
+ lastName : string ;
1671
+
1672
+ @Expose ( )
1673
+ get name ( ) {
1674
+ return this . firstName + ' ' + this . lastName ;
1675
+ }
1676
+
1677
+ @Expose ( )
1678
+ getName ( ) {
1679
+ return this . firstName + ' ' + this . lastName ;
1680
+ }
1681
+ }
1682
+ class Programmer extends User {
1683
+ language : string ;
1684
+ }
1685
+
1686
+ const programmer = new Programmer ( ) ;
1687
+ programmer . firstName = 'Umed' ;
1688
+ programmer . lastName = 'Khudoiberdiev' ;
1689
+ programmer . language = 'en' ;
1690
+
1691
+ const fromPlainProgrammer = {
1692
+ firstName : 'Umed' ,
1693
+ lastName : 'Khudoiberdiev' ,
1694
+ language : 'en' ,
1695
+ } ;
1696
+
1697
+ const plainProgrammer : any = instanceToPlain ( programmer ) ;
1698
+ expect ( plainProgrammer ) . not . toBeInstanceOf ( Programmer ) ;
1699
+ expect ( plainProgrammer ) . toEqual ( {
1700
+ firstName : 'Umed' ,
1701
+ lastName : 'Khudoiberdiev' ,
1702
+ language : 'en' ,
1703
+ name : 'Umed Khudoiberdiev' ,
1704
+ getName : 'Umed Khudoiberdiev' ,
1705
+ } ) ;
1706
+
1707
+ const transformedProgrammer = plainToInstance ( Programmer , fromPlainProgrammer ) ;
1708
+ expect ( transformedProgrammer ) . toBeInstanceOf ( Programmer ) ;
1709
+ const likeProgrammer = new Programmer ( ) ;
1710
+ likeProgrammer . firstName = 'Umed' ;
1711
+ likeProgrammer . lastName = 'Khudoiberdiev' ;
1712
+ likeProgrammer . language = 'en' ;
1713
+ expect ( transformedProgrammer ) . toEqual ( likeProgrammer ) ;
1714
+ } ) ;
1715
+
1667
1716
it ( 'should transform array' , ( ) => {
1668
1717
defaultMetadataStorage . clear ( ) ;
1669
1718
0 commit comments