From 011b93ecc1f48d3a2730e490e03bdbc5193e3cc2 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Wed, 16 Sep 2026 11:40:42 -0700 Subject: [PATCH] update tests --- .../network/pageSpeedProvider.test.ts | 4 +-- .../test/unit/services/egressService.test.ts | 24 ++++++++--------- .../test/unit/services/proxyResolver.test.ts | 14 +++++----- .../unit/services/settingsService.test.ts | 26 +++++++++---------- 4 files changed, 34 insertions(+), 34 deletions(-) diff --git a/server/test/unit/providers/network/pageSpeedProvider.test.ts b/server/test/unit/providers/network/pageSpeedProvider.test.ts index 2767e8e56..7aa4ab0bc 100644 --- a/server/test/unit/providers/network/pageSpeedProvider.test.ts +++ b/server/test/unit/providers/network/pageSpeedProvider.test.ts @@ -33,7 +33,7 @@ const createMockHttpProvider = () => const createMockSettingsService = (apiKey?: string) => ({ - getDBSettings: jest.fn().mockResolvedValue({ pagespeedApiKey: apiKey }), + getCachedDBSettings: jest.fn().mockResolvedValue({ pagespeedApiKey: apiKey }), }) as unknown as jest.Mocked; const createProvider = (opts?: { apiKey?: string }) => { @@ -154,7 +154,7 @@ describe("PageSpeedProvider", () => { const logger = createMockLogger(); const httpProvider = createMockHttpProvider(); const settingsService = { - getDBSettings: jest.fn().mockResolvedValue(null), + getCachedDBSettings: jest.fn().mockResolvedValue(null), } as unknown as jest.Mocked; const provider = new PageSpeedProvider(httpProvider, settingsService, logger as any); diff --git a/server/test/unit/services/egressService.test.ts b/server/test/unit/services/egressService.test.ts index 72f76ac02..e339ef7ec 100644 --- a/server/test/unit/services/egressService.test.ts +++ b/server/test/unit/services/egressService.test.ts @@ -66,7 +66,7 @@ const degradedRepository = (overrides?: Record) => ({ const createService = (overrides?: Record) => { const defaults = { - settingsService: { getDBSettings: jest.fn().mockResolvedValue(makeSettings()) }, + settingsService: { getCachedDBSettings: jest.fn().mockResolvedValue(makeSettings()) }, egressStateRepository: { findSingleton: jest.fn().mockResolvedValue(makeState()), recordProbe: jest.fn().mockResolvedValue(makeState()), @@ -201,7 +201,7 @@ describe("EgressService", () => { describe("assessAfterFailure", () => { it("returns null and does not probe or record when the feature is disabled", async () => { const { service, defaults } = createService({ - settingsService: { getDBSettings: jest.fn().mockResolvedValue(makeSettings({ egressCheckEnabled: false })) }, + settingsService: { getCachedDBSettings: jest.fn().mockResolvedValue(makeSettings({ egressCheckEnabled: false })) }, }); const result = await service.assessAfterFailure(); @@ -299,7 +299,7 @@ describe("EgressService", () => { it("uses the default poll interval for the recovery job when the setting is missing or invalid", async () => { const { service, defaults } = createService({ - settingsService: { getDBSettings: jest.fn().mockResolvedValue(makeSettings({ egressPollIntervalSeconds: undefined })) }, + settingsService: { getCachedDBSettings: jest.fn().mockResolvedValue(makeSettings({ egressPollIntervalSeconds: undefined })) }, networkService: { requestStatus: statusFor([]) }, }); @@ -310,7 +310,7 @@ describe("EgressService", () => { it("falls back to the default targets when the configured list is empty", async () => { const { service, defaults } = createService({ - settingsService: { getDBSettings: jest.fn().mockResolvedValue(makeSettings({ egressCheckTargets: [] })) }, + settingsService: { getCachedDBSettings: jest.fn().mockResolvedValue(makeSettings({ egressCheckTargets: [] })) }, }); await service.assessAfterFailure(); @@ -320,7 +320,7 @@ describe("EgressService", () => { it("returns null and logs when the assessment itself fails", async () => { const { service, defaults } = createService({ - settingsService: { getDBSettings: jest.fn().mockRejectedValue(new Error("db down")) }, + settingsService: { getCachedDBSettings: jest.fn().mockRejectedValue(new Error("db down")) }, }); const result = await service.assessAfterFailure(); @@ -339,7 +339,7 @@ describe("EgressService", () => { const results = await Promise.all([service.assessAfterFailure(), service.assessAfterFailure(), service.assessAfterFailure()]); expect(results).toEqual(["ok", "ok", "ok"]); - expect(defaults.settingsService.getDBSettings).toHaveBeenCalledTimes(1); + expect(defaults.settingsService.getCachedDBSettings).toHaveBeenCalledTimes(1); expect(defaults.networkService.requestStatus).toHaveBeenCalledTimes(2); // one call per target, once expect(defaults.egressStateRepository.recordProbe).toHaveBeenCalledTimes(1); }); @@ -372,18 +372,18 @@ describe("EgressService", () => { }); it("reuses a disabled result instead of re-reading settings for every failure", async () => { - const getDBSettings = jest.fn().mockResolvedValue(makeSettings({ egressCheckEnabled: false })); - const { service } = createService({ settingsService: { getDBSettings } }); + const getCachedDBSettings = jest.fn().mockResolvedValue(makeSettings({ egressCheckEnabled: false })); + const { service } = createService({ settingsService: { getCachedDBSettings } }); expect(await service.assessAfterFailure()).toBeNull(); expect(await service.assessAfterFailure()).toBeNull(); - expect(getDBSettings).toHaveBeenCalledTimes(1); + expect(getCachedDBSettings).toHaveBeenCalledTimes(1); }); it("does not cache an internal failure", async () => { - const getDBSettings = jest.fn().mockRejectedValueOnce(new Error("db down")).mockResolvedValue(makeSettings()); - const { service, defaults } = createService({ settingsService: { getDBSettings } }); + const getCachedDBSettings = jest.fn().mockRejectedValueOnce(new Error("db down")).mockResolvedValue(makeSettings()); + const { service, defaults } = createService({ settingsService: { getCachedDBSettings } }); expect(await service.assessAfterFailure()).toBeNull(); expect(await service.assessAfterFailure()).toBe("ok"); @@ -451,7 +451,7 @@ describe("EgressService", () => { it("releases the job without probing when the feature has been disabled mid-episode", async () => { const { service, defaults } = createService({ - settingsService: { getDBSettings: jest.fn().mockResolvedValue(makeSettings({ egressCheckEnabled: false })) }, + settingsService: { getCachedDBSettings: jest.fn().mockResolvedValue(makeSettings({ egressCheckEnabled: false })) }, egressStateRepository: degradedRepository(), }); diff --git a/server/test/unit/services/proxyResolver.test.ts b/server/test/unit/services/proxyResolver.test.ts index a8f2871d7..7c428aa94 100644 --- a/server/test/unit/services/proxyResolver.test.ts +++ b/server/test/unit/services/proxyResolver.test.ts @@ -27,7 +27,7 @@ const makeProxy = (overrides?: Partial): Proxy => const createResolver = (overrides?: Record) => { const defaults = { proxiesRepository: { findByIdOrNull: jest.fn<() => Promise>().mockResolvedValue(makeProxy()) }, - settingsService: { getCachedDbSettings: jest.fn<() => Promise>().mockResolvedValue({ globalProxyEnabled: true, globalProxyId: "p1" }) }, + settingsService: { getCachedDBSettings: jest.fn<() => Promise>().mockResolvedValue({ globalProxyEnabled: true, globalProxyId: "p1" }) }, logger: createMockLogger(), ttlMs: 60_000, ...overrides, @@ -46,7 +46,7 @@ describe("ProxyResolver", () => { expect(result).toBeUndefined(); expect(defaults.proxiesRepository.findByIdOrNull).not.toHaveBeenCalled(); - expect(defaults.settingsService.getCachedDbSettings).not.toHaveBeenCalled(); + expect(defaults.settingsService.getCachedDBSettings).not.toHaveBeenCalled(); }); it("returns undefined for proxyMode 'none' without calling settings", async () => { @@ -55,7 +55,7 @@ describe("ProxyResolver", () => { const result = await resolver.resolve(makeMonitor({ proxyMode: "none" })); expect(result).toBeUndefined(); - expect(defaults.settingsService.getCachedDbSettings).not.toHaveBeenCalled(); + expect(defaults.settingsService.getCachedDBSettings).not.toHaveBeenCalled(); }); // ── custom mode ─────────────────────────────────────────────────────────── @@ -94,7 +94,7 @@ describe("ProxyResolver", () => { it("returns undefined when the global proxy is disabled, without a repo call", async () => { const { resolver, defaults } = createResolver({ - settingsService: { getCachedDbSettings: jest.fn<() => Promise>().mockResolvedValue({ globalProxyEnabled: false, globalProxyId: "p1" }) }, + settingsService: { getCachedDBSettings: jest.fn<() => Promise>().mockResolvedValue({ globalProxyEnabled: false, globalProxyId: "p1" }) }, }); const result = await resolver.resolve(makeMonitor({ proxyMode: "inherit" })); @@ -114,7 +114,7 @@ describe("ProxyResolver", () => { it("returns undefined when the global proxy is enabled but globalProxyId is null, without a repo call", async () => { const { resolver, defaults } = createResolver({ - settingsService: { getCachedDbSettings: jest.fn<() => Promise>().mockResolvedValue({ globalProxyEnabled: true, globalProxyId: null }) }, + settingsService: { getCachedDBSettings: jest.fn<() => Promise>().mockResolvedValue({ globalProxyEnabled: true, globalProxyId: null }) }, }); const result = await resolver.resolve(makeMonitor({ proxyMode: "inherit" })); @@ -140,7 +140,7 @@ describe("ProxyResolver", () => { const result = await resolver.resolve(makeMonitor({ proxyMode: "garbage" as Monitor["proxyMode"] })); expect(result).toBe("http://proxy.example.com:8080"); - expect(defaults.settingsService.getCachedDbSettings).toHaveBeenCalled(); + expect(defaults.settingsService.getCachedDBSettings).toHaveBeenCalled(); }); // ── never throws ────────────────────────────────────────────────────────── @@ -158,7 +158,7 @@ describe("ProxyResolver", () => { it("returns undefined and warns when the settings service throws", async () => { const { resolver, defaults } = createResolver({ - settingsService: { getCachedDbSettings: jest.fn<() => Promise>().mockRejectedValue(new Error("db down")) }, + settingsService: { getCachedDBSettings: jest.fn<() => Promise>().mockRejectedValue(new Error("db down")) }, }); const result = await resolver.resolve(makeMonitor({ proxyMode: "inherit" })); diff --git a/server/test/unit/services/settingsService.test.ts b/server/test/unit/services/settingsService.test.ts index c1f39bb5a..b932f8892 100644 --- a/server/test/unit/services/settingsService.test.ts +++ b/server/test/unit/services/settingsService.test.ts @@ -172,14 +172,14 @@ describe("SettingsService", () => { }); }); - // ── getCachedDbSettings ───────────────────────────────────────────────── + // ── getCachedDBSettings ───────────────────────────────────────────────── - describe("getCachedDbSettings", () => { + describe("getCachedDBSettings", () => { it("serves a second call within the TTL from cache", async () => { const { service, settingsRepository } = createService(); - const first = await service.getCachedDbSettings(); - const second = await service.getCachedDbSettings(); + const first = await service.getCachedDBSettings(); + const second = await service.getCachedDBSettings(); expect(second).toBe(first); expect(settingsRepository.findSingleton).toHaveBeenCalledTimes(1); @@ -188,8 +188,8 @@ describe("SettingsService", () => { it("refetches after the TTL expires", async () => { const { service, settingsRepository } = createService(undefined, 0); - await service.getCachedDbSettings(); - await service.getCachedDbSettings(); + await service.getCachedDBSettings(); + await service.getCachedDBSettings(); expect(settingsRepository.findSingleton).toHaveBeenCalledTimes(2); }); @@ -197,7 +197,7 @@ describe("SettingsService", () => { it("shares one in-flight fetch between concurrent calls", async () => { const { service, settingsRepository } = createService(); - await Promise.all([service.getCachedDbSettings(), service.getCachedDbSettings(), service.getCachedDbSettings()]); + await Promise.all([service.getCachedDBSettings(), service.getCachedDBSettings(), service.getCachedDBSettings()]); expect(settingsRepository.findSingleton).toHaveBeenCalledTimes(1); }); @@ -206,17 +206,17 @@ describe("SettingsService", () => { const { service, settingsRepository } = createService(); (settingsRepository.findSingleton as jest.Mock).mockRejectedValueOnce(new Error("db down")).mockResolvedValueOnce(makeSettings()); - await expect(service.getCachedDbSettings()).rejects.toThrow("db down"); - await expect(service.getCachedDbSettings()).resolves.toEqual(makeSettings()); + await expect(service.getCachedDBSettings()).rejects.toThrow("db down"); + await expect(service.getCachedDBSettings()).resolves.toEqual(makeSettings()); expect(settingsRepository.findSingleton).toHaveBeenCalledTimes(2); }); it("refetches after updateDbSettings so the write is visible immediately", async () => { const { service, settingsRepository } = createService(); - await service.getCachedDbSettings(); + await service.getCachedDBSettings(); await service.updateDbSettings({ checkTTL: 60 }); - await service.getCachedDbSettings(); + await service.getCachedDBSettings(); expect(settingsRepository.findSingleton).toHaveBeenCalledTimes(2); }); @@ -224,9 +224,9 @@ describe("SettingsService", () => { it("refetches after removeEgressNotification", async () => { const { service, settingsRepository } = createService(); - await service.getCachedDbSettings(); + await service.getCachedDBSettings(); await service.removeEgressNotification("notif-1"); - await service.getCachedDbSettings(); + await service.getCachedDBSettings(); expect(settingsRepository.findSingleton).toHaveBeenCalledTimes(2); });