Skip to content

PURISTA API


PURISTA API / @purista/core / createCommandTestHarness

Function: createCommandTestHarness()

createCommandTestHarness<TServiceBuilder, TCommandBuilder>(serviceBuilder, commandBuilder, options?): Promise<{ destroy: () => Promise<void>; eventBridge: EventBridge; run: (input) => Promise<{ message: Readonly<Omit<{ contentEncoding: "utf-8"; contentType: "application/json"; correlationId: string; eventName?: string; id: string; isHandledError: boolean; messageType: CommandErrorResponse; otp?: string; payload: { data?: unknown; message: string; status: StatusCode; }; principalId?: string; receiver: { instanceId: string; serviceName: string; serviceTarget: string; serviceVersion: string; }; sender: { instanceId: string; serviceName: string; serviceTarget: string; serviceVersion: string; }; tenantId?: string; timestamp: number; traceId?: string; }, "instanceId">> | { contentEncoding: string; contentType: string; correlationId: string; eventName?: string; id: string; messageType: CommandSuccessResponse; otp: string; payload: unknown; principalId?: string; receiver: { instanceId: string; serviceName: string; serviceTarget: string; serviceVersion: string; }; sender: { instanceId: string; serviceName: string; serviceTarget: string; serviceVersion: string; }; tenantId?: string; timestamp: number; traceId?: string; }; result: Infer<InferCommandBuilderConfig<TCommandBuilder>["OutputSchema"]> | undefined; }>; service: Service<ServiceClassTypes<EmptyObject, EmptyObject>>; stubs: { eventBridge: Record<string, SinonStub<any[], any>> | undefined; }; }>

Defined in: testing/createCommandTestHarness.ts:39

Boot a real service instance and execute one command through the PURISTA runtime.

Use this helper when you want to test validation, guards, emits, and runtime wiring instead of calling the command handler directly.

Type Parameters

TServiceBuilder

TServiceBuilder extends ServiceBuilder<ServiceBuilderTypes>

TCommandBuilder

TCommandBuilder extends CommandDefinitionBuilder<any, any>

Parameters

serviceBuilder

TServiceBuilder

commandBuilder

TCommandBuilder

options?

CreateCommandTestHarnessOptions<TServiceBuilder> = ...

Returns

Promise<{ destroy: () => Promise<void>; eventBridge: EventBridge; run: (input) => Promise<{ message: Readonly<Omit<{ contentEncoding: "utf-8"; contentType: "application/json"; correlationId: string; eventName?: string; id: string; isHandledError: boolean; messageType: CommandErrorResponse; otp?: string; payload: { data?: unknown; message: string; status: StatusCode; }; principalId?: string; receiver: { instanceId: string; serviceName: string; serviceTarget: string; serviceVersion: string; }; sender: { instanceId: string; serviceName: string; serviceTarget: string; serviceVersion: string; }; tenantId?: string; timestamp: number; traceId?: string; }, "instanceId">> | { contentEncoding: string; contentType: string; correlationId: string; eventName?: string; id: string; messageType: CommandSuccessResponse; otp: string; payload: unknown; principalId?: string; receiver: { instanceId: string; serviceName: string; serviceTarget: string; serviceVersion: string; }; sender: { instanceId: string; serviceName: string; serviceTarget: string; serviceVersion: string; }; tenantId?: string; timestamp: number; traceId?: string; }; result: Infer<InferCommandBuilderConfig<TCommandBuilder>["OutputSchema"]> | undefined; }>; service: Service<ServiceClassTypes<EmptyObject, EmptyObject>>; stubs: { eventBridge: Record<string, SinonStub<any[], any>> | undefined; }; }>