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