# Zapier Testing Utilities

This package exposes testing utilities to help in testing Zapier apps.

## Setup

In your **test/jest.setup.js**:

```typescript
import { setApp } from "zapier-testing";
import App from "../src";

// This will create a zapier app tester
// for App
setApp(App);
```

## Test triggers, creates and searches:

To test a create, you can use the following:

```typescript
import { testCreate, Bundle } from "zapier-testing";

describe("Create Contact", () => {
  it("should create a contact", async () => {
    const bundle: Bundle = {
      inputData: {
        name: "John Doe",
      },
    };

    // for triggers use: testTrigger
    // for searches use: testSearch
    const response = await testCreate("create_contact", bundle);
    expect(response).toEqual({
      id: 1000,
      name: "John Doe",
    });
  });
});
```

## Test a random function outside of the app

Sometimes, you might want to have access to the `z` object without adding the function as an action to the app. In this case, you can use `zMock`:

```typescript
import { zMock, Bundle } from "zapier-testing";

describe("Create Contact", () => {
  it("should create a contact", async () => {
    const bundle: Bundle = {
      inputData: {
        name: "John Doe",
      },
    };

    // wrap your function
    const testFn = zMock.trigger(async (z, bundle) => {
      return [
        {
          id: 1,
          name: bundle.inputData.name,
        },
      ];
    });

    // now you can test the function
    const response = await testFn(bundle);
    expect(response).toEqual([
      {
        id: 1,
        name: "John Doe",
      },
    ]);
  });
});
```

## License

MIT
