Home Reference Source

src/complex-schema.test.js

import {default as Schema} from "../fixtures/basic-refs.schema";
import {default as Data} from "../fixtures/basic-refs.data";
import {default as Swagger} from "../fixtures/OpenAPIv2";
import {default as OpenAPIv3} from "../fixtures/OpenAPIv3";
import {default as JSONSchema4} from "../fixtures/json-schema-draft04.schema";
import {default as basicAPI} from "../fixtures/petstore.v2"
import {Model} from "./Model";

describe("Basic Refs", () => {
    describe("ref handling", () => {
        it("should validate schema containing $refs and definitions", (done) => {
            const _owner = new Model({schemas: [Schema]});
            _owner.subscribe({
                next: (model) => {
                    expect(_owner.errors).toBe(null);
                    expect(model.toJSON()).toEqual(Data);
                    done();
                },
                error: (e) => {
                    done(`${e}`);
                }
            });
            _owner.model = Data;
        });
    });

    describe("OPenAPI Tests", () => {
        it("should load and validate Swagger Schema", () => {
            const _owner = new Model({
                meta: [JSONSchema4],
                schemas: [Swagger],
                use: "http://swagger.io/v2/schema.json#",
            });
            _owner.model = basicAPI;
            // test to ensure no errors were logged
            expect(_owner.errors).toBe(null);
            // test for completeness
            expect(_owner.toJSON()).toEqual(basicAPI);
        });

        it("should load and validate OpenAPIv3 Schema", () => {
            const _d = {
                openapi: "3.0.1",
                info: {
                    title: "testing",
                    version: "1.0.0",
                },
                paths: {},
            };
            const _owner = new Model({
                meta: [JSONSchema4],
                schemas: [OpenAPIv3],
                use: "http://openapis.org/v3/schema.json#",
            });
            _owner.model = _d;
            // test to ensure no errors were logged
            expect(_owner.errors).toBe(null);
            // test for completeness
            expect(_owner.toJSON()).toEqual(_d);
        });
    });
});