Skip to content

Commit

Permalink
Add JSON schema for Quick Builds
Browse files Browse the repository at this point in the history
  • Loading branch information
guidokessels committed Feb 13, 2019
1 parent 0a9fd21 commit 6cbdde7
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
28 changes: 28 additions & 0 deletions tests/quick-builds-schema.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
const path = require("path");
const { matchers } = require("jest-json-schema");
expect.extend(matchers);

const { "quick-builds": quickBuildFiles } = require("../data/manifest.json");

const quickBuildsSchema = require("./schemas/quick-build.schema.json");

describe("Quick Builds", () => {
quickBuildFiles.forEach(file => {
const contents = require(`../${file}`);
const filename = path.basename(file, path.extname(file));
expect(contents).toHaveProperty("quick-builds");
const { "quick-builds": quickBuilds } = contents;
describe(`${filename}`, () => {
quickBuilds.forEach((qb, i) => {
const testName = [
`#${i}`,
`threat ${qb.threat}`,
qb.pilots.map(d => d.id).join(", ")
].join(" - ");
test(testName, () => {
expect(qb).toMatchSchema(quickBuildsSchema);
});
});
});
});
});
35 changes: 35 additions & 0 deletions tests/schemas/quick-build.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"type": "object",
"required": ["threat", "pilots"],
"additionalProperties": false,
"properties": {
"threat": {
"type": "integer",
"minimum": 1,
"maximum": 6
},
"pilots": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"required": ["id"],
"properties": {
"id": { "type": "string", "pattern": "^[a-z0-9-]+$" },
"upgrades": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^(astromech|cannon|configuration|crew|device|force-power|gunner|illicit|missile|modification|sensor|tacticalrelay|talent|tech|title|torpedo|turret)$": {
"type": "array",
"minLength": 1,
"items": { "type": "string", "pattern": "^[a-z0-9-]+$" }
}
}
}
}
}
}
}
}

0 comments on commit 6cbdde7

Please sign in to comment.