Skip to content

Commit 0424786

Browse files
authored
fix multi default (#257)
* add failing test * fix multi default issue * fix tests * fix lint
1 parent 1716345 commit 0424786

File tree

2 files changed

+40
-3
lines changed

2 files changed

+40
-3
lines changed

index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -755,14 +755,14 @@ function buildCode (location, code, laterCode, name) {
755755

756756
var defaultValue = schema.properties[key].default
757757
if (defaultValue !== undefined) {
758-
required = filterRequired(schema.required, key)
758+
required = filterRequired(required, key)
759759
code += `
760760
} else {
761761
${addComma}
762762
json += ${asString} + ':' + ${JSON.stringify(JSON.stringify(defaultValue))}
763763
`
764-
} else if (schema.required && schema.required.indexOf(key) !== -1) {
765-
required = filterRequired(schema.required, key)
764+
} else if (required && required.indexOf(key) !== -1) {
765+
required = filterRequired(required, key)
766766
code += `
767767
} else {
768768
throw new Error('${sanitized} is required!')

test/defaults.test.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,3 +337,40 @@ buildTest({
337337
}, {
338338
level1: { level2: { level3: { level4: { } } } }
339339
})
340+
341+
buildTest({
342+
type: 'object',
343+
properties: {
344+
name: {
345+
type: 'string',
346+
default: 'foo'
347+
},
348+
dev: {
349+
type: 'boolean',
350+
default: false
351+
}
352+
},
353+
required: [
354+
'name', 'dev'
355+
]
356+
}, {}, { name: 'foo', dev: false })
357+
358+
buildTest({
359+
type: 'object',
360+
properties: {
361+
name: {
362+
type: 'string',
363+
default: 'foo'
364+
},
365+
dev: {
366+
type: 'boolean'
367+
},
368+
job: {
369+
type: 'string',
370+
default: 'awesome'
371+
}
372+
},
373+
required: [
374+
'name', 'dev'
375+
]
376+
}, { dev: true }, { name: 'foo', dev: true, job: 'awesome' })

0 commit comments

Comments
 (0)