json-schema-library
Version:
Customizable and hackable json-validator and json-schema utilities for traversal, data generation and validation
37 lines (36 loc) • 1.29 kB
JavaScript
import { globSync } from "glob";
import path from "path";
import fs from "fs";
function readTestFile(filepath) {
const contents = fs.readFileSync(filepath, "utf-8").toString();
const testCaseData = JSON.parse(contents);
return testCaseData;
}
function getFilenameAttributes(filename) {
let relative = filename.split(/draft[^/]+\//).pop();
if (relative == null) {
throw new Error(`Error in spec generation. Failed parsing filename '${filename}'`);
}
relative = relative.replace(".json", "").replace(/^\//, "");
const attributes = relative.replace(".json", "").split("/");
let optional = false;
if (attributes[0] === "optional") {
attributes.shift();
optional = true;
}
return { optional, name: attributes.join("-") };
}
export function getDraftTests(draft) {
const source = path.resolve(`./node_modules/json-schema-test-suite/tests/draft${draft}`);
const filenames = globSync(`${source}/**/*.json`);
const testCases = filenames.map((filename) => {
const testCaseData = readTestFile(filename);
const { optional, name } = getFilenameAttributes(filename);
return {
name,
testCases: testCaseData,
optional
};
});
return testCases;
}