81 lines · 2.9 KB
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 released: string[] = [];
mock.module("cloudflare:workers", () => ({
  env: {
    get DB() {
      return d1.binding;
    },
  },
  waitUntil: () => undefined,
}));
const scoped = scopedTestState();
scoped.install();
type Row = [string, string, string, string, number, number, number | null];
function addSites(...rows: Row[]): void {
  for (const [id, owner, domain, status, claimed, updated, verified] of rows) {
    scoped.site({
      id,
      owner_id: owner,
      custom_domain: domain,
      domain_status: status,
      domain_claimed_at: claimed,
      updated_at: updated,
      domain_verified_at: verified,
    });
  }
}
mock.module("./site", () => ({ releaseSiteDomain: async (site: { id: string }) => void released.push(site.id) }));

const { sweepCustomDomains } = await import("./domain-sweep");
const { DOMAIN_GRACE_MS, saveDomainAddon } = await import("../billing/domain-addon");

const HOUR = 60 * 60 * 1000;
const NOW = 1_800_000_000_000;

beforeEach(() => {
  d1 = fakeD1();