diff --git a/.travis.yml b/.travis.yml index 1c368728aba400009d4f12b0266e5e09098ac10b..22f5006fd3e66cbf1b1dcb9d939a848ee9e5ce53 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,7 @@ language: node_js branches: only: - master + - extending-dependencies node_js: - 0.10 before_script: diff --git a/README.md b/README.md index ff8b8cc6559d0d57ac6a8327da272a2572ebf429..e8c202814a83399e27948a3c9ff582433c91daa5 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,9 @@ Fake your schemas! [](https://travis-ci.org/pateketrueke/json-schema-faker) [](http://badge.fury.io/js/json-schema-faker) [](https://coveralls.io/r/pateketrueke/json-schema-faker?branch=master) -`json-schema-faker` supports (currently) the JSON-Schema specification **draft-04** only (?) +[](http://badge.fury.io/js/json-schema-faker) + +`json-schema-faker` supports (currently) the JSON-Schema specification **draft-04** only. ```javascript var jsf = require('json-schema-faker'); diff --git a/lib/index.js b/lib/index.js index 9d1910a6ff4ba410125af828c143e6d0eaebbee4..add3f48753d677aeffd0076ddc03c12a9e3645bb 100644 Binary files a/lib/index.js and b/lib/index.js differ diff --git a/lib/types/object.js b/lib/types/object.js index 9ebd2fb00fd64e8e36b611660d97a4290c275542..752a16b51a3f741c806200e2f538c57e1c8397bf 100644 Binary files a/lib/types/object.js and b/lib/types/object.js differ diff --git a/lib/types/string.js b/lib/types/string.js index 8438f3a60d66d958e313116df311a94b04be5d7c..ff328ad72dcd7082e852525bdbb0c6857f516803 100644 Binary files a/lib/types/string.js and b/lib/types/string.js differ diff --git a/lib/util/container.js b/lib/util/container.js new file mode 100644 index 0000000000000000000000000000000000000000..df9972353f946c20b0af69527a5157b9bd96775a Binary files /dev/null and b/lib/util/container.js differ diff --git a/lib/util/random.js b/lib/util/random.js index d9fd0cd60437af6ebe3e94a23cef5cfe4dc416b4..1d7404554b592d522833b407141d7f84f18fa03d 100644 Binary files a/lib/util/random.js and b/lib/util/random.js differ diff --git a/package.json b/package.json index 727f37ba15d785dd3c26447a2145cf2f940e7e46..d472c77a474e6cb4e47bb0e6fcf1f9814dcfea83 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,17 @@ { "name": "json-schema-faker", - "version": "0.1.6", + "version": "0.1.8", "description": "JSON-Schema + Faker", "main": "lib/index.js", "author": { "name": "Alvaro Cabrera", "email": "pateketrueke@gmail.com" }, + "contributors": [{ + "name": "Tomasz Ducin", + "email": "tomasz.ducin@gmail.com", + "url": "http://ducin.it" + }], "repository": { "type": "git", "url": "https://github.com/pateketrueke/json-schema-faker" @@ -23,7 +28,7 @@ "z-schema": "^3.3.1" }, "dependencies": { - "chance": "^0.7.4", + "chance": "^0.7.5", "deref": "^0.2.8", "faker": "^2.1.2", "randexp": "^0.4.0" diff --git a/spec/core/customize/faker-extend.js b/spec/core/customize/faker-extend.js new file mode 100644 index 0000000000000000000000000000000000000000..c66c5a6b1658a3cb5fe0b87ffbad961d7f9f22f7 --- /dev/null +++ b/spec/core/customize/faker-extend.js @@ -0,0 +1,20 @@ +module.exports = { + extend: function (faker) { + faker.locale = "de"; + + faker.mixin = function (namespace, fnObject) { + faker[namespace] = fnObject; + }; + + faker.mixin('custom', { + statement: function (length) { + return faker.name.firstName() + " has " + faker.finance.amount() + " on " + faker.finance.account(length) + "."; + } + }); + + return faker; + }, + register: function(jsfaker) { + return jsfaker.customize('faker', this.extend); + } +}; diff --git a/spec/core/customize/faker.json b/spec/core/customize/faker.json new file mode 100644 index 0000000000000000000000000000000000000000..1f73c00c02cfe2aa1f578e2cff8a330fc2576f29 --- /dev/null +++ b/spec/core/customize/faker.json @@ -0,0 +1,18 @@ +[ + { + "description": "generated extended faker", + "tests": [ + { + "description": "should handle faker.custom.statement", + "schema": { + "type": "string", + "faker": { + "custom.statement": [19] + } + }, + "valid": true, + "require": "core/customize/faker-extend" + } + ] + } +] diff --git a/spec/core/formats/semver.js b/spec/core/formats/semver.js new file mode 100644 index 0000000000000000000000000000000000000000..b5b813b41d0371d9dfd6b0ce5115225a5dcd3a10 --- /dev/null +++ b/spec/core/formats/semver.js @@ -0,0 +1,9 @@ +module.exports = { + register: function (jsf) { + return jsf.formats({ + semver: function (gen, schema) { + return gen.randexp('\\d\\.\\d\\.[1-9]\\d?'); + } + }); + } +}; diff --git a/spec/core/issues/format.json b/spec/core/issues/format.json index d5f6b747140adfea33ef401d05f1c0d2ca5d6f5e..b1096f1e4daf0f292d79bbfb29c0b6e0da65b5d6 100644 --- a/spec/core/issues/format.json +++ b/spec/core/issues/format.json @@ -16,7 +16,8 @@ "type": "string", "format": "semver" }, - "valid": true + "valid": true, + "require": "core/formats/semver" }, { "description": "should support faker/chance on numeric types", diff --git a/spec/helpers.coffee b/spec/helpers.coffee index bb009d69420a27627b94c9ee802fc87cd81fc868..f5b6efb73520f7fa74c8e645c4c797d4c88867db 100644 --- a/spec/helpers.coffee +++ b/spec/helpers.coffee @@ -3,7 +3,7 @@ clone = require('clone') ZSchema = require('z-schema') JaySchema = require('jayschema') -formatValidators = require('./formats').validate +formatValidators = require('./validator').validate [tv4, ZSchema].map formatValidators diff --git a/spec/main-spec.coffee b/spec/main-spec.coffee index 7ee94e442f5d9c647dd950d9f890e87817ab8e5b..d67b64a3e5d9f8d730354bb0f9706c7a222005d9 100644 --- a/spec/main-spec.coffee +++ b/spec/main-spec.coffee @@ -3,8 +3,6 @@ glob = require('glob') deref = require('deref') jsfaker = require('../lib') -require('./formats').register(jsfaker) - pick = (obj, key) -> parts = key.split('.') obj = obj[parts.shift()] while parts.length @@ -39,6 +37,9 @@ glob.sync("#{__dirname}/**/*.json").forEach (file) -> error = '' sample = try + if test.require + wrapper = require('./' + test.require) + wrapper.register(jsfaker) jsfaker(schema, refs) catch e error = e.message @@ -60,6 +61,7 @@ glob.sync("#{__dirname}/**/*.json").forEach (file) -> refs = [schema] if schema.id expect(sample).toHaveSchema schema, refs catch e - console.log JSON.stringify(schema, null, 2) - console.log JSON.stringify(sample, null, 2) + console.log suite.description + console.log 'schema', JSON.stringify(schema, null, 2) + console.log 'sample', JSON.stringify(sample, null, 2) throw e diff --git a/spec/formats.coffee b/spec/validator.coffee similarity index 78% rename from spec/formats.coffee rename to spec/validator.coffee index 990e071bde45033cd93dd0e08043abea1e121c1e..51fbe716ef2384db078b914827a05df69d114f1d 100644 --- a/spec/formats.coffee +++ b/spec/validator.coffee @@ -1,11 +1,6 @@ semver = require('semver') module.exports = - register: (jsf) -> - jsf.formats - semver: (gen, schema) -> - gen.randexp '\\d\\.\\d\\.[1-9]\\d?' - validate: (v) -> registry = v.addFormat or v.registerFormat msgOnFail = not v.registerFormat