Update validate-json.test.ts
This commit is contained in:
parent
80f4243cda
commit
5af70aad99
@ -8,62 +8,46 @@ const jsonDir = "public/json";
|
|||||||
const metadataFileName = "metadata.json";
|
const metadataFileName = "metadata.json";
|
||||||
const encoding = "utf-8";
|
const encoding = "utf-8";
|
||||||
|
|
||||||
let fileNames: string[] = [];
|
const fileNames = (await fs.readdir(jsonDir))
|
||||||
|
.filter((fileName) => fileName !== metadataFileName)
|
||||||
|
|
||||||
try {
|
describe.each(fileNames)("%s", async (fileName) => {
|
||||||
fileNames = (await fs.readdir(jsonDir)).filter((fileName) => fileName !== metadataFileName);
|
|
||||||
} catch (error) {
|
|
||||||
console.warn(`Skipping JSON validation tests: ${error.message}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fileNames.length === 0) {
|
|
||||||
describe("Dummy Test Suite", () => {
|
|
||||||
it("Skipping JSON tests because no files were found", () => {
|
|
||||||
assert(true);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
describe.each(fileNames)("%s", async (fileName) => {
|
|
||||||
let script: Script;
|
let script: Script;
|
||||||
|
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
const filePath = path.resolve(jsonDir, fileName);
|
const filePath = path.resolve(jsonDir, fileName);
|
||||||
const fileContent = await fs.readFile(filePath, encoding);
|
const fileContent = await fs.readFile(filePath, encoding)
|
||||||
script = JSON.parse(fileContent);
|
script = JSON.parse(fileContent);
|
||||||
});
|
})
|
||||||
|
|
||||||
it("should have valid json according to script schema", () => {
|
it("should have valid json according to script schema", () => {
|
||||||
ScriptSchema.parse(script);
|
ScriptSchema.parse(script);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should have a corresponding script file", async () => {
|
it("should have a corresponding script file", () => {
|
||||||
for (const method of script.install_methods) {
|
script.install_methods.forEach((method) => {
|
||||||
const scriptPath = path.resolve("..", method.script);
|
const scriptPath = path.resolve("..", method.script)
|
||||||
try {
|
assert(fs.stat(scriptPath), `Script file not found: ${scriptPath}`)
|
||||||
await fs.stat(scriptPath);
|
})
|
||||||
} catch {
|
|
||||||
assert.fail(`Script file not found: ${scriptPath}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
})
|
||||||
|
|
||||||
describe(`${metadataFileName}`, async () => {
|
describe(`${metadataFileName}`, async () => {
|
||||||
let metadata: Metadata;
|
let metadata: Metadata;
|
||||||
|
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
const filePath = path.resolve(jsonDir, metadataFileName);
|
const filePath = path.resolve(jsonDir, metadataFileName);
|
||||||
const fileContent = await fs.readFile(filePath, encoding);
|
const fileContent = await fs.readFile(filePath, encoding)
|
||||||
metadata = JSON.parse(fileContent);
|
metadata = JSON.parse(fileContent);
|
||||||
});
|
})
|
||||||
|
|
||||||
it("should have valid json according to metadata schema", () => {
|
it("should have valid json according to metadata schema", () => {
|
||||||
|
// TODO: create zod schema for metadata. Move zod schemas to /lib/types.ts
|
||||||
assert(metadata.categories.length > 0);
|
assert(metadata.categories.length > 0);
|
||||||
metadata.categories.forEach((category) => {
|
metadata.categories.forEach((category) => {
|
||||||
assert.isString(category.name);
|
assert.isString(category.name)
|
||||||
assert.isNumber(category.id);
|
assert.isNumber(category.id)
|
||||||
assert.isNumber(category.sort_order);
|
assert.isNumber(category.sort_order)
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
})
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user