Move CMS SQL to drizzle/migrations, drop prisma packages/schema, wire drizzle-kit scripts, and regenerate schema names from src/db/schema.ts. Co-authored-by: Cursor <[email protected]>
47 lines
1.7 KiB
TypeScript
47 lines
1.7 KiB
TypeScript
import { readFileSync } from "node:fs";
|
|
import { resolve } from "node:path";
|
|
import { describe, expect, it } from "vitest";
|
|
|
|
describe("CI workflow", () => {
|
|
const workflow = readFileSync(
|
|
resolve(process.cwd(), ".gitea/workflows/ci.yaml"),
|
|
"utf8",
|
|
).replace(/\r\n/g, "\n");
|
|
|
|
it("runs check then production deploy on push to main", () => {
|
|
expect(workflow).toContain("pnpm biome:lint");
|
|
expect(workflow).toContain("pnpm typecheck");
|
|
expect(workflow).toContain("pnpm test");
|
|
expect(workflow).toContain("needs: check");
|
|
expect(workflow).toContain(
|
|
"gitea.event_name == 'push' && gitea.ref_name == 'main'",
|
|
);
|
|
expect(workflow).toContain("worktree add --detach");
|
|
expect(workflow).toContain("/api/health");
|
|
expect(workflow).not.toContain("github.ref");
|
|
});
|
|
|
|
it("uses Gitea SHA for check checkout", () => {
|
|
expect(workflow).toContain("gitea.sha");
|
|
expect(workflow).toContain("SKIP_ENV_VALIDATION=1");
|
|
});
|
|
|
|
it("keeps tag release in the same workflow", () => {
|
|
expect(workflow).toContain('tags:\n - "v*"');
|
|
expect(workflow).toContain("Creating release for");
|
|
expect(workflow).toContain("startsWith(gitea.ref_name, 'v')");
|
|
});
|
|
|
|
it("applies CMS migrations on tag release before build", () => {
|
|
const release = workflow.slice(workflow.indexOf("\n release:"));
|
|
expect(release).toContain("pnpm db:migrate");
|
|
expect(release).not.toContain("pnpm prisma:generate");
|
|
expect(release).toContain("pnpm db:migrate");
|
|
expect(release).toContain("src/db/schema.ts");
|
|
const migrateAt = release.indexOf("pnpm db:migrate");
|
|
const buildAt = release.indexOf("pnpm build");
|
|
expect(migrateAt).toBeGreaterThan(-1);
|
|
expect(buildAt).toBeGreaterThan(migrateAt);
|
|
});
|
|
});
|