[](https://circleci.com/gh/unmock/json-schema-fast-check) [](https://codecov.io/g
npm install json-schema-fast-check

json-schema-fast-check implements arbitrary JSON Schema values using the fast-check library for property testing.
typescript
import jsfc from "json-schema-fast-check";
import fc from "fast-check";
const getAge = (data: any) =>
typeof data === "object" && typeof data.age === "number"
? Math.floor(data.age)
: null;
const userSchema = {
type: "object",
properties: {
required: ["name", "id"],
name: {
type: "string"
},
age: {
type: "integer",
minimum: 0
},
id: {
type: "integer"
}
}
}
test("my function yields positive age or null", () => {
fc.assert(fc.property(jsfc(userSchema), user => {
const age = getAge(user);
return age === null || age >= 0;
}));
});
`
API
The API has only two functions - the default one (which we call jsfc just cuz) and a helper function called generate.
$3
`typescript
const arbitrary = jsfc(mySchema);
`
Creates a fast-check arbitrary from valid JSON schema.
$3
`typescript
const json = generate(mySchema);
`
Generates a single valid JSON object that conforms to the schema.
A note on JSON Schema
The actual schema used here is not JSON Schema but rather a subset of JSON Schema called "The Subest of JSON Schema I Was Not Too Lazy To Define." I also added some faker-js sugar (see the tests).
Todo
There is plenty of stuff that is not implemented yet. I'd really appreciate your help!
* minProperties and maxProperties for objects
* additionalItems for arrays
* tuples bigger than length 16
* if/then/else syntax
* proper use of oneOf
* use objects as dependencies` as well as arrays