/** * This module provides functions to help developers unit * test custom components prior to publishing them. For * information on unit testing, check out our docs: * https://prismatic.io/docs/custom-connectors/unit-testing/ */ import { ActionPerformReturn as ServerActionPerformReturn, TriggerPayload, TriggerResult, ConnectionValue, ActionLogger, Component, DataSourceResult, DataSourceContext } from "./serverTypes"; import { ActionContext, ConnectionDefinition, ActionDefinition, TriggerDefinition, Inputs, ActionInputParameters, DataSourceDefinition, ActionPerformReturn as InvokeActionPerformReturn, TriggerResult as InvokeTriggerResult, DataSourceType, DataSourceResult as InvokeDataSourceResult, TriggerEventFunctionReturn, Flow, ConfigVarResultCollection, ComponentManifest } from "./types"; /** * Create a test connection to use when testing your custom component locally. See * https://prismatic.io/docs/custom-connectors/unit-testing/#providing-test-connection-inputs-to-an-action-test */ export declare const createConnection: ({ key }: T, values: Record, tokenValues?: Record, displayName?: string) => ConnectionValue; export declare const defaultConnectionValueEnvironmentVariable = "PRISMATIC_CONNECTION_VALUE"; /** * Source a test connection from an environment variable for local testing. See * https://prismatic.io/docs/custom-connectors/unit-testing/#access-connections-for-local-testing */ export declare const connectionValue: (envVarKey?: string) => ConnectionValue; /** * Pre-built mock of ActionLogger. Suitable for asserting logs are created as expected. See * https://prismatic.io/docs/custom-connectors/unit-testing/#verifying-correct-logging-in-action-tests * for information on testing correct logging behavior in your custom component. */ export declare const loggerMock: () => ActionLogger; /** * Creates basic component mocks based on the CNI's component registry. * You may pass mock overrides in the second argument, e.g.: * * createMockContextComponents(myManifest, { * actions: { * myComponentName: { * myComponentAction: () => Promise.resolve({ data: "my test data "}), * } * }, * }); */ export declare const createMockContextComponents: Promise>(registry: Record, mocks?: { actions: Record>; }) => Record>; /** * The type of data returned by an `invoke()` function used for unit testing component actions and triggers. */ interface InvokeReturn { result: ReturnData; loggerMock: ActionLogger; } /** * Invokes specified ActionDefinition perform function using supplied params * and optional context. Accepts a generic type matching ActionPerformReturn as a convenience * to avoid extra casting within test methods. Returns an InvokeResult containing both the * action result and a mock logger for asserting logging. */ export declare const invoke: >({ perform }: ActionDefinition, params: ActionInputParameters, context?: Partial>) => Promise>; export declare const defaultTriggerPayload: () => TriggerPayload; /** * Invokes specified TriggerDefinition perform function using supplied params * and optional context. Accepts a generic type matching TriggerResult as a convenience * to avoid extra casting within test methods. Returns an InvokeResult containing both the * trigger result and a mock logger for asserting logging. */ export declare const invokeTrigger: >({ perform }: TriggerDefinition, context?: Partial>, payload?: TriggerPayload, params?: ActionInputParameters) => Promise>; /** * Invokes specified DataSourceDefinition perform function using supplied params. * Accepts a generic type matching DataSourceResult as a convenience to avoid extra * casting within test methods. Returns a DataSourceResult. */ export declare const invokeDataSource: ({ perform }: DataSourceDefinition, params: ActionInputParameters, context?: Partial>) => Promise>; type TestConnectionValue = Pick; type TestConfigVarValues = Record; type ToTestValues = { [K in keyof TConfigVars]: TConfigVars[K] extends ConnectionDefinition ? TestConnectionValue : string; }; /** * Invokes specified Flow of a Code Native Integration using supplied params. * Runs the Trigger and then the Action function and returns the result of the Action. See * https://prismatic.io/docs/integrations/triggers/cross-flow/#using-cross-flow-triggers-in-code-native */ export declare const invokeFlow: >(flow: Flow, { configVars, context, payload, }?: { configVars?: TConfigVarValues; context?: Partial>; payload?: Partial; }) => Promise>>; export declare class ComponentTestHarness { component: TComponent; constructor(component: TComponent); private buildParams; /** * Source a test connection from an environment variable for local testing. See * https://prismatic.io/docs/custom-connectors/unit-testing/#access-connections-for-local-testing */ connectionValue({ key }: ConnectionDefinition): ConnectionValue; /** * Invoke a trigger by its key within a unit test. See * https://prismatic.io/docs/custom-connectors/unit-testing/ */ trigger(key: string, payload?: TriggerPayload, params?: Record, context?: Partial>): Promise; /** * Invoke a trigger's onInstanceDeploy function by its key within a unit test. See * https://prismatic.io/docs/custom-connectors/unit-testing/ */ triggerOnInstanceDeploy(key: string, params?: Record, context?: Partial>): Promise; /** * Invoke a trigger's onInstanceDelete function by its key within a unit test. See * https://prismatic.io/docs/custom-connectors/unit-testing/ */ triggerOnInstanceDelete(key: string, params?: Record, context?: Partial>): Promise; /** * Invoke an action by its key within a unit test. See * https://prismatic.io/docs/custom-connectors/unit-testing/ */ action(key: string, params?: Record, context?: Partial>): Promise; /** * Invoke a data source by its key within a unit test. See * https://prismatic.io/docs/custom-connectors/unit-testing/ */ dataSource(key: string, params?: Record, context?: Partial>): Promise; } /** * Create a testing harness to test a custom component's actions, triggers and data sources. See * https://prismatic.io/docs/custom-connectors/unit-testing/ */ export declare const createHarness: (component: TComponent) => ComponentTestHarness; declare const _default: { loggerMock: () => ActionLogger; invoke: >({ perform }: ActionDefinition, params: ActionInputParameters, context?: Partial>) => Promise>; invokeTrigger: >({ perform }: TriggerDefinition, context?: Partial>, payload?: TriggerPayload, params?: ActionInputParameters) => Promise>; createHarness: (component: TComponent) => ComponentTestHarness; invokeDataSource: ({ perform }: DataSourceDefinition, params: ActionInputParameters, context?: Partial>) => Promise>; }; export default _default;