27 lines
1.3 KiB
TypeScript
27 lines
1.3 KiB
TypeScript
import { readFileSync } from "node:fs";
|
|
import { resolve } from "node:path";
|
|
|
|
import { describe, expect, test } from "bun:test";
|
|
|
|
import type { CharacterRepresentation } from "../src/services/api/projects";
|
|
import { projectCharacterCover } from "../src/pages/projects/detail/project-character-cover";
|
|
|
|
const characterCardSource = readFileSync(resolve(import.meta.dir, "../src/pages/projects/detail/project-character-card.tsx"), "utf8");
|
|
const projectAssetsSource = readFileSync(resolve(import.meta.dir, "../src/pages/projects/detail/assets.tsx"), "utf8");
|
|
|
|
describe("project character cover selection", () => {
|
|
test("prefers the front representation over an earlier side representation", () => {
|
|
const representations: CharacterRepresentation[] = [
|
|
{ id: "side", resourceId: "side-image", mediaType: "image", role: "side" },
|
|
{ id: "front", resourceId: "front-image", mediaType: "image", role: "front" },
|
|
];
|
|
|
|
expect(projectCharacterCover(representations)?.resourceId).toBe("front-image");
|
|
});
|
|
|
|
test("uses the same cover selector for cards and the preview modal", () => {
|
|
expect(characterCardSource).toContain("projectCharacterCover(character?.representations)");
|
|
expect(projectAssetsSource).toContain("projectCharacterCover(asset?.character?.representations)");
|
|
});
|
|
});
|