@specifai-net/appsync-template-tester
Version:
Unit test AppSync VTL resolvers, with popular frameworks such as Jest
114 lines • 13.3 kB
JavaScript
;
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