UNPKG

jsoniq

Version:

JSONiq implementation for JavaScript

78 lines (76 loc) 15.5 kB
"use strict"; require("jasmine2-pit"); var PUL_1 = require("../../../../lib/updates/PUL"); var PULComposition_1 = require("../../../../lib/updates/composition/PULComposition"); var Common_1 = require("./Common"); describe("InsertIntoObject Composition", () => { pit("Tests Aggregation with Insert", () => { var d0 = new PUL_1.default(); d0.insert("1", { a: 1 }); var d1 = new PUL_1.default(); d1.insertIntoObject("1", [], { b: 1 }); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.insertIntoObject.length).toBe(0); expect(delta.udps.insert.length).toBe(1); expect(delta.udps.insert[0].item["a"]).toBe(1); expect(delta.udps.insert[0].item["b"]).toBe(1); return Common_1.default.checkCompositionIntegrity(d0, d1, {}).then(result => { expect(result).toBe(true); }); }); pit("Tests Aggregation with InsertIntoObject", () => { var d0 = new PUL_1.default(); d0.insertIntoObject("1", ["a"], { b: 1 }); var d1 = new PUL_1.default(); d1.insertIntoObject("1", ["a"], { c: 1 }); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.insertIntoObject.length).toBe(1); expect(delta.udps.insertIntoObject[0].pairs["b"]).toBe(1); expect(delta.udps.insertIntoObject[0].pairs["c"]).toBe(1); return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": { a: {} } }).then(result => { expect(result).toBe(true); }); }); pit("Tests Aggregation with ReplaceInObject", () => { var d0 = new PUL_1.default(); d0.replaceInObject("1", [], "a", { b: 1 }); var d1 = new PUL_1.default(); d1.insertIntoObject("1", ["a"], { c: 1 }); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.insertIntoObject.length).toBe(0); expect(delta.udps.replaceInObject.length).toBe(1); expect(delta.udps.replaceInObject[0].key).toBe("a"); expect(delta.udps.replaceInObject[0].item["b"]).toBe(1); expect(delta.udps.replaceInObject[0].item["c"]).toBe(1); return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": { a: {} } }).then(result => { expect(result).toBe(true); }); }); pit("Test Aggregation with RenameInObject", () => { var d0 = new PUL_1.default(); d0.renameInObject("1", [], "a", "b"); var d1 = new PUL_1.default(); d1.insertIntoObject("1", ["b"], { c: 1 }); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.renameInObject.length).toBe(1); expect(delta.udps.insertIntoObject.length).toBe(1); expect(delta.udps.insertIntoObject[0].ordPath.join(".")).toBe("a"); return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": { a: {} } }).then(result => { expect(result).toBe(true); }); }); pit("Test Accumulation (1)", () => { var d0 = new PUL_1.default(); d0.renameInObject("1", [], "c", "d"); var d1 = new PUL_1.default(); d1.insertIntoObject("1", ["a"], { c: 1 }); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.renameInObject.length).toBe(1); expect(delta.udps.insertIntoObject.length).toBe(1); expect(delta.udps.insertIntoObject[0].ordPath.join(".")).toBe("a"); return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": { a: {}, c: 1 } }).then(result => { expect(result).toBe(true); }); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3RzL25vZGUvdXBkYXRlcy9jb21wb3NpdGlvbi9JbnNlcnRJbnRvT2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFeEIsb0JBQWdCLDZCQUE2QixDQUFDLENBQUE7QUFDOUMsK0JBQTJCLG9EQUFvRCxDQUFDLENBQUE7QUFDaEYsdUJBQW1CLFVBQVUsQ0FBQyxDQUFBO0FBSTlCLFFBQVEsQ0FBQyw4QkFBOEIsRUFBRTtJQUVyQyxHQUFHLENBQUMsK0JBQStCLEVBQUU7UUFDakMsSUFBSSxFQUFFLEdBQUcsSUFBSSxhQUFHLEVBQUUsQ0FBQztRQUNuQixFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXpCLElBQUksRUFBRSxHQUFHLElBQUksYUFBRyxFQUFFLENBQUM7UUFDbkIsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV2QyxJQUFJLEtBQUssR0FBRyx3QkFBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0MsTUFBTSxDQUFDLEtBQUss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Q0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVuRSxNQUFNLENBQUMsZ0JBQU0sQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQ2pGLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztBQUVQLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3RzL25vZGUvdXBkYXRlcy9jb21wb3NpdGlvbi9JbnNlcnRJbnRvT2JqZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZShcImphc21pbmUyLXBpdFwiKTtcblxuaW1wb3J0IFBVTCBmcm9tIFwiLi4vLi4vLi4vLi4vbGliL3VwZGF0ZXMvUFVMXCI7XG5pbXBvcnQgUFVMQ29tcG9zaXRpb24gZnJvbSBcIi4uLy4uLy4uLy4uL2xpYi91cGRhdGVzL2NvbXBvc2l0aW9uL1BVTENvbXBvc2l0aW9uXCI7XG5pbXBvcnQgQ29tbW9uIGZyb20gXCIuL0NvbW1vblwiO1xuXG5kZWNsYXJlIGZ1bmN0aW9uIHBpdChleHBlY3RhdGlvbjogc3RyaW5nLCBhc3NlcnRpb24/OiAoZG9uZTogKCkgPT4gdm9pZCkgPT4gYW55KTogdm9pZDtcblxuZGVzY3JpYmUoXCJJbnNlcnRJbnRvT2JqZWN0IENvbXBvc2l0aW9uXCIsICgpID0+IHtcblxuICAgIHBpdChcIlRlc3RzIEFnZ3JlZ2F0aW9uIHdpdGggSW5zZXJ0XCIsICgpID0+IHtcbiAgICAgICAgdmFyIGQwID0gbmV3IFBVTCgpO1xuICAgICAgICBkMC5pbnNlcnQoXCIxXCIsIHsgYTogMSB9KTtcblxuICAgICAgICB2YXIgZDEgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQxLmluc2VydEludG9PYmplY3QoXCIxXCIsIFtdLCB7IGI6IDEgfSk7XG5cbiAgICAgICAgdmFyIGRlbHRhID0gUFVMQ29tcG9zaXRpb24uY29tcG9zZShkMCwgZDEsIHRydWUpO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5pbnNlcnRJbnRvT2JqZWN0Lmxlbmd0aCkudG9CZSgwKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMuaW5zZXJ0Lmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMuaW5zZXJ0WzBdLml0ZW1bXCJhXCJdKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5pbnNlcnRbMF0uaXRlbVtcImJcIl0pLnRvQmUoMSk7XG5cbiAgICAgICAgcmV0dXJuIENvbW1vbi5jaGVja0NvbXBvc2l0aW9uSW50ZWdyaXR5KGQwLCBkMSwge30pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcGl0KFwiVGVzdHMgQWdncmVnYXRpb24gd2l0aCBJbnNlcnRJbnRvT2JqZWN0XCIsICgpID0+IHtcbiAgICAgICAgdmFyIGQwID0gbmV3IFBVTCgpO1xuICAgICAgICBkMC5pbnNlcnRJbnRvT2JqZWN0KFwiMVwiLCBbXCJhXCJdLCB7IGI6IDEgfSk7XG5cbiAgICAgICAgdmFyIGQxID0gbmV3IFBVTCgpO1xuICAgICAgICBkMS5pbnNlcnRJbnRvT2JqZWN0KFwiMVwiLCBbXCJhXCJdLCB7IGM6IDEgfSk7XG5cbiAgICAgICAgdmFyIGRlbHRhID0gUFVMQ29tcG9zaXRpb24uY29tcG9zZShkMCwgZDEsIHRydWUpO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5pbnNlcnRJbnRvT2JqZWN0Lmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMuaW5zZXJ0SW50b09iamVjdFswXS5wYWlyc1tcImJcIl0pLnRvQmUoMSk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmluc2VydEludG9PYmplY3RbMF0ucGFpcnNbXCJjXCJdKS50b0JlKDEpO1xuXG4gICAgICAgIHJldHVybiBDb21tb24uY2hlY2tDb21wb3NpdGlvbkludGVncml0eShkMCwgZDEsIHsgXCIxXCI6IHsgYToge30gfSB9KS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHBpdChcIlRlc3RzIEFnZ3JlZ2F0aW9uIHdpdGggUmVwbGFjZUluT2JqZWN0XCIsICgpID0+IHtcbiAgICAgICAgdmFyIGQwID0gbmV3IFBVTCgpO1xuICAgICAgICBkMC5yZXBsYWNlSW5PYmplY3QoXCIxXCIsIFtdLCBcImFcIiwgeyBiOiAxIH0pO1xuXG4gICAgICAgIHZhciBkMSA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDEuaW5zZXJ0SW50b09iamVjdChcIjFcIiwgW1wiYVwiXSwgeyBjOiAxIH0pO1xuXG4gICAgICAgIHZhciBkZWx0YSA9IFBVTENvbXBvc2l0aW9uLmNvbXBvc2UoZDAsIGQxLCB0cnVlKTtcblxuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5pbnNlcnRJbnRvT2JqZWN0Lmxlbmd0aCkudG9CZSgwKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMucmVwbGFjZUluT2JqZWN0Lmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMucmVwbGFjZUluT2JqZWN0WzBdLmtleSkudG9CZShcImFcIik7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLnJlcGxhY2VJbk9iamVjdFswXS5pdGVtW1wiYlwiXSkudG9CZSgxKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMucmVwbGFjZUluT2JqZWN0WzBdLml0ZW1bXCJjXCJdKS50b0JlKDEpO1xuXG4gICAgICAgIHJldHVybiBDb21tb24uY2hlY2tDb21wb3NpdGlvbkludGVncml0eShkMCwgZDEsIHsgXCIxXCI6IHsgYToge30gfSB9KS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHBpdChcIlRlc3QgQWdncmVnYXRpb24gd2l0aCBSZW5hbWVJbk9iamVjdFwiLCAoKSA9PiB7XG4gICAgICAgIHZhciBkMCA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDAucmVuYW1lSW5PYmplY3QoXCIxXCIsIFtdLCBcImFcIiwgXCJiXCIpO1xuXG4gICAgICAgIHZhciBkMSA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDEuaW5zZXJ0SW50b09iamVjdChcIjFcIiwgW1wiYlwiXSwgeyBjOiAxIH0pO1xuXG4gICAgICAgIHZhciBkZWx0YSA9IFBVTENvbXBvc2l0aW9uLmNvbXBvc2UoZDAsIGQxLCB0cnVlKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMucmVuYW1lSW5PYmplY3QubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5pbnNlcnRJbnRvT2JqZWN0Lmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMuaW5zZXJ0SW50b09iamVjdFswXS5vcmRQYXRoLmpvaW4oXCIuXCIpKS50b0JlKFwiYVwiKTtcblxuICAgICAgICByZXR1cm4gQ29tbW9uLmNoZWNrQ29tcG9zaXRpb25JbnRlZ3JpdHkoZDAsIGQxLCB7IFwiMVwiOiB7IGE6IHt9IH0gfSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBwaXQoXCJUZXN0IEFjY3VtdWxhdGlvbiAoMSlcIiwgKCkgPT4ge1xuICAgICAgICB2YXIgZDAgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQwLnJlbmFtZUluT2JqZWN0KFwiMVwiLCBbXSwgXCJjXCIsIFwiZFwiKTtcblxuICAgICAgICB2YXIgZDEgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQxLmluc2VydEludG9PYmplY3QoXCIxXCIsIFtcImFcIl0sIHsgYzogMSB9KTtcblxuICAgICAgICB2YXIgZGVsdGEgPSBQVUxDb21wb3NpdGlvbi5jb21wb3NlKGQwLCBkMSwgdHJ1ZSk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLnJlbmFtZUluT2JqZWN0Lmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMuaW5zZXJ0SW50b09iamVjdC5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmluc2VydEludG9PYmplY3RbMF0ub3JkUGF0aC5qb2luKFwiLlwiKSkudG9CZShcImFcIik7XG5cbiAgICAgICAgcmV0dXJuIENvbW1vbi5jaGVja0NvbXBvc2l0aW9uSW50ZWdyaXR5KGQwLCBkMSwgeyBcIjFcIjogeyBhOiB7fSwgYzogMSB9IH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG59KTtcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==