import { createAnonymousSessionAdapter } from "../../src/adapters/auth/external-session-adapter.js"; import { createApplication } from "../../src/application/create-application.js"; /** * @param {{ * session?: import("../../src/application/ports/auth-session-port.js").AuthSessionPort, * preferences?: import("../../src/application/ports/storage-port.js").StoragePort, * diagnostics?: import("../../src/application/ports/telemetry-port.js").TelemetryPort, * releaseInfo?: import("../../src/application/ports/release-info-port.js").ReleaseInfoPort, * navigation?: { reload(): void }, * featureInputs?: Readonly> * }} [overrides] */ export function createTestApplication(overrides = {}) { return createApplication( { session: overrides.session ?? createAnonymousSessionAdapter(), preferences: overrides.preferences ?? { read: () => ({ ok: /** @type {const} */ (true), value: "system" }), write: () => ({ ok: /** @type {const} */ (true) }), remove: () => ({ ok: /** @type {const} */ (true) }), }, diagnostics: overrides.diagnostics ?? { emit: () => {} }, releaseInfo: overrides.releaseInfo ?? { getCurrent: async () => ({ buildId: "test-build", releaseId: "test-release", configSchemaVersion: "1", apiContractVersion: "1", assetManifestHash: "test-hash", routeChunks: { "route-home": "assets/home.js", }, }), refresh: async () => ({ buildId: "test-build", releaseId: "test-release", configSchemaVersion: "1", apiContractVersion: "1", assetManifestHash: "test-hash", routeChunks: { "route-home": "assets/home.js", }, }), }, navigation: overrides.navigation ?? { reload: () => {} }, }, overrides.featureInputs, ); }