deadhead-space-freight-tycoon/apps/web/test/art-manifest.test.ts

31 lines
1.1 KiB
TypeScript

import { existsSync } from "node:fs";
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";
import { content } from "@deadhead/content";
import { describe, expect, it } from "vitest";
import { artManifest } from "../src/map/art/manifest";
const webRoot = join(dirname(fileURLToPath(import.meta.url)), "..");
describe("map art manifest (CR-003)", () => {
it("has an entry for every location's and ship model's sprite and badge", () => {
const keys = [
...content.locations.flatMap((l) => [l.sprite, ...(l.badge ? [l.badge] : [])]),
...content.shipModels.map((m) => m.sprite),
];
for (const key of keys) expect(artManifest.assets, key).toHaveProperty([key]);
expect(artManifest.assets).toHaveProperty(["bg"]);
expect(artManifest.assets).toHaveProperty(["sun"]);
});
it("names only files that exist in the source folder", () => {
for (const [id, asset] of Object.entries(artManifest.assets)) {
if (asset.file === null) continue;
expect(
existsSync(join(webRoot, artManifest.sourceDir, asset.file)),
`${id}: ${asset.file}`,
).toBe(true);
}
});
});