Skip to main content

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.
payload
TriggerPayload
Optional trigger payload. Merged over defaultTriggerPayload() — only the fields you supply override the defaults.
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;
}
result
TResult
required
The value returned by the trigger’s perform function. For most triggers this is a TriggerResult containing a payload field.
loggerMock
ActionLogger
required
A mock logger with jest/vitest spy functions. See loggerMock.

Examples

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