import { beforeEach, describe, expect, mock, test } from "bun:test"; import { fakeD1 } from "../metering/fake-d1.test-helper"; import { scopedTestState } from "./scoped.test-helper"; let d1 = fakeD1(); const fakeEnv: Record = { get DB() { return d1.binding; }, }; const scoped = scopedTestState(); scoped.install(); mock.module("cloudflare:workers", () => ({ DurableObject: class {}, env: fakeEnv, waitUntil: () => undefined })); const { deploySitesForPush, isMergeQueueBranch, shaPusher } = await import("./triggers"); beforeEach(() => { d1 = fakeD1(); scoped.reset(); }); describe("site triggers", () => { test("merge-queue branches never deploy", async () => { expect(isMergeQueueBranch("gitfor-merge-queue/main/pr-4")).toBe(true); expect(isMergeQueueBranch("feature/gitfor-merge-queue")).toBe(false); expect(await deploySitesForPush("r1", "gitfor-merge-queue/main/pr-4", "a".repeat(40), "u1")).toBe(0); }); test("preview trust follows the SHA's pusher, not whoever reran it", async () => { scoped.repo("r1").run(`INSERT INTO push_events VALUES ('p1', 'r1', 'refs/heads/f', 'x', 'abc', 'author', 1), ('p2', 'r1', 'refs/heads/f', 'abc', 'def', 'other', 2)`); expect(await shaPusher("r1", "refs/heads/f", "abc")).toBe("author"); expect(await shaPusher("r1", "refs/heads/f", "zzz")).toBeNull(); expect(await shaPusher("r1", "refs/heads/g", "abc")).toBeNull(); }); });