11import "reflect-metadata" ;
2+ import { Exclude , Expose } from "class-transformer" ;
3+ import { defaultMetadataStorage } from "class-transformer/storage" ;
24import { JsonController } from "../../src/decorator/JsonController" ;
35import { Post } from "../../src/decorator/Post" ;
46import { Body } from "../../src/decorator/Body" ;
57import { createExpressServer , createKoaServer , getMetadataArgsStorage } from "../../src/index" ;
68import { assertRequest } from "./test-utils" ;
79const expect = require ( "chakram" ) . expect ;
810
9- export class User {
10- firstName : string ;
11- lastName : string ;
12-
13- toJSON ( ) {
14- return { firstName : this . firstName } ; // lastName is excluded when class-transformer is disabled
15- }
16- }
17-
1811describe ( "controller options" , ( ) => {
1912
20- let initializedUser : User ;
21- function handler ( user : User ) {
22- initializedUser = user ;
23- const ret = new User ( ) ;
24- ret . firstName = user . firstName ;
25- ret . lastName = user . lastName || "default" ;
26- return ret ;
27- }
13+ let initializedUser : any ;
14+ let User : any ;
15+
16+ after ( ( ) => {
17+ defaultMetadataStorage . clear ( ) ;
18+ } ) ;
2819
2920 beforeEach ( ( ) => {
3021 initializedUser = undefined ;
@@ -35,22 +26,39 @@ describe("controller options", () => {
3526 // reset metadata args storage
3627 getMetadataArgsStorage ( ) . reset ( ) ;
3728
29+ @Exclude ( )
30+ class UserModel {
31+ @Expose ( )
32+ firstName : string ;
33+
34+ lastName : string ;
35+ }
36+ User = UserModel ;
37+
38+ function handler ( user : UserModel ) {
39+ initializedUser = user ;
40+ const ret = new User ( ) ;
41+ ret . firstName = user . firstName ;
42+ ret . lastName = user . lastName || "default" ;
43+ return ret ;
44+ }
45+
3846 @JsonController ( "/default" )
3947 class DefaultController {
4048 @Post ( "/" )
41- postUsers ( @Body ( ) user : User ) { return handler ( user ) ; }
49+ postUsers ( @Body ( ) user : UserModel ) { return handler ( user ) ; }
4250 }
4351
4452 @JsonController ( "/transform" , { transformRequest : true , transformResponse : true } )
45- class NoResponseTransformController {
53+ class TransformController {
4654 @Post ( "/" )
47- postUsers ( @Body ( ) user : User ) { return handler ( user ) ; }
55+ postUsers ( @Body ( ) user : UserModel ) { return handler ( user ) ; }
4856 }
4957
5058 @JsonController ( "/noTransform" , { transformRequest : false , transformResponse : false } )
51- class NoRequestTransformController {
59+ class NoTransformController {
5260 @Post ( "/" )
53- postUsers ( @Body ( ) user : User ) { return handler ( user ) ; }
61+ postUsers ( @Body ( ) user : UserModel ) { return handler ( user ) ; }
5462 }
5563
5664 } ) ;
@@ -64,24 +72,27 @@ describe("controller options", () => {
6472 describe ( "controller transform is enabled by default" , ( ) => {
6573 assertRequest ( [ 3001 , 3002 ] , "post" , "default" , { firstName : "Umed" , lastName : "Khudoiberdiev" } , response => {
6674 expect ( initializedUser ) . to . be . instanceOf ( User ) ;
75+ expect ( initializedUser . lastName ) . to . be . undefined ;
6776 expect ( response ) . to . have . status ( 200 ) ;
68- expect ( response . body . lastName ) . to . be . defined ;
77+ expect ( response . body . lastName ) . to . be . undefined ;
6978 } ) ;
7079 } ) ;
7180
7281 describe ( "when controller transform is enabled" , ( ) => {
7382 assertRequest ( [ 3001 , 3002 ] , "post" , "transform" , { firstName : "Umed" , lastName : "Khudoiberdiev" } , response => {
7483 expect ( initializedUser ) . to . be . instanceOf ( User ) ;
84+ expect ( initializedUser . lastName ) . to . be . undefined ;
7585 expect ( response ) . to . have . status ( 200 ) ;
76- expect ( response . body . lastName ) . not . to . be . undefined ;
86+ expect ( response . body . lastName ) . to . be . undefined ;
7787 } ) ;
7888 } ) ;
7989
8090 describe ( "when controller transform is disabled" , ( ) => {
8191 assertRequest ( [ 3001 , 3002 ] , "post" , "noTransform" , { firstName : "Umed" , lastName : "Khudoiberdiev" } , response => {
8292 expect ( initializedUser ) . not . to . be . instanceOf ( User ) ;
93+ expect ( initializedUser . lastName ) . to . exist ;
8394 expect ( response ) . to . have . status ( 200 ) ;
84- expect ( response . body . lastName ) . to . be . defined ;
95+ expect ( response . body . lastName ) . to . exist ;
8596 } ) ;
8697 } ) ;
8798
0 commit comments