1
1
import "reflect-metadata" ;
2
2
3
- import { IsString , IsBoolean , Min , MaxLength } from "class-validator" ;
3
+ import { IsString , IsBoolean , Min , MaxLength , ValidateNested } from "class-validator" ;
4
4
import { getMetadataArgsStorage , createExpressServer , createKoaServer } from "../../src/index" ;
5
5
import { assertRequest } from "./test-utils" ;
6
6
import { User } from "../fakes/global-options/User" ;
@@ -85,6 +85,17 @@ describe("action parameters", () => {
85
85
const { SetStateMiddleware} = require ( "../fakes/global-options/koa-middlewares/SetStateMiddleware" ) ;
86
86
const { SessionMiddleware} = require ( "../fakes/global-options/SessionMiddleware" ) ;
87
87
88
+ class NestedQueryClass {
89
+ @Min ( 5 )
90
+ num : number ;
91
+
92
+ @IsString ( )
93
+ str : string ;
94
+
95
+ @IsBoolean ( )
96
+ isFive : boolean ;
97
+ }
98
+
88
99
class QueryClass {
89
100
@MaxLength ( 5 )
90
101
sortBy ?: string ;
@@ -97,6 +108,9 @@ describe("action parameters", () => {
97
108
98
109
@IsBoolean ( )
99
110
showAll : boolean = true ;
111
+
112
+ @ValidateNested ( )
113
+ myObject : NestedQueryClass ;
100
114
}
101
115
102
116
@Controller ( )
@@ -498,7 +512,7 @@ describe("action parameters", () => {
498
512
} ) ;
499
513
500
514
// todo: enable koa test when #227 fixed
501
- describe ( "@QueryParams should give a proper values from request query parameters" , ( ) => {
515
+ describe ( "@QueryParams should give a proper values from request's query parameters" , ( ) => {
502
516
assertRequest ( [ 3001 , /*3002*/ ] , "get" , "photos-params?sortBy=name&count=2&limit=10&showAll" , response => {
503
517
expect ( response ) . to . be . status ( 200 ) ;
504
518
expect ( response ) . to . have . header ( "content-type" , "text/html; charset=utf-8" ) ;
@@ -509,6 +523,20 @@ describe("action parameters", () => {
509
523
} ) ;
510
524
} ) ;
511
525
526
+ describe ( "@QueryParams should give a proper values from request's query parameters with nested json" , ( ) => {
527
+ assertRequest ( [ 3001 , /*3002*/ ] , "get" , "photos-params?sortBy=name&count=2&limit=10&showAll&myObject=%7B%22num%22%3A%205,%20%22str%22%3A%20%22five%22,%20%22isFive%22%3A%20true%7D" , response => {
528
+ expect ( response ) . to . be . status ( 200 ) ;
529
+ expect ( response ) . to . have . header ( "content-type" , "text/html; charset=utf-8" ) ;
530
+ expect ( queryParams1 . sortBy ) . to . be . equal ( "name" ) ;
531
+ expect ( queryParams1 . count ) . to . be . equal ( "2" ) ;
532
+ expect ( queryParams1 . limit ) . to . be . equal ( 10 ) ;
533
+ expect ( queryParams1 . showAll ) . to . be . equal ( true ) ;
534
+ expect ( queryParams1 . myObject . num ) . to . be . equal ( 5 ) ;
535
+ expect ( queryParams1 . myObject . str ) . to . be . equal ( "five" ) ;
536
+ expect ( queryParams1 . myObject . isFive ) . to . be . equal ( true ) ;
537
+ } ) ;
538
+ } ) ;
539
+
512
540
describe ( "@QueryParams should not validate request query parameters when it's turned off in validator options" , ( ) => {
513
541
assertRequest ( [ 3001 , 3002 ] , "get" , "photos-params-no-validate?sortBy=verylongtext&count=2&limit=1&showAll=true" , response => {
514
542
expect ( response ) . to . be . status ( 200 ) ;
@@ -521,7 +549,7 @@ describe("action parameters", () => {
521
549
} ) ;
522
550
523
551
// todo: enable koa test when #227 fixed
524
- describe ( "@QueryParams should give a proper values from request query parameters" , ( ) => {
552
+ describe ( "@QueryParams should give a proper values from request's optional query parameters" , ( ) => {
525
553
assertRequest ( [ 3001 , /*3002*/ ] , "get" , "photos-params-optional?sortBy=name&limit=10" , response => {
526
554
expect ( queryParams3 . sortBy ) . to . be . equal ( "name" ) ;
527
555
expect ( queryParams3 . count ) . to . be . equal ( undefined ) ;
0 commit comments