UNPKG

@specifai-net/appsync-template-tester

Version:

Unit test AppSync VTL resolvers, with popular frameworks such as Jest

114 lines 13.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const util_dynamodb_1 = require("../util-dynamodb"); /** * Example responses from: * https://docs.aws.amazon.com/appsync/latest/devguide/resolver-util-reference.html#dynamodb-helpers-in-util-dynamodb */ describe("string", () => { const i = "foo"; const expected = { S: "foo" }; test("toString", () => { const res = (0, util_dynamodb_1.toString)(i); expect(res).toEqual(expected); }); test("toStringJson", () => { const res = (0, util_dynamodb_1.toStringJson)(i); expect(JSON.parse(res)).toEqual(expected); }); test("toDynamoDB", () => { const res = (0, util_dynamodb_1.toDynamoDB)(i); expect(res).toEqual(expected); }); }); describe("number", () => { const i = 12345; const expected = { N: 12345 }; test("toNumber", () => { const res = (0, util_dynamodb_1.toNumber)(i); expect(res).toEqual(expected); }); test("toNumberJson", () => { const res = (0, util_dynamodb_1.toNumberJson)(i); expect(JSON.parse(res)).toEqual(expected); }); test("toDynamoDB", () => { const res = (0, util_dynamodb_1.toDynamoDB)(i); expect(res).toEqual(expected); }); }); describe("boolean", () => { const i = true; const expected = { BOOL: true }; test("toBoolean", () => { const res = (0, util_dynamodb_1.toBoolean)(i); expect(res).toEqual(expected); }); test("toBooleanJson", () => { const res = (0, util_dynamodb_1.toBooleanJson)(i); expect(JSON.parse(res)).toEqual(expected); }); test("toDynamoDB", () => { const res = (0, util_dynamodb_1.toDynamoDB)(i); expect(res).toEqual(expected); }); }); describe("list", () => { const i = ["foo", 123, { bar: "baz" }]; const expected = { L: [ { S: "foo" }, { N: 123 }, { M: { bar: { S: "baz" }, }, }, ], }; test("toList", () => { const res = (0, util_dynamodb_1.toList)(i); expect(res).toEqual(expected); }); test("toListJson", () => { const res = (0, util_dynamodb_1.toListJson)(i); expect(JSON.parse(res)).toEqual(expected); }); test("toDynamoDB", () => { const res = (0, util_dynamodb_1.toDynamoDB)(i); expect(res).toEqual(expected); }); }); describe("map", () => { const i = { foo: "bar", baz: 1234, beep: ["boop"] }; const expected = { M: { foo: { S: "bar" }, baz: { N: 1234 }, beep: { L: [{ S: "boop" }], }, }, }; test("toMap", () => { const res = (0, util_dynamodb_1.toMap)(i); expect(res).toEqual(expected); }); test("toMapJson", () => { const res = (0, util_dynamodb_1.toMapJson)(i); expect(JSON.parse(res)).toEqual(expected); }); test("toDynamoDB", () => { const res = (0, util_dynamodb_1.toDynamoDB)(i); expect(res).toEqual(expected); }); test("toMapValues", () => { const res = (0, util_dynamodb_1.toMapValues)(i); expect(res).toEqual(expected.M); }); test("toMapValuesJson", () => { const res = (0, util_dynamodb_1.toMapValuesJson)(i); expect(JSON.parse(res)).toEqual(expected.M); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC1keW5hbW9kYi50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3RzL3V0aWwtZHluYW1vZGIudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG9EQWMwQjtBQUUxQjs7O0dBR0c7QUFFSCxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtJQUN0QixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDaEIsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFFOUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUU7UUFDcEIsTUFBTSxHQUFHLEdBQUcsSUFBQSx3QkFBUSxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtRQUN4QixNQUFNLEdBQUcsR0FBRyxJQUFBLDRCQUFZLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtRQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFBLDBCQUFVLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7SUFDdEIsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLE1BQU0sUUFBUSxH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QyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7UUFDdEIsTUFBTSxHQUFHLEdBQUcsSUFBQSwwQkFBVSxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtRQUN2QixNQUFNLEdBQUcsR0FBRyxJQUFBLDJCQUFXLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO1FBQzNCLE1BQU0sR0FBRyxHQUFHLElBQUEsK0JBQWUsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHRvU3RyaW5nLFxuICB0b051bWJlcixcbiAgdG9Cb29sZWFuLFxuICB0b0xpc3QsXG4gIHRvTWFwLFxuICB0b0R5bmFtb0RCLFxuICB0b1N0cmluZ0pzb24sXG4gIHRvTnVtYmVySnNvbixcbiAgdG9Cb29sZWFuSnNvbixcbiAgdG9MaXN0SnNvbixcbiAgdG9NYXBKc29uLFxuICB0b01hcFZhbHVlcyxcbiAgdG9NYXBWYWx1ZXNKc29uLFxufSBmcm9tIFwiLi4vdXRpbC1keW5hbW9kYlwiO1xuXG4vKipcbiAqIEV4YW1wbGUgcmVzcG9uc2VzIGZyb206XG4gKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3luYy9sYXRlc3QvZGV2Z3VpZGUvcmVzb2x2ZXItdXRpbC1yZWZlcmVuY2UuaHRtbCNkeW5hbW9kYi1oZWxwZXJzLWluLXV0aWwtZHluYW1vZGJcbiAqL1xuXG5kZXNjcmliZShcInN0cmluZ1wiLCAoKSA9PiB7XG4gIGNvbnN0IGkgPSBcImZvb1wiO1xuICBjb25zdCBleHBlY3RlZCA9IHsgUzogXCJmb29cIiB9O1xuXG4gIHRlc3QoXCJ0b1N0cmluZ1wiLCAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gdG9TdHJpbmcoaSk7XG4gICAgZXhwZWN0KHJlcykudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xuXG4gIHRlc3QoXCJ0b1N0cmluZ0pzb25cIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IHRvU3RyaW5nSnNvbihpKTtcbiAgICBleHBlY3QoSlNPTi5wYXJzZShyZXMpKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgfSk7XG5cbiAgdGVzdChcInRvRHluYW1vREJcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IHRvRHluYW1vREIoaSk7XG4gICAgZXhwZWN0KHJlcykudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwibnVtYmVyXCIsICgpID0+IHtcbiAgY29uc3QgaSA9IDEyMzQ1O1xuICBjb25zdCBleHBlY3RlZCA9IHsgTjogMTIzNDUgfTtcblxuICB0ZXN0KFwidG9OdW1iZXJcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IHRvTnVtYmVyKGkpO1xuICAgIGV4cGVjdChyZXMpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICB9KTtcblxuICB0ZXN0KFwidG9OdW1iZXJKc29uXCIsICgpID0+IHtcbiAgICBjb25zdCByZXMgPSB0b051bWJlckpzb24oaSk7XG4gICAgZXhwZWN0KEpTT04ucGFyc2UocmVzKSkudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xuXG4gIHRlc3QoXCJ0b0R5bmFtb0RCXCIsICgpID0+IHtcbiAgICBjb25zdCByZXMgPSB0b0R5bmFtb0RCKGkpO1xuICAgIGV4cGVjdChyZXMpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcImJvb2xlYW5cIiwgKCkgPT4ge1xuICBjb25zdCBpID0gdHJ1ZTtcbiAgY29uc3QgZXhwZWN0ZWQgPSB7IEJPT0w6IHRydWUgfTtcblxuICB0ZXN0KFwidG9Cb29sZWFuXCIsICgpID0+IHtcbiAgICBjb25zdCByZXMgPSB0b0Jvb2xlYW4oaSk7XG4gICAgZXhwZWN0KHJlcykudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xuXG4gIHRlc3QoXCJ0b0Jvb2xlYW5Kc29uXCIsICgpID0+IHtcbiAgICBjb25zdCByZXMgPSB0b0Jvb2xlYW5Kc29uKGkpO1xuICAgIGV4cGVjdChKU09OLnBhcnNlKHJlcykpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICB9KTtcblxuICB0ZXN0KFwidG9EeW5hbW9EQlwiLCAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gdG9EeW5hbW9EQihpKTtcbiAgICBleHBlY3QocmVzKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJsaXN0XCIsICgpID0+IHtcbiAgY29uc3QgaSA9IFtcImZvb1wiLCAxMjMsIHsgYmFyOiBcImJhelwiIH1dO1xuICBjb25zdCBleHBlY3RlZCA9IHtcbiAgICBMOiBbXG4gICAgICB7IFM6IFwiZm9vXCIgfSxcbiAgICAgIHsgTjogMTIzIH0sXG4gICAgICB7XG4gICAgICAgIE06IHtcbiAgICAgICAgICBiYXI6IHsgUzogXCJiYXpcIiB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuXG4gIHRlc3QoXCJ0b0xpc3RcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IHRvTGlzdChpKTtcbiAgICBleHBlY3QocmVzKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgfSk7XG5cbiAgdGVzdChcInRvTGlzdEpzb25cIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IHRvTGlzdEpzb24oaSk7XG4gICAgZXhwZWN0KEpTT04ucGFyc2UocmVzKSkudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xuXG4gIHRlc3QoXCJ0b0R5bmFtb0RCXCIsICgpID0+IHtcbiAgICBjb25zdCByZXMgPSB0b0R5bmFtb0RCKGkpO1xuICAgIGV4cGVjdChyZXMpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIm1hcFwiLCAoKSA9PiB7XG4gIGNvbnN0IGkgPSB7IGZvbzogXCJiYXJcIiwgYmF6OiAxMjM0LCBiZWVwOiBbXCJib29wXCJdIH07XG4gIGNvbnN0IGV4cGVjdGVkID0ge1xuICAgIE06IHtcbiAgICAgIGZvbzogeyBTOiBcImJhclwiIH0sXG4gICAgICBiYXo6IHsgTjogMTIzNCB9LFxuICAgICAgYmVlcDoge1xuICAgICAgICBMOiBbeyBTOiBcImJvb3BcIiB9XSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICB0ZXN0KFwidG9NYXBcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IHRvTWFwKGkpO1xuICAgIGV4cGVjdChyZXMpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICB9KTtcblxuICB0ZXN0KFwidG9NYXBKc29uXCIsICgpID0+IHtcbiAgICBjb25zdCByZXMgPSB0b01hcEpzb24oaSk7XG4gICAgZXhwZWN0KEpTT04ucGFyc2UocmVzKSkudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xuXG4gIHRlc3QoXCJ0b0R5bmFtb0RCXCIsICgpID0+IHtcbiAgICBjb25zdCByZXMgPSB0b0R5bmFtb0RCKGkpO1xuICAgIGV4cGVjdChyZXMpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICB9KTtcblxuICB0ZXN0KFwidG9NYXBWYWx1ZXNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IHRvTWFwVmFsdWVzKGkpO1xuICAgIGV4cGVjdChyZXMpLnRvRXF1YWwoZXhwZWN0ZWQuTSk7XG4gIH0pO1xuXG4gIHRlc3QoXCJ0b01hcFZhbHVlc0pzb25cIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IHRvTWFwVmFsdWVzSnNvbihpKTtcbiAgICBleHBlY3QoSlNPTi5wYXJzZShyZXMpKS50b0VxdWFsKGV4cGVjdGVkLk0pO1xuICB9KTtcbn0pO1xuIl19