UNPKG

jsoniq

Version:

JSONiq implementation for JavaScript

101 lines (99 loc) 20 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("DeleteFromObject Composition", () => { pit("Tests Aggregation with Insert (1)", () => { var d0 = new PUL_1.default(); d0.insert("1", { a: 1 }); var d1 = new PUL_1.default(); d1.deleteFromObject("1", [], ["a"]); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.deleteFromObject.length).toBe(0); expect(delta.udps.insert.length).toBe(1); expect(Object.keys(delta.udps.insert[0].item).length).toBe(0); return Common_1.default.checkCompositionIntegrity(d0, d1, {}).then(result => { expect(result).toBe(true); }); }); pit("Tests Aggregation with Insert (2)", () => { var d0 = new PUL_1.default(); d0.insert("1", { a: 1, b: 1 }); var d1 = new PUL_1.default(); d1.deleteFromObject("1", [], ["a"]); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.deleteFromObject.length).toBe(0); expect(delta.udps.insert.length).toBe(1); expect(Common_1.default.isEqual(delta.udps.insert[0].item, { b: 1 })).toBe(true); return Common_1.default.checkCompositionIntegrity(d0, d1, {}).then(result => { expect(result).toBe(true); }); }); pit("Tests Aggregation with InsertIntoObject (1)", () => { var d0 = new PUL_1.default(); d0.insertIntoObject("1", ["a"], { b: 1, c: 1 }); var d1 = new PUL_1.default(); d1.deleteFromObject("1", ["a"], ["b"]); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.insertIntoObject.length).toBe(1); expect(delta.udps.deleteFromObject.length).toBe(0); expect(Common_1.default.isEqual(delta.udps.insertIntoObject[0].pairs, { c: 1 })).toBe(true); return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": { a: {} } }).then(result => { expect(result).toBe(true); }); }); pit("Tests Aggregation with InsertIntoObject (2)", () => { var d0 = new PUL_1.default(); d0.insertIntoObject("1", ["a"], { b: 1 }); var d1 = new PUL_1.default(); d1.deleteFromObject("1", ["a"], ["b"]); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.insertIntoObject.length).toBe(0); expect(delta.udps.deleteFromObject.length).toBe(0); 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.deleteFromObject("1", ["a"], ["b"]); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.deleteFromObject.length).toBe(0); expect(delta.udps.replaceInObject.length).toBe(1); expect(delta.udps.replaceInObject[0].key).toBe("a"); expect(Common_1.default.isEqual(delta.udps.replaceInObject[0].item, {})).toBe(true); 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.deleteFromObject("1", [], ["b"]); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.renameInObject.length).toBe(0); expect(delta.udps.deleteFromObject.length).toBe(1); expect(delta.udps.deleteFromObject[0].keys.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.deleteFromObject("1", [], ["a"]); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.renameInObject.length).toBe(1); expect(delta.udps.deleteFromObject.length).toBe(1); expect(delta.udps.deleteFromObject[0].keys.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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3RzL25vZGUvdXBkYXRlcy9jb21wb3NpdGlvbi9EZWxldGVGcm9tT2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFeEIsb0JBQWdCLDZCQUE2QixDQUFDLENBQUE7QUFDOUMsK0JBQTJCLG9EQUFvRCxDQUFDLENBQUE7QUFDaEYsdUJBQW1CLFVBQVUsQ0FBQyxDQUFBO0FBSTlCLFFBQVEsQ0FBQyw4QkFBOEIsRUFBRTtJQUVyQyxHQUFHLENBQUMsbUNBQW1DLEVBQUU7UUFDckMsSUFBSSxFQUFFLEdBQUcsSUFBSSxhQUFHLEVBQUUsQ0FBQztRQUNuQixFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXpCLElBQUksRUFBRSxHQUFHLElBQUksYUFBRyxFQUFFLENBQUM7UUFDbkIsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXBDLElBQUksS0FBSyxHQUFHLHdCQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTlELE1BQU0s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QyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3RzL25vZGUvdXBkYXRlcy9jb21wb3NpdGlvbi9EZWxldGVGcm9tT2JqZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZShcImphc21pbmUyLXBpdFwiKTtcblxuaW1wb3J0IFBVTCBmcm9tIFwiLi4vLi4vLi4vLi4vbGliL3VwZGF0ZXMvUFVMXCI7XG5pbXBvcnQgUFVMQ29tcG9zaXRpb24gZnJvbSBcIi4uLy4uLy4uLy4uL2xpYi91cGRhdGVzL2NvbXBvc2l0aW9uL1BVTENvbXBvc2l0aW9uXCI7XG5pbXBvcnQgQ29tbW9uIGZyb20gXCIuL0NvbW1vblwiO1xuXG5kZWNsYXJlIGZ1bmN0aW9uIHBpdChleHBlY3RhdGlvbjogc3RyaW5nLCBhc3NlcnRpb24/OiAoZG9uZTogKCkgPT4gdm9pZCkgPT4gYW55KTogdm9pZDtcblxuZGVzY3JpYmUoXCJEZWxldGVGcm9tT2JqZWN0IENvbXBvc2l0aW9uXCIsICgpID0+IHtcblxuICAgIHBpdChcIlRlc3RzIEFnZ3JlZ2F0aW9uIHdpdGggSW5zZXJ0ICgxKVwiLCAoKSA9PiB7XG4gICAgICAgIHZhciBkMCA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDAuaW5zZXJ0KFwiMVwiLCB7IGE6IDEgfSk7XG5cbiAgICAgICAgdmFyIGQxID0gbmV3IFBVTCgpO1xuICAgICAgICBkMS5kZWxldGVGcm9tT2JqZWN0KFwiMVwiLCBbXSwgW1wiYVwiXSk7XG5cbiAgICAgICAgdmFyIGRlbHRhID0gUFVMQ29tcG9zaXRpb24uY29tcG9zZShkMCwgZDEsIHRydWUpO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5kZWxldGVGcm9tT2JqZWN0Lmxlbmd0aCkudG9CZSgwKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMuaW5zZXJ0Lmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZXhwZWN0KE9iamVjdC5rZXlzKGRlbHRhLnVkcHMuaW5zZXJ0WzBdLml0ZW0pLmxlbmd0aCkudG9CZSgwKTtcblxuICAgICAgICByZXR1cm4gQ29tbW9uLmNoZWNrQ29tcG9zaXRpb25JbnRlZ3JpdHkoZDAsIGQxLCB7fSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBwaXQoXCJUZXN0cyBBZ2dyZWdhdGlvbiB3aXRoIEluc2VydCAoMilcIiwgKCkgPT4ge1xuICAgICAgICB2YXIgZDAgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQwLmluc2VydChcIjFcIiwgeyBhOiAxLCBiOiAxIH0pO1xuXG4gICAgICAgIHZhciBkMSA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDEuZGVsZXRlRnJvbU9iamVjdChcIjFcIiwgW10sIFtcImFcIl0pO1xuXG4gICAgICAgIHZhciBkZWx0YSA9IFBVTENvbXBvc2l0aW9uLmNvbXBvc2UoZDAsIGQxLCB0cnVlKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMuZGVsZXRlRnJvbU9iamVjdC5sZW5ndGgpLnRvQmUoMCk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmluc2VydC5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGV4cGVjdChcbiAgICAgICAgICAgIENvbW1vbi5pc0VxdWFsKGRlbHRhLnVkcHMuaW5zZXJ0WzBdLml0ZW0sIHsgYjogMSB9KVxuICAgICAgICApLnRvQmUodHJ1ZSk7XG5cbiAgICAgICAgcmV0dXJuIENvbW1vbi5jaGVja0NvbXBvc2l0aW9uSW50ZWdyaXR5KGQwLCBkMSwge30pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcGl0KFwiVGVzdHMgQWdncmVnYXRpb24gd2l0aCBJbnNlcnRJbnRvT2JqZWN0ICgxKVwiLCAoKSA9PiB7XG4gICAgICAgIHZhciBkMCA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDAuaW5zZXJ0SW50b09iamVjdChcIjFcIiwgW1wiYVwiXSwgeyBiOiAxLCBjOiAxIH0pO1xuXG4gICAgICAgIHZhciBkMSA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDEuZGVsZXRlRnJvbU9iamVjdChcIjFcIiwgW1wiYVwiXSwgW1wiYlwiXSk7XG5cbiAgICAgICAgdmFyIGRlbHRhID0gUFVMQ29tcG9zaXRpb24uY29tcG9zZShkMCwgZDEsIHRydWUpO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5pbnNlcnRJbnRvT2JqZWN0Lmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMuZGVsZXRlRnJvbU9iamVjdC5sZW5ndGgpLnRvQmUoMCk7XG4gICAgICAgIGV4cGVjdChcblxuICAgICAgICAgICAgQ29tbW9uLmlzRXF1YWwoZGVsdGEudWRwcy5pbnNlcnRJbnRvT2JqZWN0WzBdLnBhaXJzLCB7IGM6IDEgfSlcbiAgICAgICAgKS50b0JlKHRydWUpO1xuXG4gICAgICAgIHJldHVybiBDb21tb24uY2hlY2tDb21wb3NpdGlvbkludGVncml0eShkMCwgZDEsIHsgXCIxXCI6IHsgYToge30gfSB9KS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHBpdChcIlRlc3RzIEFnZ3JlZ2F0aW9uIHdpdGggSW5zZXJ0SW50b09iamVjdCAoMilcIiwgKCkgPT4ge1xuICAgICAgICB2YXIgZDAgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQwLmluc2VydEludG9PYmplY3QoXCIxXCIsIFtcImFcIl0sIHsgYjogMSB9KTtcblxuICAgICAgICB2YXIgZDEgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQxLmRlbGV0ZUZyb21PYmplY3QoXCIxXCIsIFtcImFcIl0sIFtcImJcIl0pO1xuXG4gICAgICAgIHZhciBkZWx0YSA9IFBVTENvbXBvc2l0aW9uLmNvbXBvc2UoZDAsIGQxLCB0cnVlKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMuaW5zZXJ0SW50b09iamVjdC5sZW5ndGgpLnRvQmUoMCk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmRlbGV0ZUZyb21PYmplY3QubGVuZ3RoKS50b0JlKDApO1xuXG4gICAgICAgIHJldHVybiBDb21tb24uY2hlY2tDb21wb3NpdGlvbkludGVncml0eShkMCwgZDEsIHsgXCIxXCI6IHsgYToge30gfSB9KS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHBpdChcIlRlc3RzIEFnZ3JlZ2F0aW9uIHdpdGggUmVwbGFjZUluT2JqZWN0XCIsICgpID0+IHtcbiAgICAgICAgdmFyIGQwID0gbmV3IFBVTCgpO1xuICAgICAgICBkMC5yZXBsYWNlSW5PYmplY3QoXCIxXCIsIFtdLCBcImFcIiwgeyBiOiAxIH0pO1xuXG4gICAgICAgIHZhciBkMSA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDEuZGVsZXRlRnJvbU9iamVjdChcIjFcIiwgW1wiYVwiXSwgW1wiYlwiXSk7XG5cbiAgICAgICAgdmFyIGRlbHRhID0gUFVMQ29tcG9zaXRpb24uY29tcG9zZShkMCwgZDEsIHRydWUpO1xuXG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmRlbGV0ZUZyb21PYmplY3QubGVuZ3RoKS50b0JlKDApO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5yZXBsYWNlSW5PYmplY3QubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5yZXBsYWNlSW5PYmplY3RbMF0ua2V5KS50b0JlKFwiYVwiKTtcbiAgICAgICAgZXhwZWN0KFxuICAgICAgICAgICAgQ29tbW9uLmlzRXF1YWwoZGVsdGEudWRwcy5yZXBsYWNlSW5PYmplY3RbMF0uaXRlbSwge30pXG4gICAgICAgICkudG9CZSh0cnVlKTtcblxuICAgICAgICByZXR1cm4gQ29tbW9uLmNoZWNrQ29tcG9zaXRpb25JbnRlZ3JpdHkoZDAsIGQxLCB7IFwiMVwiOiB7IGE6IHt9IH0gfSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBwaXQoXCJUZXN0IEFnZ3JlZ2F0aW9uIHdpdGggUmVuYW1lSW5PYmplY3RcIiwgKCkgPT4ge1xuICAgICAgICB2YXIgZDAgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQwLnJlbmFtZUluT2JqZWN0KFwiMVwiLCBbXSwgXCJhXCIsIFwiYlwiKTtcblxuICAgICAgICB2YXIgZDEgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQxLmRlbGV0ZUZyb21PYmplY3QoXCIxXCIsIFtdLCBbXCJiXCJdKTtcblxuICAgICAgICB2YXIgZGVsdGEgPSBQVUxDb21wb3NpdGlvbi5jb21wb3NlKGQwLCBkMSwgdHJ1ZSk7XG5cbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMucmVuYW1lSW5PYmplY3QubGVuZ3RoKS50b0JlKDApO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5kZWxldGVGcm9tT2JqZWN0Lmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMuZGVsZXRlRnJvbU9iamVjdFswXS5rZXlzLmpvaW4oXCIuXCIpKS50b0JlKFwiYVwiKTtcblxuICAgICAgICByZXR1cm4gQ29tbW9uLmNoZWNrQ29tcG9zaXRpb25JbnRlZ3JpdHkoZDAsIGQxLCB7IFwiMVwiOiB7IGE6IHt9IH0gfSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBwaXQoXCJUZXN0IEFjY3VtdWxhdGlvbiAoMSlcIiwgKCkgPT4ge1xuICAgICAgICB2YXIgZDAgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQwLnJlbmFtZUluT2JqZWN0KFwiMVwiLCBbXSwgXCJjXCIsIFwiZFwiKTtcblxuICAgICAgICB2YXIgZDEgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQxLmRlbGV0ZUZyb21PYmplY3QoXCIxXCIsIFtdLCBbXCJhXCJdKTtcblxuICAgICAgICB2YXIgZGVsdGEgPSBQVUxDb21wb3NpdGlvbi5jb21wb3NlKGQwLCBkMSwgdHJ1ZSk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLnJlbmFtZUluT2JqZWN0Lmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMuZGVsZXRlRnJvbU9iamVjdC5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmRlbGV0ZUZyb21PYmplY3RbMF0ua2V5cy5qb2luKFwiLlwiKSkudG9CZShcImFcIik7XG5cbiAgICAgICAgcmV0dXJuIENvbW1vbi5jaGVja0NvbXBvc2l0aW9uSW50ZWdyaXR5KGQwLCBkMSwgeyBcIjFcIjogeyBhOiB7fSwgYzogMSB9IH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufSk7XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=