@@ -318,8 +318,8 @@ test('missing values', (t) => {
318318} )
319319
320320test ( 'patternProperties' , ( t ) => {
321- t . plan ( 7 )
322- let stringify = build ( {
321+ t . plan ( 1 )
322+ const stringify = build ( {
323323 title : 'patternProperties' ,
324324 type : 'object' ,
325325 properties : {
@@ -336,8 +336,11 @@ test('patternProperties', (t) => {
336336
337337 let obj = { str : 'test' , foo : 42 , ofoo : true , foof : 'string' , objfoo : { a : true } , notMe : false }
338338 t . equal ( '{"foo":"42","ofoo":"true","foof":"string","objfoo":"[object Object]","str":"test"}' , stringify ( obj ) )
339+ } )
339340
340- stringify = build ( {
341+ test ( 'patternProperties should not change properties' , ( t ) => {
342+ t . plan ( 1 )
343+ const stringify = build ( {
341344 title : 'patternProperties should not change properties' ,
342345 type : 'object' ,
343346 properties : {
@@ -352,10 +355,13 @@ test('patternProperties', (t) => {
352355 }
353356 } )
354357
355- obj = { foo : '42' , ofoo : 42 }
358+ const obj = { foo : '42' , ofoo : 42 }
356359 t . equal ( '{"ofoo":42,"foo":"42"}' , stringify ( obj ) )
360+ } )
357361
358- stringify = build ( {
362+ test ( 'patternProperties - string coerce' , ( t ) => {
363+ t . plan ( 1 )
364+ const stringify = build ( {
359365 title : 'check string coerce' ,
360366 type : 'object' ,
361367 properties : { } ,
@@ -366,10 +372,13 @@ test('patternProperties', (t) => {
366372 }
367373 } )
368374
369- obj = { foo : true , ofoo : 42 , arrfoo : [ 'array' , 'test' ] , objfoo : { a : 'world' } }
375+ const obj = { foo : true , ofoo : 42 , arrfoo : [ 'array' , 'test' ] , objfoo : { a : 'world' } }
370376 t . equal ( '{"foo":"true","ofoo":"42","arrfoo":"array,test","objfoo":"[object Object]"}' , stringify ( obj ) )
377+ } )
371378
372- stringify = build ( {
379+ test ( 'patternProperties - number coerce' , ( t ) => {
380+ t . plan ( 1 )
381+ const stringify = build ( {
373382 title : 'check number coerce' ,
374383 type : 'object' ,
375384 properties : { } ,
@@ -380,10 +389,13 @@ test('patternProperties', (t) => {
380389 }
381390 } )
382391
383- obj = { foo : true , ofoo : '42' , xfoo : 'string' , arrfoo : [ 1 , 2 ] , objfoo : { num : 42 } }
392+ const obj = { foo : true , ofoo : '42' , xfoo : 'string' , arrfoo : [ 1 , 2 ] , objfoo : { num : 42 } }
384393 t . equal ( '{"foo":1,"ofoo":42,"xfoo":null,"arrfoo":null,"objfoo":null}' , stringify ( obj ) )
394+ } )
385395
386- stringify = build ( {
396+ test ( 'patternProperties - boolean coerce' , ( t ) => {
397+ t . plan ( 1 )
398+ const stringify = build ( {
387399 title : 'check boolean coerce' ,
388400 type : 'object' ,
389401 properties : { } ,
@@ -394,10 +406,13 @@ test('patternProperties', (t) => {
394406 }
395407 } )
396408
397- obj = { foo : 'true' , ofoo : 0 , arrfoo : [ 1 , 2 ] , objfoo : { a : true } }
409+ const obj = { foo : 'true' , ofoo : 0 , arrfoo : [ 1 , 2 ] , objfoo : { a : true } }
398410 t . equal ( '{"foo":true,"ofoo":false,"arrfoo":true,"objfoo":true}' , stringify ( obj ) )
411+ } )
399412
400- stringify = build ( {
413+ test ( 'patternProperties - object coerce' , ( t ) => {
414+ t . plan ( 1 )
415+ const stringify = build ( {
401416 title : 'check object coerce' ,
402417 type : 'object' ,
403418 properties : { } ,
@@ -408,10 +423,13 @@ test('patternProperties', (t) => {
408423 }
409424 } )
410425
411- obj = { foo : true , ofoo : '42' , arrfoo : [ 1 , 2 ] , objfoo : { answer : 42 } }
426+ const obj = { foo : true , ofoo : '42' , arrfoo : [ 1 , 2 ] , objfoo : { answer : 42 } }
412427 t . equal ( '{"foo":{},"ofoo":{},"arrfoo":{},"objfoo":{}}' , stringify ( obj ) )
428+ } )
413429
414- stringify = build ( {
430+ test ( 'patternProperties - array coerce' , ( t ) => {
431+ t . plan ( 1 )
432+ const stringify = build ( {
415433 title : 'check array coerce' ,
416434 type : 'object' ,
417435 properties : { } ,
@@ -422,6 +440,28 @@ test('patternProperties', (t) => {
422440 }
423441 } )
424442
425- obj = { foo : 'true' , ofoo : 0 , arrfoo : [ 1 , 2 ] , objfoo : { tyrion : 'lannister' } }
443+ const obj = { foo : 'true' , ofoo : 0 , arrfoo : [ 1 , 2 ] , objfoo : { tyrion : 'lannister' } }
426444 t . equal ( '{"foo":[],"ofoo":[],"arrfoo":[],"objfoo":[]}' , stringify ( obj ) )
427445} )
446+
447+ test ( 'patternProperties - throw on unknown type' , ( t ) => {
448+ t . plan ( 1 )
449+ const stringify = build ( {
450+ title : 'check array coerce' ,
451+ type : 'object' ,
452+ properties : { } ,
453+ patternProperties : {
454+ foo : {
455+ type : 'strangetype'
456+ }
457+ }
458+ } )
459+
460+ const obj = { foo : 'true' , ofoo : 0 , arrfoo : [ 1 , 2 ] , objfoo : { tyrion : 'lannister' } }
461+ try {
462+ stringify ( obj )
463+ t . fail ( )
464+ } catch ( e ) {
465+ t . pass ( )
466+ }
467+ } )
0 commit comments