diff --git a/src/core/utils.js b/src/core/utils.js index 6d46d56d315854d6681799ce55d0ba58f587e847..b22847d011959ca9b3baf1616d72c532b08f8ff2 100644 --- a/src/core/utils.js +++ b/src/core/utils.js @@ -178,7 +178,7 @@ function merge(a, b) { a[key] = a[key] || []; // fix #292 - skip duplicated values from merge object (b) b[key].forEach(value => { - if (a[key].indexOf(value) === -1) { + if (Array.isArray(a[key]) && a[key].indexOf(value) === -1) { a[key].push(value); } }); diff --git a/src/types/object.js b/src/types/object.js index f4e0f2e45f431dd931da86cde6def8936517fe6c..e26aa5eb71734b762c1857b3e4a9e68941b1a5d7 100644 --- a/src/types/object.js +++ b/src/types/object.js @@ -50,10 +50,10 @@ function objectType(value, path, resolve, traverseCallback) { const fixedProbabilities = optionAPI('alwaysFakeOptionals') || optionAPI('fixedProbabilities') || false; const ignoreProperties = optionAPI('ignoreProperties') || []; - const min = Math.max(value.minProperties || 0, random.number(requiredProperties.length, allProperties.length)); + const min = Math.max(value.minProperties || 0, requiredProperties.length); const max = value.maxProperties || (allProperties.length + (allowsAdditional ? random.number(1, 5) : 0)); - let neededExtras = Math.max(0, min - requiredProperties.length); + let neededExtras = Math.max(0, allProperties.length - min); if (allProperties.length === 1 && !requiredProperties.length) { neededExtras = random.number(neededExtras, allProperties.length + (allProperties.length - min));