Ctrl K
ComunidadGuías…

test/scripts/test-environment.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 { withEnvironment } from "#scripts/test-environment.ts";

/** Names nothing else in the suite reads or writes. `Deno.env` belongs to the
 * whole process, and test files run side by side in it, so borrowing a real
 * setting's name here would let this test and a neighbour clobber each other. */
const EMPTY = "TICKETS_TEST_ENVIRONMENT_EMPTY";
const MISSING = "TICKETS_TEST_ENVIRONMENT_MISSING";

describe("temporary environment", () => {
  test("restores empty and missing values exactly", async () => {
    Deno.env.set(EMPTY, "");
    Deno.env.delete(MISSING);
    try {
      await expect(
        withEnvironment({ [EMPTY]: "localhost", [MISSING]: "43210" }, () => {
          expect(Deno.env.get(EMPTY)).toBe("localhost");
          expect(Deno.env.get(MISSING)).toBe("43210");
          throw new Error("Task failed");
        }),
      ).rejects.toThrow("Task failed");

      expect(Deno.env.get(EMPTY)).toBe("");
      expect(Deno.env.get(MISSING)).toBeUndefined();
    } finally {
      Deno.env.delete(EMPTY);
      Deno.env.delete(MISSING);
    }
  });

  test("returns the task result before restoring existing values", async () => {
    Deno.env.set(EMPTY, "before");
    try {
      const result = await withEnvironment({ [EMPTY]: "during" }, () =>
        Promise.resolve(Deno.env.get(EMPTY)),
      );
      expect(result).toBe("during");
      expect(Deno.env.get(EMPTY)).toBe("before");
    } finally {
      Deno.env.delete(EMPTY);
    }
  });
});