UNPKG

@specifai-net/appsync-template-tester

Version:

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

82 lines 13.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const array_1 = require("../array"); const map_1 = require("../map"); const string_1 = require("../string"); const mapper_1 = require("../mapper"); describe("JavaMap", () => { let identityMapper = jest.fn().mockImplementation((val) => val); beforeEach(() => { identityMapper = jest.fn().mockImplementation((val) => val); }); it("New Map", () => { const obj = { foo: 1, bar: 2 }; const map = new map_1.JavaMap(obj, identityMapper); expect(map.toJSON()).toEqual(obj); }); it("clear", () => { const obj = { foo: 1, bar: 2 }; const map = new map_1.JavaMap(obj, identityMapper); map.clear(); expect(map.toJSON()).toEqual({}); }); it("containsKey", () => { const obj = { foo: 1, bar: 2 }; const map = new map_1.JavaMap(obj, identityMapper); expect(map.containsKey("foo")).toBeTruthy(); expect(map.containsKey("bax")).toBeFalsy(); }); it("containsValue", () => { const obj = { foo: "Foo Value", bar: "Bar Value" }; const map = new map_1.JavaMap(obj, identityMapper); expect(map.containsValue("Foo Value")).toBeTruthy(); expect(map.containsKey("bax value")).toBeFalsy(); }); it("entrySet", () => { const obj = { foo: "Foo Value", bar: "Bar Value" }; const map = new map_1.JavaMap(obj, identityMapper); expect(map.entrySet().toJSON()).toEqual([ { key: "foo", value: "Foo Value" }, { key: "bar", value: "Bar Value" }, ]); }); it("equal", () => { const obj = { foo: "Foo Value", bar: "Bar Value" }; const map = new map_1.JavaMap(obj, identityMapper); const map2 = new map_1.JavaMap(obj, identityMapper); expect(map.equals(map2)).toBeTruthy(); }); it("get", () => { const obj = { foo: "Foo Value", bar: "Bar Value" }; const map = new map_1.JavaMap(obj, identityMapper); expect(map.get("foo")).toEqual("Foo Value"); expect(map.get("foo1")).toBeNull(); }); it("isEmpty", () => { const obj = { foo: "Foo Value", bar: "Bar Value" }; const map = new map_1.JavaMap(obj, identityMapper); expect(map.isEmpty()).toBeFalsy(); expect(new map_1.JavaMap({}, identityMapper).isEmpty()).toBeTruthy(); }); it("keySet", () => { const obj = { foo: "Foo Value", bar: "Bar Value" }; const map = new map_1.JavaMap(obj, identityMapper); expect(map.keySet().toJSON()).toEqual(["foo", "bar"]); }); it("keySet returns a JavaArray with each element of type JavaString", () => { const obj = { foo: "Foo Value", bar: "Bar Value" }; const map = new map_1.JavaMap(obj, mapper_1.valueMapper); expect(map.keySet()).toEqual(new array_1.JavaArray([new string_1.JavaString("foo"), new string_1.JavaString("bar")], mapper_1.valueMapper)); }); it("put", () => { const map = new map_1.JavaMap({}, identityMapper); map.put("foo", "Foo Value"); expect(map.toJSON()).toEqual({ foo: "Foo Value" }); }); it("putAll", () => { const map = new map_1.JavaMap({}, identityMapper); map.putAll({ foo: "Foo Value", bar: "Bar Value" }); expect(map.toJSON()).toEqual({ foo: "Foo Value", bar: "Bar Value" }); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdmFsdWUtbWFwcGVyL3Rlc3RzL21hcC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0NBQXFDO0FBQ3JDLGdDQUFpQztBQUNqQyxzQ0FBdUM7QUFDdkMsc0NBQWtEO0FBRWxELFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO0lBQ3ZCLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFaEUsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLGNBQWMsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ0gsRUFBRSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7UUFDakIsTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUMvQixNQUFNLEdBQUcsR0FBRyxJQUFJLGFBQU8sQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDN0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQ2YsTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUMvQixNQUFNLEdBQUcsR0FBRyxJQUFJLGFBQU8sQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDN0MsR0FBRyxDQUFDLEtB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LENBQUMsRUFBRSxJQUFJLG1CQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxvQkFBTSxDQUFDLENBQ3RFLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFO1FBQ2IsTUFBTSxHQUFHLEdBQUcsSUFBSSxhQUFPLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQzVDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ2hCLE1BQU0sR0FBRyxHQUFHLElBQUksYUFBTyxDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUM1QyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNuRCxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSmF2YUFycmF5IH0gZnJvbSBcIi4uL2FycmF5XCI7XG5pbXBvcnQgeyBKYXZhTWFwIH0gZnJvbSBcIi4uL21hcFwiO1xuaW1wb3J0IHsgSmF2YVN0cmluZyB9IGZyb20gXCIuLi9zdHJpbmdcIjtcbmltcG9ydCB7IHZhbHVlTWFwcGVyIGFzIG1hcHBlciB9IGZyb20gXCIuLi9tYXBwZXJcIjtcblxuZGVzY3JpYmUoXCJKYXZhTWFwXCIsICgpID0+IHtcbiAgbGV0IGlkZW50aXR5TWFwcGVyID0gamVzdC5mbigpLm1vY2tJbXBsZW1lbnRhdGlvbigodmFsKSA9PiB2YWwpO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGlkZW50aXR5TWFwcGVyID0gamVzdC5mbigpLm1vY2tJbXBsZW1lbnRhdGlvbigodmFsKSA9PiB2YWwpO1xuICB9KTtcbiAgaXQoXCJOZXcgTWFwXCIsICgpID0+IHtcbiAgICBjb25zdCBvYmogPSB7IGZvbzogMSwgYmFyOiAyIH07XG4gICAgY29uc3QgbWFwID0gbmV3IEphdmFNYXAob2JqLCBpZGVudGl0eU1hcHBlcik7XG4gICAgZXhwZWN0KG1hcC50b0pTT04oKSkudG9FcXVhbChvYmopO1xuICB9KTtcblxuICBpdChcImNsZWFyXCIsICgpID0+IHtcbiAgICBjb25zdCBvYmogPSB7IGZvbzogMSwgYmFyOiAyIH07XG4gICAgY29uc3QgbWFwID0gbmV3IEphdmFNYXAob2JqLCBpZGVudGl0eU1hcHBlcik7XG4gICAgbWFwLmNsZWFyKCk7XG4gICAgZXhwZWN0KG1hcC50b0pTT04oKSkudG9FcXVhbCh7fSk7XG4gIH0pO1xuXG4gIGl0KFwiY29udGFpbnNLZXlcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG9iaiA9IHsgZm9vOiAxLCBiYXI6IDIgfTtcbiAgICBjb25zdCBtYXAgPSBuZXcgSmF2YU1hcChvYmosIGlkZW50aXR5TWFwcGVyKTtcbiAgICBleHBlY3QobWFwLmNvbnRhaW5zS2V5KFwiZm9vXCIpKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KG1hcC5jb250YWluc0tleShcImJheFwiKSkudG9CZUZhbHN5KCk7XG4gIH0pO1xuXG4gIGl0KFwiY29udGFpbnNWYWx1ZVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgb2JqID0geyBmb286IFwiRm9vIFZhbHVlXCIsIGJhcjogXCJCYXIgVmFsdWVcIiB9O1xuICAgIGNvbnN0IG1hcCA9IG5ldyBKYXZhTWFwKG9iaiwgaWRlbnRpdHlNYXBwZXIpO1xuICAgIGV4cGVjdChtYXAuY29udGFpbnNWYWx1ZShcIkZvbyBWYWx1ZVwiKSkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChtYXAuY29udGFpbnNLZXkoXCJiYXggdmFsdWVcIikpLnRvQmVGYWxzeSgpO1xuICB9KTtcblxuICBpdChcImVudHJ5U2V0XCIsICgpID0+IHtcbiAgICBjb25zdCBvYmogPSB7IGZvbzogXCJGb28gVmFsdWVcIiwgYmFyOiBcIkJhciBWYWx1ZVwiIH07XG4gICAgY29uc3QgbWFwID0gbmV3IEphdmFNYXAob2JqLCBpZGVudGl0eU1hcHBlcik7XG4gICAgZXhwZWN0KG1hcC5lbnRyeVNldCgpLnRvSlNPTigpKS50b0VxdWFsKFtcbiAgICAgIHsga2V5OiBcImZvb1wiLCB2YWx1ZTogXCJGb28gVmFsdWVcIiB9LFxuICAgICAgeyBrZXk6IFwiYmFyXCIsIHZhbHVlOiBcIkJhciBWYWx1ZVwiIH0sXG4gICAgXSk7XG4gIH0pO1xuXG4gIGl0KFwiZXF1YWxcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG9iaiA9IHsgZm9vOiBcIkZvbyBWYWx1ZVwiLCBiYXI6IFwiQmFyIFZhbHVlXCIgfTtcbiAgICBjb25zdCBtYXAgPSBuZXcgSmF2YU1hcChvYmosIGlkZW50aXR5TWFwcGVyKTtcbiAgICBjb25zdCBtYXAyID0gbmV3IEphdmFNYXAob2JqLCBpZGVudGl0eU1hcHBlcik7XG4gICAgZXhwZWN0KG1hcC5lcXVhbHMobWFwMikpLnRvQmVUcnV0aHkoKTtcbiAgfSk7XG5cbiAgaXQoXCJnZXRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG9iaiA9IHsgZm9vOiBcIkZvbyBWYWx1ZVwiLCBiYXI6IFwiQmFyIFZhbHVlXCIgfTtcbiAgICBjb25zdCBtYXAgPSBuZXcgSmF2YU1hcChvYmosIGlkZW50aXR5TWFwcGVyKTtcbiAgICBleHBlY3QobWFwLmdldChcImZvb1wiKSkudG9FcXVhbChcIkZvbyBWYWx1ZVwiKTtcbiAgICBleHBlY3QobWFwLmdldChcImZvbzFcIikpLnRvQmVOdWxsKCk7XG4gIH0pO1xuXG4gIGl0KFwiaXNFbXB0eVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgb2JqID0geyBmb286IFwiRm9vIFZhbHVlXCIsIGJhcjogXCJCYXIgVmFsdWVcIiB9O1xuICAgIGNvbnN0IG1hcCA9IG5ldyBKYXZhTWFwKG9iaiwgaWRlbnRpdHlNYXBwZXIpO1xuICAgIGV4cGVjdChtYXAuaXNFbXB0eSgpKS50b0JlRmFsc3koKTtcbiAgICBleHBlY3QobmV3IEphdmFNYXAoe30sIGlkZW50aXR5TWFwcGVyKS5pc0VtcHR5KCkpLnRvQmVUcnV0aHkoKTtcbiAgfSk7XG5cbiAgaXQoXCJrZXlTZXRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG9iaiA9IHsgZm9vOiBcIkZvbyBWYWx1ZVwiLCBiYXI6IFwiQmFyIFZhbHVlXCIgfTtcbiAgICBjb25zdCBtYXAgPSBuZXcgSmF2YU1hcChvYmosIGlkZW50aXR5TWFwcGVyKTtcbiAgICBleHBlY3QobWFwLmtleVNldCgpLnRvSlNPTigpKS50b0VxdWFsKFtcImZvb1wiLCBcImJhclwiXSk7XG4gIH0pO1xuXG4gIGl0KFwia2V5U2V0IHJldHVybnMgYSBKYXZhQXJyYXkgd2l0aCBlYWNoIGVsZW1lbnQgb2YgdHlwZSBKYXZhU3RyaW5nXCIsICgpID0+IHtcbiAgICBjb25zdCBvYmogPSB7IGZvbzogXCJGb28gVmFsdWVcIiwgYmFyOiBcIkJhciBWYWx1ZVwiIH07XG4gICAgY29uc3QgbWFwID0gbmV3IEphdmFNYXAob2JqLCBtYXBwZXIpO1xuICAgIGV4cGVjdChtYXAua2V5U2V0KCkpLnRvRXF1YWwoXG4gICAgICBuZXcgSmF2YUFycmF5KFtuZXcgSmF2YVN0cmluZyhcImZvb1wiKSwgbmV3IEphdmFTdHJpbmcoXCJiYXJcIildLCBtYXBwZXIpXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoXCJwdXRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG1hcCA9IG5ldyBKYXZhTWFwKHt9LCBpZGVudGl0eU1hcHBlcik7XG4gICAgbWFwLnB1dChcImZvb1wiLCBcIkZvbyBWYWx1ZVwiKTtcbiAgICBleHBlY3QobWFwLnRvSlNPTigpKS50b0VxdWFsKHsgZm9vOiBcIkZvbyBWYWx1ZVwiIH0pO1xuICB9KTtcblxuICBpdChcInB1dEFsbFwiLCAoKSA9PiB7XG4gICAgY29uc3QgbWFwID0gbmV3IEphdmFNYXAoe30sIGlkZW50aXR5TWFwcGVyKTtcbiAgICBtYXAucHV0QWxsKHsgZm9vOiBcIkZvbyBWYWx1ZVwiLCBiYXI6IFwiQmFyIFZhbHVlXCIgfSk7XG4gICAgZXhwZWN0KG1hcC50b0pTT04oKSkudG9FcXVhbCh7IGZvbzogXCJGb28gVmFsdWVcIiwgYmFyOiBcIkJhciBWYWx1ZVwiIH0pO1xuICB9KTtcbn0pO1xuIl19