AppSync

A collection of matchers to test AWS AppSync mapping templates and JS resolvers.

Helper Functions

appSyncResolver(input: AppSyncResolverInput)

Use the appSyncResolver helper function to test JS resolvers.

  • code: The path to a file containing an APPSYNC_JS resolver code. The path can either be absolute, or relative to the working directory (process.cwd()).

  • function: The function to test. Must be request or response.

  • context: The context object to be passed to the function

appSyncMappingTemplate(input: AppSyncMappingTemplateInput)

Use the appSyncMappingTemplate helper function to test VTL mapping templates.

  • template: The path to a file containing a mapping template. The path can either be absolute, or relative to the working directory (process.cwd()).

  • context: The context object to be injected into the template

Matchers

toEvaluateTo<E>(expected: E)

Asserts that a mapping template or resolver evaluates to a given object for a given context.

// matching as a string
await expect(
  appSyncResolver({
    code: __dirname + '/resolver.js',
    function: 'request',
    context: {
      arguments: {
        id: '123',
      },
    },
  }),
).toEvaluateTo<DynamoDBGetItemRequest>({
  operation: 'GetItem',
  key: {
    pk: { S: '123' },
  },
});

toEvaluateToSnapshot(propertiesOrHint?: string, hint?: string)

Asserts that the evaluated template matches the most recent snapshot. It works similarly to jest's toMatchSnapshot.

await expect(
  appSyncMappingTemplate({
    template: fs.readFileSync('tempalte.vtl', { encoding: 'utf8' }),
    context: {
      arguments: {
        id: '123',
      },
    },
  }),
).toEvaluateToSnapshot();

toEvaluateToInlineSnapshot(propertiesOrHint?: string, hint?: string)

Asserts that the evaluated template matches the most recent snapshot. It works similarly to jest's toMatchInlineSnapshot.

await expect(
  appSyncMappingTemplate({
    template: fs.readFileSync('tempalte.vtl', { encoding: 'utf8' }),
    context: {
      arguments: {
        id: '789',
      },
    },
  }),
).toEvaluateToInlineSnapshot(`
  Object {
    "key": Object {
      "pk": Object {
        "S": "789",
      },
    },
    "operation": "GetItem",
    "version": "2017-02-28",
  }
`);

Last updated