From 3e6758f55ad37182eeced639a13f1bf05a95b02f Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 20 Apr 2026 22:31:58 +0100 Subject: [PATCH] test: share provider usage runtime mocks --- ...rovider-usage-plugin-runtime.test-mocks.ts | 30 +++++++++++++++++++ src/infra/provider-usage.load.test.ts | 27 ++++------------- src/infra/provider-usage.test.ts | 29 +++++------------- 3 files changed, 43 insertions(+), 43 deletions(-) create mode 100644 src/infra/provider-usage-plugin-runtime.test-mocks.ts diff --git a/src/infra/provider-usage-plugin-runtime.test-mocks.ts b/src/infra/provider-usage-plugin-runtime.test-mocks.ts new file mode 100644 index 00000000000..a68aba431da --- /dev/null +++ b/src/infra/provider-usage-plugin-runtime.test-mocks.ts @@ -0,0 +1,30 @@ +import { vi } from "vitest"; + +const resolveProviderUsageSnapshotWithPluginMock = vi.hoisted(() => + vi.fn( + async () => null, + ), +); + +vi.mock("../config/config.js", () => ({ + loadConfig: () => ({}), +})); + +vi.mock("../plugins/provider-runtime.js", async () => { + const actual = await vi.importActual( + "../plugins/provider-runtime.js", + ); + return { + ...actual, + resolveProviderUsageSnapshotWithPlugin: resolveProviderUsageSnapshotWithPluginMock, + }; +}); + +export function resetProviderUsageSnapshotWithPluginMock() { + resolveProviderUsageSnapshotWithPluginMock.mockReset(); + resolveProviderUsageSnapshotWithPluginMock.mockResolvedValue(null); +} + +export function getProviderUsageSnapshotWithPluginMock() { + return resolveProviderUsageSnapshotWithPluginMock; +} diff --git a/src/infra/provider-usage.load.test.ts b/src/infra/provider-usage.load.test.ts index a9e3c5f5c87..77cc312e5e8 100644 --- a/src/infra/provider-usage.load.test.ts +++ b/src/infra/provider-usage.load.test.ts @@ -1,5 +1,9 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; import { createProviderUsageFetch, makeResponse } from "../test-utils/provider-usage-fetch.js"; +import { + getProviderUsageSnapshotWithPluginMock, + resetProviderUsageSnapshotWithPluginMock, +} from "./provider-usage-plugin-runtime.test-mocks.js"; import { loadProviderUsageSummary } from "./provider-usage.load.js"; import { ignoredErrors } from "./provider-usage.shared.js"; import { @@ -11,31 +15,12 @@ import type { ProviderUsageSnapshot } from "./provider-usage.types.js"; type ProviderAuth = ProviderUsageAuth; const googleGeminiCliProvider = "google-gemini-cli" as unknown as ProviderAuth["provider"]; -const resolveProviderUsageSnapshotWithPluginMock = vi.hoisted(() => - vi.fn( - async () => null, - ), -); - -vi.mock("../config/config.js", () => ({ - loadConfig: () => ({}), -})); - -vi.mock("../plugins/provider-runtime.js", async () => { - const actual = await vi.importActual( - "../plugins/provider-runtime.js", - ); - return { - ...actual, - resolveProviderUsageSnapshotWithPlugin: resolveProviderUsageSnapshotWithPluginMock, - }; -}); +const resolveProviderUsageSnapshotWithPluginMock = getProviderUsageSnapshotWithPluginMock(); describe("provider-usage.load", () => { beforeEach(() => { vi.restoreAllMocks(); - resolveProviderUsageSnapshotWithPluginMock.mockReset(); - resolveProviderUsageSnapshotWithPluginMock.mockResolvedValue(null); + resetProviderUsageSnapshotWithPluginMock(); }); it("loads snapshots for copilot gemini codex and xiaomi", async () => { diff --git a/src/infra/provider-usage.test.ts b/src/infra/provider-usage.test.ts index 8de19f39a5f..143f996c952 100644 --- a/src/infra/provider-usage.test.ts +++ b/src/infra/provider-usage.test.ts @@ -1,5 +1,9 @@ -import { beforeEach, describe, expect, it, vi } from "vitest"; +import { beforeEach, describe, expect, it } from "vitest"; import { createProviderUsageFetch } from "../test-utils/provider-usage-fetch.js"; +import { + getProviderUsageSnapshotWithPluginMock, + resetProviderUsageSnapshotWithPluginMock, +} from "./provider-usage-plugin-runtime.test-mocks.js"; import { formatUsageReportLines, formatUsageSummaryLine, @@ -9,30 +13,11 @@ import { import { loadUsageWithAuth } from "./provider-usage.test-support.js"; import type { ProviderUsageSnapshot } from "./provider-usage.types.js"; -const resolveProviderUsageSnapshotWithPluginMock = vi.hoisted(() => - vi.fn( - async () => null, - ), -); - -vi.mock("../config/config.js", () => ({ - loadConfig: () => ({}), -})); - -vi.mock("../plugins/provider-runtime.js", async () => { - const actual = await vi.importActual( - "../plugins/provider-runtime.js", - ); - return { - ...actual, - resolveProviderUsageSnapshotWithPlugin: resolveProviderUsageSnapshotWithPluginMock, - }; -}); +const resolveProviderUsageSnapshotWithPluginMock = getProviderUsageSnapshotWithPluginMock(); describe("provider usage formatting", () => { beforeEach(() => { - resolveProviderUsageSnapshotWithPluginMock.mockReset(); - resolveProviderUsageSnapshotWithPluginMock.mockResolvedValue(null); + resetProviderUsageSnapshotWithPluginMock(); }); it("returns null when no usage is available", () => {