Import
import { invokeTrigger , defaultTriggerPayload } from "@prismatic-io/spectral/dist/testing" ;
Signature
export const invokeTrigger = async <
TInputs extends Inputs ,
TConfigVars extends ConfigVarResultCollection ,
TAllowsBranching extends boolean ,
TResult extends TriggerResult < TAllowsBranching , TriggerPayload >,
>(
{ perform } : TriggerDefinition < TInputs , TConfigVars , TAllowsBranching , TResult >,
context ?: Partial < ActionContext < TConfigVars >>,
payload ?: TriggerPayload ,
params ?: ActionInputParameters < TInputs >,
): Promise < InvokeReturn < TResult >>
invokeTrigger calls the perform function of a TriggerDefinition. It merges the payload you provide over a sensible default trigger payload and returns both the trigger result and a mock logger.
Parameters
trigger
TriggerDefinition
required
The trigger definition object to invoke. Only the perform function is used.
context
Partial<ActionContext<TConfigVars>>
Optional partial action context. Overrides the default mock context. See invoke for the default context fields.
Optional trigger payload. Merged over defaultTriggerPayload() — only the fields you supply override the defaults. Show default payload fields (from defaultTriggerPayload)
Field Default value headers["content-type"]"application/json"queryParameters{}rawBody.data{ foo: "bar" }rawBody.contentType"application/json"body.dataJSON.stringify({ foo: "bar" })body.contentType"application/json"pathFragment""webhookUrls["Flow 1"]"https://example.com"webhookApiKeys["Flow 1"]["example-123", "example-456"]invokeUrl"https://example.com"executionId"executionId"customer.id"customerId"instance.id"instanceId"flow.id"flowId"globalDebugfalse
params
ActionInputParameters<TInputs>
Optional input parameter values for the trigger. Defaults to an empty object when not provided.
Return value
interface InvokeReturn < TResult > {
result : TResult ;
loggerMock : ActionLogger ;
}
The value returned by the trigger’s perform function. For most triggers this is a TriggerResult containing a payload field.
A mock logger with jest/vitest spy functions. See loggerMock .
Examples
Basic trigger test
With custom payload
With trigger params
import { trigger } from "@prismatic-io/spectral" ;
import { invokeTrigger } from "@prismatic-io/spectral/dist/testing" ;
import { describe , expect , it } from "vitest" ;
const webhookTrigger = trigger ({
display: { label: "Webhook" , description: "Receive webhook events" },
inputs: {},
perform : async ( context , payload , params ) => {
return { payload };
},
scheduleSupport: "invalid" ,
synchronousResponseSupport: "valid" ,
});
describe ( "webhookTrigger" , () => {
it ( "returns the payload" , async () => {
const { result } = await invokeTrigger ( webhookTrigger );
expect ( result . payload ). toBeDefined ();
});
});
defaultTriggerPayload
The defaultTriggerPayload function returns a baseline TriggerPayload used by both invokeTrigger and invokeFlow. You can call it directly if you need to build a full payload by extending the defaults:
import { defaultTriggerPayload } from "@prismatic-io/spectral/dist/testing" ;
const payload = {
... defaultTriggerPayload (),
body: { data: "custom body" , contentType: "text/plain" },
};
invoke — invoke an action definition
invokeFlow — invoke a full CNI flow (trigger + execution)
loggerMock — the mock logger returned by invokeTrigger