File size: 1,858 Bytes
4c76b0d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// Runtime config tests cover plugin runtime config normalization and lookup.
import { beforeEach, describe, expect, it, vi } from "vitest";

const getRuntimeConfigMock = vi.fn();
const mutateConfigFileMock = vi.fn();
const replaceConfigFileMock = vi.fn();

vi.mock("../../config/io.runtime.js", () => ({
  getRuntimeConfig: () => getRuntimeConfigMock(),
}));

vi.mock("../../config/mutate.js", () => ({
  mutateConfigFile: (...args: unknown[]) => mutateConfigFileMock(...args),
  replaceConfigFile: (...args: unknown[]) => replaceConfigFileMock(...args),
}));

const { createRuntimeConfig } = await import("./runtime-config.js");

describe("createRuntimeConfig", () => {
  beforeEach(() => {
    getRuntimeConfigMock.mockReset();
    mutateConfigFileMock.mockReset();
    replaceConfigFileMock.mockReset();
    getRuntimeConfigMock.mockReturnValue({ plugins: {} });
  });

  it("reads config from the runtime snapshot", () => {
    const runtimeConfig = { plugins: { entries: {} } };
    getRuntimeConfigMock.mockReturnValue(runtimeConfig);

    expect(createRuntimeConfig().current()).toBe(runtimeConfig);
  });

  it("exposes canonical mutation helpers", async () => {
    mutateConfigFileMock.mockResolvedValue({ result: "updated" });
    replaceConfigFileMock.mockResolvedValue({ persistedHash: "hash" });
    const configApi = createRuntimeConfig();
    const mutateParams = { mutate: vi.fn() };
    const replaceParams = { nextConfig: { plugins: {} } };

    await expect(configApi.mutateConfigFile(mutateParams as never)).resolves.toEqual({
      result: "updated",
    });
    await expect(configApi.replaceConfigFile(replaceParams as never)).resolves.toEqual({
      persistedHash: "hash",
    });
    expect(mutateConfigFileMock).toHaveBeenCalledWith(mutateParams);
    expect(replaceConfigFileMock).toHaveBeenCalledWith(replaceParams);
  });
});