60 lines
2.0 KiB
TypeScript
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,
|
|
);
|
|
}
|