@@ -2,7 +2,6 @@ import "es6-shim";
2
2
import { Contains , IsDefined , MinLength , ValidateNested } from "../../src/decorator/decorators" ;
3
3
import { Validator } from "../../src/validation/Validator" ;
4
4
import { expect } from "chai" ;
5
- import { inspect } from "util" ;
6
5
import { ValidationTypes } from "../../src/validation/ValidationTypes" ;
7
6
8
7
import { should , use } from "chai" ;
@@ -67,6 +66,12 @@ describe("nested validation", function () {
67
66
68
67
@ValidateNested ( )
69
68
mySubClasses : MySubClass [ ] ;
69
+
70
+ @ValidateNested ( )
71
+ mySubSubClasses : MySubClass [ ] [ ] ;
72
+
73
+ @ValidateNested ( )
74
+ mySubSubSubClasses : MySubClass [ ] [ ] [ ] ;
70
75
}
71
76
72
77
const model = new MyClass ( ) ;
@@ -76,8 +81,13 @@ describe("nested validation", function () {
76
81
model . mySubClasses = [ new MySubClass ( ) , new MySubClass ( ) ] ;
77
82
model . mySubClasses [ 0 ] . name = "my" ;
78
83
model . mySubClasses [ 1 ] . name = "not-short" ;
84
+ model . mySubSubClasses = [ [ new MySubClass ( ) ] ] ;
85
+ model . mySubSubClasses [ 0 ] [ 0 ] . name = "sub" ;
86
+ model . mySubSubSubClasses = [ [ [ new MySubClass ( ) ] ] ] ;
87
+ model . mySubSubSubClasses [ 0 ] [ 0 ] [ 0 ] . name = "sub" ;
88
+
79
89
return validator . validate ( model ) . then ( errors => {
80
- errors . length . should . be . equal ( 3 ) ;
90
+ errors . length . should . be . equal ( 5 ) ;
81
91
82
92
errors [ 0 ] . target . should . be . equal ( model ) ;
83
93
errors [ 0 ] . property . should . be . equal ( "title" ) ;
@@ -107,6 +117,47 @@ describe("nested validation", function () {
107
117
subSubError . property . should . be . equal ( "name" ) ;
108
118
subSubError . constraints . should . be . eql ( { minLength : "name must be longer than or equal to 5 characters" } ) ;
109
119
subSubError . value . should . be . equal ( "my" ) ;
120
+
121
+ errors [ 3 ] . target . should . be . equal ( model ) ;
122
+ errors [ 3 ] . property . should . be . equal ( "mySubSubClasses" ) ;
123
+ errors [ 3 ] . value . should . be . equal ( model . mySubSubClasses ) ;
124
+ expect ( errors [ 3 ] . constraints ) . to . be . undefined ;
125
+ const subError3 = errors [ 3 ] . children [ 0 ] ;
126
+ subError3 . target . should . be . equal ( model . mySubSubClasses ) ;
127
+ subError3 . value . should . be . equal ( model . mySubSubClasses [ 0 ] ) ;
128
+ subError3 . property . should . be . equal ( "0" ) ;
129
+ const subSubError3 = subError3 . children [ 0 ] ;
130
+ subSubError3 . target . should . be . equal ( model . mySubSubClasses [ 0 ] ) ;
131
+ subSubError3 . value . should . be . equal ( model . mySubSubClasses [ 0 ] [ 0 ] ) ;
132
+ subSubError3 . property . should . be . equal ( "0" ) ;
133
+ const subSubSubError3 = subSubError3 . children [ 0 ] ;
134
+ subSubSubError3 . target . should . be . equal ( model . mySubSubClasses [ 0 ] [ 0 ] ) ;
135
+ subSubSubError3 . property . should . be . equal ( "name" ) ;
136
+ subSubSubError3 . constraints . should . be . eql ( { minLength : "name must be longer than or equal to 5 characters" } ) ;
137
+ subSubSubError3 . value . should . be . equal ( "sub" ) ;
138
+
139
+
140
+ errors [ 4 ] . target . should . be . equal ( model ) ;
141
+ errors [ 4 ] . property . should . be . equal ( "mySubSubSubClasses" ) ;
142
+ errors [ 4 ] . value . should . be . equal ( model . mySubSubSubClasses ) ;
143
+ expect ( errors [ 4 ] . constraints ) . to . be . undefined ;
144
+ const subError4 = errors [ 4 ] . children [ 0 ] ;
145
+ subError4 . target . should . be . equal ( model . mySubSubSubClasses ) ;
146
+ subError4 . value . should . be . equal ( model . mySubSubSubClasses [ 0 ] ) ;
147
+ subError4 . property . should . be . equal ( "0" ) ;
148
+ const subSubError4 = subError4 . children [ 0 ] ;
149
+ subSubError4 . target . should . be . equal ( model . mySubSubSubClasses [ 0 ] ) ;
150
+ subSubError4 . value . should . be . equal ( model . mySubSubSubClasses [ 0 ] [ 0 ] ) ;
151
+ subSubError4 . property . should . be . equal ( "0" ) ;
152
+ const subSubSubError4 = subSubError4 . children [ 0 ] ;
153
+ subSubSubError4 . target . should . be . equal ( model . mySubSubSubClasses [ 0 ] [ 0 ] ) ;
154
+ subSubSubError4 . value . should . be . equal ( model . mySubSubSubClasses [ 0 ] [ 0 ] [ 0 ] ) ;
155
+ subSubSubError4 . property . should . be . equal ( "0" ) ;
156
+ const subSubSubSubError4 = subSubSubError4 . children [ 0 ] ;
157
+ subSubSubSubError4 . target . should . be . equal ( model . mySubSubSubClasses [ 0 ] [ 0 ] [ 0 ] ) ;
158
+ subSubSubSubError4 . property . should . be . equal ( "name" ) ;
159
+ subSubSubSubError4 . constraints . should . be . eql ( { minLength : "name must be longer than or equal to 5 characters" } ) ;
160
+ subSubSubSubError4 . value . should . be . equal ( "sub" ) ;
110
161
} ) ;
111
162
} ) ;
112
163
0 commit comments