Ctrl K
ComunidadGuías…

test/shared/bulk-email-targets.test.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import { expect } from "@std/expect";
import { describe, it as test } from "@std/testing/bdd";
import { isBulkEmailTarget } from "#shared/bulk-email-targets/types.ts";

describe("bulk email targets", () => {
  test("accepts every target kind", () => {
    expect(isBulkEmailTarget({ audience: "active", kind: "audience" })).toBe(
      true,
    );
    expect(isBulkEmailTarget({ kind: "listing", listingId: 3 })).toBe(true);
    expect(
      isBulkEmailTarget({
        day: "2026-03-02",
        kind: "listing-day",
        listingId: 3,
      }),
    ).toBe(true);
    expect(isBulkEmailTarget({ kind: "attendee", token: "tok123" })).toBe(true);
  });

  test("rejects incomplete and invalid targets", () => {
    for (const target of [
      { audience: "bogus", kind: "audience" },
      { kind: "audience" },
      { kind: "listing", listingId: 1.5 },
      { kind: "listing" },
      { day: "2026-02-30", kind: "listing-day", listingId: 3 },
      { day: "2026-3-2", kind: "listing-day", listingId: 3 },
      { day: "", kind: "listing-day", listingId: 3 },
      { kind: "listing-day", listingId: 3 },
      { day: "2026-03-02", kind: "listing-day" },
      { day: "2026-03-02", kind: "listing-day", listingId: 1.5 },
      { kind: "attendee", token: "" },
      { kind: "attendee" },
      { kind: "other" },
      { kind: 123 },
      {},
      null,
      "nope",
    ]) {
      expect(isBulkEmailTarget(target)).toBe(false);
    }
  });
});