@@ -184,6 +184,7 @@ test('object has all the keys that are in schema', () => {
184184} ) ;
185185
186186test ( 'object required properties' , ( ) => {
187+ // 1.
187188 let schema = {
188189 'type' : 'object' ,
189190 'properties' : { 'a' : { 'type' : 'string' } } ,
@@ -194,6 +195,49 @@ test('object required properties', () => {
194195 let validator = new DataValidator ( schema ) ;
195196 expect ( validator . validate ( wrong_data ) . isValid ) . toBe ( false ) ;
196197 expect ( validator . validate ( data ) . isValid ) . toBe ( true ) ;
198+
199+ // 2. Nested
200+ schema = {
201+ 'properties' : {
202+ 'object1' : {
203+ 'type' : 'object' ,
204+ 'properties' : {
205+ 'prop1' :{ 'type' : 'string' }
206+ } ,
207+ 'required' :[ 'prop1' ] ,
208+ } ,
209+ 'object2' : {
210+ 'type' : 'object' ,
211+ 'properties' : {
212+ 'prop3' : {
213+ 'type' : 'string'
214+ } ,
215+ 'object3' : {
216+ 'type' : 'object' ,
217+ 'properties' : {
218+ 'prop4' : { 'type' : 'string' }
219+ } ,
220+ 'required' : [ 'prop4' ]
221+ }
222+ } ,
223+ 'required' : [ 'prop3' , 'object3' ]
224+ }
225+ } ,
226+ 'required' : [ 'object1' ] ,
227+ }
228+
229+ let wrong_data_1 = { 'object1' : { 'prop1' : '' } , 'object2' : { 'prop3' : '' , 'object3' : { 'prop4' : '' } } }
230+ let wrong_data_2 = { 'object1' : { 'prop1' : 'x' } , 'object2' : { 'prop3' : '' , 'object3' : { 'prop4' : '' } } }
231+ let wrong_data_3 = { 'object1' : { 'prop1' : 'x' } , 'object2' : { 'prop3' : 'x' , 'object3' : { 'prop4' : '' } } }
232+ let wrong_data_4 = { 'object1' : { 'prop1' : '' } , 'object2' : { 'prop3' : 'x' , 'object3' : { 'prop4' : 'x' } } }
233+ data = { 'object1' : { 'prop1' : 'x' } , 'object2' : { 'prop3' : 'x' , 'object3' : { 'prop4' : 'x' } } }
234+
235+ validator = new DataValidator ( schema ) ;
236+ expect ( validator . validate ( wrong_data_1 ) . isValid ) . toBe ( false ) ;
237+ expect ( validator . validate ( wrong_data_2 ) . isValid ) . toBe ( false ) ;
238+ expect ( validator . validate ( wrong_data_3 ) . isValid ) . toBe ( false ) ;
239+ expect ( validator . validate ( wrong_data_4 ) . isValid ) . toBe ( false ) ;
240+ expect ( validator . validate ( data ) . isValid ) . toBe ( true ) ;
197241} ) ;
198242
199243test ( 'additionalProperties type' , ( ) => {
0 commit comments