Skip to content

Commit 18fbc6e

Browse files
committed
fix: linter
1 parent 1d14ebd commit 18fbc6e

File tree

3 files changed

+91
-86
lines changed

3 files changed

+91
-86
lines changed

src/ActionParameterHandler.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export class ActionParameterHandler<T extends BaseDriver> {
1919
// Constructor
2020
// -------------------------------------------------------------------------
2121

22-
constructor(private driver: T) { }
22+
constructor(private driver: T) {}
2323

2424
// -------------------------------------------------------------------------
2525
// Public Methods
@@ -218,18 +218,21 @@ export class ActionParameterHandler<T extends BaseDriver> {
218218
* Perform class-validation if enabled.
219219
*/
220220
protected validateValue(value: any, paramMetadata: ParamMetadata): Promise<any> | any {
221-
const isValidationEnabled = (paramMetadata.validate instanceof Object || paramMetadata.validate === true)
222-
|| (this.driver.enableValidation === true && paramMetadata.validate !== false);
223-
const shouldValidate = paramMetadata.targetType
224-
&& (paramMetadata.targetType !== Object)
225-
&& (value instanceof paramMetadata.targetType);
221+
const isValidationEnabled =
222+
paramMetadata.validate instanceof Object ||
223+
paramMetadata.validate === true ||
224+
(this.driver.enableValidation === true && paramMetadata.validate !== false);
225+
const shouldValidate =
226+
paramMetadata.targetType && paramMetadata.targetType !== Object && value instanceof paramMetadata.targetType;
226227

227228
if (isValidationEnabled && shouldValidate) {
228229
const options = Object.assign({}, this.driver.validationOptions, paramMetadata.validate);
229230
return validate(value, options)
230231
.then(() => value)
231232
.catch((validationErrors: ValidationError[]) => {
232-
const error: any = new BadRequestError(`Invalid ${paramMetadata.type}, check 'errors' property for more info.`);
233+
const error: any = new BadRequestError(
234+
`Invalid ${paramMetadata.type}, check 'errors' property for more info.`
235+
);
233236
error.errors = validationErrors;
234237
error.paramName = paramMetadata.name;
235238
throw error;

src/driver/express/ExpressDriver.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,12 @@ export class ExpressDriver extends BaseDriver {
412412
} else if (use.middleware.prototype && use.middleware.prototype.error) {
413413
// if this is function instance of ErrorMiddlewareInterface
414414
middlewareFunctions.push(function (error: any, request: any, response: any, next: (err: any) => any) {
415-
return getFromContainer<ExpressErrorMiddlewareInterface>(use.middleware).error(error, request, response, next);
415+
return getFromContainer<ExpressErrorMiddlewareInterface>(use.middleware).error(
416+
error,
417+
request,
418+
response,
419+
next
420+
);
416421
});
417422
} else {
418423
middlewareFunctions.push(use.middleware);

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

Lines changed: 75 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,19 @@ import qs from 'qs';
77
import { Get } from '../../src/decorator/Get';
88
import { JsonController } from '../../src/decorator/JsonController';
99
import { QueryParam } from '../../src/decorator/QueryParam';
10-
import { createExpressServer, getMetadataArgsStorage, ResponseClassTransformOptions, RoutingControllersOptions } from '../../src/index';
10+
import {
11+
createExpressServer,
12+
getMetadataArgsStorage,
13+
ResponseClassTransformOptions,
14+
RoutingControllersOptions,
15+
} from '../../src/index';
1116
import { axios } from '../utilities/axios';
1217
import DoneCallback = jest.DoneCallback;
1318

1419
describe(``, () => {
1520
let expressServer: HttpServer;
1621
let requestFilter: UserFilter;
17-
22+
1823
class UserFilter {
1924
@Length(5, 15)
2025
keyword: string;
@@ -64,12 +69,12 @@ describe(``, () => {
6469
expect.assertions(4);
6570
const response = await axios.get(
6671
'/user?' +
67-
qs.stringify({
68-
filter: {
69-
keyword: 'Um',
70-
__somethingPrivate: 'blablabla',
71-
},
72-
})
72+
qs.stringify({
73+
filter: {
74+
keyword: 'Um',
75+
__somethingPrivate: 'blablabla',
76+
},
77+
})
7378
);
7479
expect(response.status).toEqual(HttpStatusCodes.OK);
7580
expect(response.data).toEqual({
@@ -87,138 +92,130 @@ describe(``, () => {
8792
});
8893

8994
describe('global options', () => {
90-
91-
describe("should merge local validation options with global validation options prioritizing local", () => {
92-
93-
beforeEach((done) => {
95+
describe('should merge local validation options with global validation options prioritizing local', () => {
96+
beforeEach(done => {
9497
requestFilter = undefined;
95-
getMetadataArgsStorage().reset();
96-
98+
getMetadataArgsStorage().reset();
99+
97100
@JsonController()
98101
class ClassTransformUserController {
99-
100-
@Get("/user")
101-
getUsers(@QueryParam("filter", { validate: { skipMissingProperties: false } }) filter: UserFilter): any {
102-
requestFilter = filter;
103-
const user = new UserModel();
104-
user.id = 1;
105-
user._firstName = "Umed";
106-
user._lastName = "Khudoiberdiev";
107-
return user;
108-
}
102+
@Get('/user')
103+
getUsers(@QueryParam('filter', { validate: { skipMissingProperties: false } }) filter: UserFilter): any {
104+
requestFilter = filter;
105+
const user = new UserModel();
106+
user.id = 1;
107+
user._firstName = 'Umed';
108+
user._lastName = 'Khudoiberdiev';
109+
return user;
110+
}
109111
}
110112

111113
const options: RoutingControllersOptions = {
112114
validation: {
113115
whitelist: true,
114-
skipMissingProperties: true
115-
}
116+
skipMissingProperties: true,
117+
},
116118
};
117119

118-
expressServer = createExpressServer(options).listen(3001, done)
120+
expressServer = createExpressServer(options).listen(3001, done);
119121
});
120122

121-
122123
afterEach(done => {
123-
expressServer.close(done)
124+
expressServer.close(done);
124125
});
125126

126127
it(`succeed`, async () => {
127128
const response = await axios.get(
128129
'/user?' +
129-
qs.stringify({
130-
filter: {
131-
keyword: 'aValidKeyword',
132-
notKeyword: 'Um',
133-
__somethingPrivate: 'blablabla',
134-
},
135-
})
130+
qs.stringify({
131+
filter: {
132+
keyword: 'aValidKeyword',
133+
notKeyword: 'Um',
134+
__somethingPrivate: 'blablabla',
135+
},
136+
})
136137
);
137138
expect(response.status).toEqual(200);
138139
expect(requestFilter).toEqual({
139-
keyword: "aValidKeyword"
140+
keyword: 'aValidKeyword',
140141
});
141-
})
142+
});
142143
});
143144

144-
describe("should pass the valid param after validation", () => {
145-
beforeEach((done) => {
145+
describe('should pass the valid param after validation', () => {
146+
beforeEach(done => {
146147
requestFilter = undefined;
147148
getMetadataArgsStorage().reset();
148149

149150
@JsonController()
150151
class UserController {
151-
152-
@Get("/user")
153-
getUsers(@QueryParam("filter") filter: UserFilter): any {
152+
@Get('/user')
153+
getUsers(@QueryParam('filter') filter: UserFilter): any {
154154
requestFilter = filter;
155155
const user = new UserModel();
156156
user.id = 1;
157-
user._firstName = "Umed";
158-
user._lastName = "Khudoiberdiev";
157+
user._firstName = 'Umed';
158+
user._lastName = 'Khudoiberdiev';
159159
return user;
160160
}
161161
}
162162

163163
const options: RoutingControllersOptions = {
164-
validation: true
164+
validation: true,
165165
};
166166

167-
expressServer = createExpressServer(options).listen(3001, done)
167+
expressServer = createExpressServer(options).listen(3001, done);
168168
});
169169

170170
afterEach(done => {
171-
expressServer.close(done)
171+
expressServer.close(done);
172172
});
173173

174174
it(`succeed`, async () => {
175175
const response = await axios.get(
176176
'/user?' +
177-
qs.stringify({
178-
filter: {
179-
keyword: 'aValidKeyword',
180-
notKeyword: 'Um',
181-
__somethingPrivate: 'blablabla',
182-
},
183-
})
177+
qs.stringify({
178+
filter: {
179+
keyword: 'aValidKeyword',
180+
notKeyword: 'Um',
181+
__somethingPrivate: 'blablabla',
182+
},
183+
})
184184
);
185185

186186
expect(response.status).toEqual(200);
187187
expect(response.data).toMatchObject({
188188
id: 1,
189-
_firstName: "Umed",
190-
_lastName: "Khudoiberdiev"
189+
_firstName: 'Umed',
190+
_lastName: 'Khudoiberdiev',
191191
});
192192
expect(requestFilter).toBeInstanceOf(UserFilter);
193193
expect(requestFilter).toMatchObject({
194-
keyword: "aValidKeyword",
195-
__somethingPrivate: "blablabla",
194+
keyword: 'aValidKeyword',
195+
__somethingPrivate: 'blablabla',
196196
});
197-
})
197+
});
198198

199199
it('should contain param name on validation failed', async () => {
200200
expect.assertions(2);
201201
try {
202202
await axios.get(
203203
'/user?' +
204-
qs.stringify({
205-
filter: {
206-
keyword: 'Um',
207-
__somethingPrivate: 'blablabla',
208-
},
209-
})
210-
);
211-
}
212-
catch(error) {
204+
qs.stringify({
205+
filter: {
206+
keyword: 'Um',
207+
__somethingPrivate: 'blablabla',
208+
},
209+
})
210+
);
211+
} catch (error) {
213212
expect(error.response.status).toEqual(HttpStatusCodes.BAD_REQUEST);
214213
expect(error.response.data.errors[0].property).toBe(`keyword`);
215214
}
216-
217215
});
218216
}); // ----- end global options
219217
});
220218

221-
222219
describe('local options', () => {
223220
let requestFilter: UserFilter;
224221

@@ -253,12 +250,12 @@ describe(``, () => {
253250
expect.assertions(4);
254251
const response = await axios.get(
255252
'/user?' +
256-
qs.stringify({
257-
filter: {
258-
keyword: 'Um',
259-
__somethingPrivate: 'blablabla',
260-
},
261-
})
253+
qs.stringify({
254+
filter: {
255+
keyword: 'Um',
256+
__somethingPrivate: 'blablabla',
257+
},
258+
})
262259
);
263260
expect(response.status).toEqual(HttpStatusCodes.OK);
264261
expect(response.data).toEqual({
@@ -271,4 +268,4 @@ describe(``, () => {
271268
});
272269
});
273270
}); //----- end local options
274-
});
271+
});

0 commit comments

Comments
 (0)