test.build/core/coordinators/config.coordinator.test.ts

test.build/core/coordinators/config.coordinator.test.ts is a file in Codebase Testing. 29 lines of code and 0 definitions.

import { describe, expect, it, vi } from "vitest";
import { existsSync, mkdtempSync, readdirSync } from "node:fs";
import { CONFIG_FILE_SUFFIX } from "@banes-lab/build-scripts/configuration/constants/config.constants.ts";
import type { absolutePath } from "@ssot/paths";
import { extractConfigs } from "@banes-lab/build-scripts/core/coordinators/config.coordinator.ts";
import { join } from "node:path";
import { tmpdir } from "node:os";
import { writeVerbatim } from "@govlab/canonical-write";

const target = vi.hoisted(() => ({ folder: "" }));

vi.mock("@ssot/paths", async (importOriginal) => {
    const original = await importOriginal<{ absolutePath: typeof absolutePath }>();
    return {
        ...original,
        absolutePath: (key: string, ...segments: string[]) =>
            key === "app.configs" ? target.folder : original.absolutePath(key, ...segments),
    };
});

describe("extractConfigs", () => {
    it("writes one neutralized config per tool into its folder and removes a file no tool writes", async () => {
        target.folder = mkdtempSync(join(tmpdir(), "banes-lab-configs-"));
        const stale = join(target.folder, "retired.config.txt");
        writeVerbatim(stale, "old");
        const count = await extractConfigs();
        const written = readdirSync(target.folder);
        expect(written).toHaveLength(count);
        expect(written.every((name) => name.endsWith(CONFIG_FILE_SUFFIX))).toBe(true);
        expect(existsSync(stale)).toBe(false);
    }, 120_000);
});