AppSync
A collection of matchers to test AWS AppSync mapping templates and JS resolvers.
Helper Functions
appSyncResolver(input: AppSyncResolverInput)
appSyncResolver(input: AppSyncResolverInput)
Use the appSyncResolver
helper function to test JS resolvers.
code
: The path to a file containing anAPPSYNC_JS
resolver code. The path can either be absolute, or relative to the working directory (process.cwd()
).function
: The function to test. Must berequest
orresponse
.context
: The context object to be passed to the function
appSyncMappingTemplate(input: AppSyncMappingTemplateInput)
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)
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)
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)
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
Was this helpful?