Files
tech-log-frontend/tests/helpers/create-test-application.ts
T

60 lines
2.0 KiB
TypeScript

import { createAnonymousSessionAdapter } from "../../src/adapters/auth/external-session-adapter.ts";
import {
createApplication,
type ApplicationOutputPorts,
} from "../../src/application/create-application.ts";
import type { ApplicationFeatureInputs } from "../../src/application/ports/in/application-api.ts";
import { createRuntimeCapabilitiesStub } from "./runtime-capabilities-stub.ts";
type TestApplicationOverrides = Partial<ApplicationOutputPorts> &
Readonly<{
featureInputs?: Readonly<Partial<ApplicationFeatureInputs>>;
}>;
export function createTestApplication(
overrides: TestApplicationOverrides = {},
) {
return createApplication(
{
session: overrides.session ?? createAnonymousSessionAdapter(),
preferences:
overrides.preferences ??
{
read: () => ({ ok: true as const, value: "system" }),
write: () => ({ ok: true as const }),
remove: () => ({ ok: true as const }),
},
diagnostics: overrides.diagnostics ?? { record: () => {} },
telemetry: overrides.telemetry ?? { 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",
},
}),
},
runtimeCapabilities:
overrides.runtimeCapabilities ?? createRuntimeCapabilitiesStub(),
navigation: overrides.navigation ?? { reload: () => {} },
},
overrides.featureInputs,
);
}