feat: add schema for admin content modules

This commit is contained in:
Simo committed 2026-07-12 15:27:06 +02:00
1 parent 9ead82bbca
commit b9525c8e6b
3 files changed
+314

No files matched your search

@@ -0,0 +1,28 @@
import { existsSync, readFileSync } from "node:fs";
import { resolve } from "node:path";
import { describe, expect, it } from "vitest";
const tables = [
"website_event_types", "website_events", "website_event_registrations",
"website_event_prizes", "website_event_winners", "website_polls",
"website_poll_questions", "website_poll_votes", "website_banners",
"custom_prefixes", "custom_prefix_blacklist", "custom_prefix_settings",
];
describe("admin content module port", () => {
it("owns every required table through schema and migration contracts", () => {
const schema = readFileSync(resolve("prisma/schema.prisma"), "utf8");
const migration = readFileSync(resolve("prisma/migrations/0013_admin_events_polls_banners_prefixes.sql"), "utf8");
for (const table of tables) {
expect(migration).toContain(`CREATE TABLE IF NOT EXISTS \`${table}\``);
if (!table.startsWith("custom_prefix")) expect(schema).toContain(`@@map("${table}")`);
}
});
it("provides locale-free routes and matching server actions", () => {
for (const module of ["events", "polls", "banners", "prefixes"]) {
expect(existsSync(resolve(`src/app/admin/${module}/page.tsx`))).toBe(true);
expect(existsSync(resolve(`src/actions/${module}.ts`))).toBe(true);
}
});
});