23 lines
1.2 KiB
TypeScript
23 lines
1.2 KiB
TypeScript
import { describe, expect, test } from "bun:test";
|
|
import { existsSync } from "node:fs";
|
|
import { resolve } from "node:path";
|
|
import { creationFeaturedWorks, inspirationSource } from "../src/pages/create/creation-inspirations";
|
|
|
|
describe("curated creation inspirations", () => {
|
|
test("all templates have unique titles, usable prompts and local cover assets", () => {
|
|
expect(creationFeaturedWorks.length).toBe(22);
|
|
expect(new Set(creationFeaturedWorks.map((item) => item.title)).size).toBe(22);
|
|
for (const item of creationFeaturedWorks) {
|
|
expect(["image", "video", "text"]).toContain(item.mode);
|
|
expect(item.prompt.length).toBeGreaterThan(35);
|
|
expect(existsSync(resolve(import.meta.dir, "../public", item.image.slice(1)))).toBe(true);
|
|
}
|
|
});
|
|
test("adapted prompts retain provenance and the data license", () => {
|
|
expect(creationFeaturedWorks.filter((item) => item.source).length).toBe(8);
|
|
expect(inspirationSource.license).toBe("CC0-1.0");
|
|
expect(inspirationSource.revision).toMatch(/^[a-f0-9]{40}$/);
|
|
expect(inspirationSource.notice).toContain("不代表实际生成结果");
|
|
});
|
|
});
|