Skip to content

Commit c408966

Browse files
author
Aleksi Pekkala
committed
Fix inconsistencies in transform options tests
1 parent 778ea0b commit c408966

File tree

5 files changed

+110
-77
lines changed

5 files changed

+110
-77
lines changed
Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,21 @@
11
import "reflect-metadata";
2+
import {Exclude, Expose} from "class-transformer";
3+
import {defaultMetadataStorage} from "class-transformer/storage";
24
import {JsonController} from "../../src/decorator/JsonController";
35
import {Post} from "../../src/decorator/Post";
46
import {Body} from "../../src/decorator/Body";
57
import {createExpressServer, createKoaServer, getMetadataArgsStorage} from "../../src/index";
68
import {assertRequest} from "./test-utils";
79
const 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-
1811
describe("action options", () => {
1912

20-
let initializedUser: User;
13+
let initializedUser: any;
14+
let User: any;
2115

22-
function handler(user: User) {
23-
initializedUser = user;
24-
const ret = new User();
25-
ret.firstName = user.firstName;
26-
ret.lastName = user.lastName || "default";
27-
return ret;
28-
}
16+
after(() => {
17+
defaultMetadataStorage.clear();
18+
});
2919

3020
beforeEach(() => {
3121
initializedUser = undefined;
@@ -36,13 +26,30 @@ describe("action options", () => {
3626
// reset metadata args storage
3727
getMetadataArgsStorage().reset();
3828

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+
3946
@JsonController("", {transformResponse: false})
40-
class DefaultController {
47+
class NoTransformResponseController {
4148
@Post("/default")
42-
default(@Body() user: User) { return handler(user); }
49+
default(@Body() user: UserModel) { return handler(user); }
4350

4451
@Post("/override", {transformRequest: false, transformResponse: true})
45-
transform(@Body() user: User) { return handler(user); }
52+
transform(@Body() user: UserModel) { return handler(user); }
4653
}
4754
});
4855

@@ -52,19 +59,21 @@ describe("action options", () => {
5259
before(done => koaApp = createKoaServer().listen(3002, done));
5360
after(done => koaApp.close(done));
5461

55-
describe("use controller options when action transform options are not set", () => {
62+
it("should use controller options when action transform options are not set", () => {
5663
assertRequest([3001, 3002], "post", "default", { firstName: "Umed", lastName: "Khudoiberdiev" }, response => {
5764
expect(initializedUser).to.be.instanceOf(User);
65+
expect(initializedUser.lastName).to.be.undefined;
5866
expect(response).to.have.status(200);
59-
expect(response.body.lastName).to.be.defined;
67+
expect(response.body.lastName).to.exist;
6068
});
6169
});
6270

63-
describe("override controller options when action transform options are set", () => {
71+
it("should override controller options when action transform options are set", () => {
6472
assertRequest([3001, 3002], "post", "override", { firstName: "Umed", lastName: "Khudoiberdiev" }, response => {
6573
expect(initializedUser).not.to.be.instanceOf(User);
74+
expect(initializedUser.lastName).to.exist;
6675
expect(response).to.have.status(200);
67-
expect(response.body.lastName).to.be.defined;
76+
expect(response.body.lastName).to.be.undefined;
6877
});
6978
});
7079
});

test/functional/class-transformer-options.ts

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,20 @@ describe("class transformer options", () => {
1717
keyword: string;
1818
}
1919

20-
class UserModel {
21-
id: number;
22-
_firstName: string;
23-
_lastName: string;
24-
25-
@Expose()
26-
get name(): string {
27-
return this._firstName + " " + this._lastName;
20+
let UserModel: any;
21+
before(() => {
22+
class User {
23+
id: number;
24+
_firstName: string;
25+
_lastName: string;
26+
27+
@Expose()
28+
get name(): string {
29+
return this._firstName + " " + this._lastName;
30+
}
2831
}
29-
}
32+
UserModel = User;
33+
});
3034

3135
after(() => {
3236
defaultMetadataStorage.clear();
@@ -180,4 +184,4 @@ describe("class transformer options", () => {
180184
});
181185
});
182186

183-
});
187+
});

test/functional/class-validator-options.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,4 +208,4 @@ describe("parameters auto-validation", () => {
208208
});
209209
});
210210

211-
});
211+
});

test/functional/controller-options.spec.ts

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,21 @@
11
import "reflect-metadata";
2+
import {Exclude, Expose} from "class-transformer";
3+
import {defaultMetadataStorage} from "class-transformer/storage";
24
import {JsonController} from "../../src/decorator/JsonController";
35
import {Post} from "../../src/decorator/Post";
46
import {Body} from "../../src/decorator/Body";
57
import {createExpressServer, createKoaServer, getMetadataArgsStorage} from "../../src/index";
68
import {assertRequest} from "./test-utils";
79
const 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-
1811
describe("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

test/functional/global-options.spec.ts

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,21 @@
11
import "reflect-metadata";
2+
import {Exclude, Expose} from "class-transformer";
3+
import {defaultMetadataStorage} from "class-transformer/storage";
24
import {JsonController} from "../../src/decorator/JsonController";
35
import {Post} from "../../src/decorator/Post";
46
import {Body} from "../../src/decorator/Body";
57
import {createExpressServer, createKoaServer, getMetadataArgsStorage} from "../../src/index";
68
import {assertRequest} from "./test-utils";
7-
const chakram = require("chakram");
8-
const expect = chakram.expect;
9-
10-
export class User {
11-
firstName: string;
12-
lastName: string;
13-
14-
toJSON() {
15-
return {firstName: this.firstName}; // lastName is excluded when class-transformer is disabled
16-
}
17-
}
9+
const expect = require("chakram").expect;
1810

1911
describe("routing-controllers global options", () => {
2012

21-
let initializedUser: User;
13+
let initializedUser: any;
14+
let User: any;
15+
16+
after(() => {
17+
defaultMetadataStorage.clear();
18+
});
2219

2320
beforeEach(() => {
2421
initializedUser = undefined;
@@ -29,11 +26,20 @@ describe("routing-controllers global options", () => {
2926
// reset metadata args storage
3027
getMetadataArgsStorage().reset();
3128

29+
@Exclude()
30+
class UserModel {
31+
@Expose()
32+
firstName: string;
33+
34+
lastName: string;
35+
}
36+
User = UserModel;
37+
3238
@JsonController()
3339
class TestUserController {
3440

3541
@Post("/users")
36-
postUsers(@Body() user: User) {
42+
postUsers(@Body() user: UserModel) {
3743
initializedUser = user;
3844
const ret = new User();
3945
ret.firstName = user.firstName;
@@ -42,7 +48,7 @@ describe("routing-controllers global options", () => {
4248
}
4349

4450
@Post(new RegExp("/(prefix|regex)/users"))
45-
postUsersWithRegex(@Body() user: User) {
51+
postUsersWithRegex(@Body() user: UserModel) {
4652
initializedUser = user;
4753
return "";
4854
}
@@ -60,8 +66,9 @@ describe("routing-controllers global options", () => {
6066

6167
assertRequest([3001, 3002], "post", "users", { firstName: "Umed", lastName: "Khudoiberdiev" }, response => {
6268
expect(initializedUser).to.be.instanceOf(User);
69+
expect(initializedUser.lastName).to.be.undefined;
6370
expect(response).to.have.status(200);
64-
expect(response.body.lastName).to.be.defined;
71+
expect(response.body.lastName).to.be.undefined;
6572
});
6673
});
6774

@@ -75,8 +82,9 @@ describe("routing-controllers global options", () => {
7582

7683
assertRequest([3001, 3002], "post", "users", { firstName: "Umed", lastName: "Khudoiberdiev" }, response => {
7784
expect(initializedUser).to.be.instanceOf(User);
85+
expect(initializedUser.lastName).to.be.undefined;
7886
expect(response).to.have.status(200);
79-
expect(response.body.lastName).to.be.defined;
87+
expect(response.body.lastName).to.be.undefined;
8088
});
8189
});
8290

@@ -90,8 +98,9 @@ describe("routing-controllers global options", () => {
9098

9199
assertRequest([3001, 3002], "post", "users", { firstName: "Umed", lastName: "Khudoiberdiev" }, response => {
92100
expect(initializedUser).not.to.be.instanceOf(User);
101+
expect(initializedUser.lastName).to.exist;
93102
expect(response).to.have.status(200);
94-
expect(response.body.lastName).to.be.undefined;
103+
expect(response.body.lastName).to.exist;
95104
});
96105
});
97106

0 commit comments

Comments
 (0)