Socket
Book a DemoInstallSign in
Socket

json-schema-fast-check

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

json-schema-fast-check

[![CircleCI](https://circleci.com/gh/unmock/json-schema-fast-check.svg?style=svg)](https://circleci.com/gh/unmock/json-schema-fast-check) [![codecov](https://codecov.io/gh/unmock/json-schema-fast-check/branch/master/graph/badge.svg)](https://codecov.io/g

0.0.6
latest
npmnpm
Version published
Weekly downloads
77K
-37.43%
Maintainers
1
Weekly downloads
 
Created
Source

CircleCI codecov

json-schema-fast-check

JSON Schema is a useful way to define input and output schemas.

Property testing is a useful way to make sure that a function behaves as expected with any valid input.

json-schema-fast-check implements arbitrary JSON Schema values using the fast-check library for property testing.

Example

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.

jsfc (default)

const arbitrary = jsfc(mySchema);

Creates a fast-check arbitrary from valid JSON schema.

generate

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

FAQs

Package last updated on 06 Sep 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.