jsoniq
Version:
JSONiq implementation for JavaScript
56 lines (54 loc) • 11.2 kB
JavaScript
"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("Remove Composition", () => {
pit("Tests Aggregation (1)", () => {
var d0 = new PUL_1.default();
d0.insert("1", { a: 1 });
d0.insert("2", { a: 1 });
var d1 = new PUL_1.default();
d1.remove("1");
var delta = PULComposition_1.default.compose(d0, d1, true);
expect(delta.udps.insertIntoArray.length).toBe(0);
expect(delta.udps.insertIntoObject.length).toBe(0);
expect(delta.udps.deleteFromObject.length).toBe(0);
expect(delta.udps.deleteFromArray.length).toBe(0);
expect(delta.udps.replaceInObject.length).toBe(0);
expect(delta.udps.replaceInArray.length).toBe(0);
expect(delta.udps.renameInObject.length).toBe(0);
expect(delta.udps.remove.length).toBe(0);
expect(delta.udps.insert.length).toBe(1);
expect(delta.udps.insert[0].id).toBe("2");
expect(Common_1.default.isEqual(delta.udps.insert[0].item, { a: 1 })).toBe(true);
return Common_1.default.checkCompositionIntegrity(d0, d1, {}).then(result => {
expect(result).toBe(true);
});
});
pit("Tests Aggregation (2)", () => {
var d0 = new PUL_1.default();
d0.insertIntoArray("1", ["a"], 0, [{}]);
d0.replaceInObject("1", [], "b", {});
d0.insertIntoObject("1", [], { f: 1 });
d0.insert("2", { a: 1 });
var d1 = new PUL_1.default();
d1.remove("1");
var delta = PULComposition_1.default.compose(d0, d1, true);
expect(delta.udps.insertIntoArray.length).toBe(0);
expect(delta.udps.insertIntoObject.length).toBe(0);
expect(delta.udps.deleteFromObject.length).toBe(0);
expect(delta.udps.deleteFromArray.length).toBe(0);
expect(delta.udps.replaceInObject.length).toBe(0);
expect(delta.udps.replaceInArray.length).toBe(0);
expect(delta.udps.renameInObject.length).toBe(0);
expect(delta.udps.remove.length).toBe(1);
expect(delta.udps.insert.length).toBe(1);
expect(delta.udps.insert[0].id).toBe("2");
expect(Common_1.default.isEqual(delta.udps.insert[0].item, { a: 1 })).toBe(true);
return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": { a: [], b: {} } }).then(result => {
expect(result).toBe(true);
});
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3RzL25vZGUvdXBkYXRlcy9jb21wb3NpdGlvbi9SZW1vdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUV4QixvQkFBZ0IsNkJBQTZCLENBQUMsQ0FBQTtBQUM5QywrQkFBMkIsb0RBQW9ELENBQUMsQ0FBQTtBQUNoRix1QkFBbUIsVUFBVSxDQUFDLENBQUE7QUFJOUIsUUFBUSxDQUFDLG9CQUFvQixFQUFFO0lBRTNCLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRTtRQUV6QixJQUFJLEVBQUUsR0FBRyxJQUFJLGFBQUcsRUFBRSxDQUFDO1FBQ25CLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6QixJQUFJLEVBQUUsR0FBRyxJQUFJLGFBQUcsRUFBRSxDQUFDO1FBQ25CLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFZixJQUFJLEtBQUssR0FBRyx3QkFBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUks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SSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3RzL25vZGUvdXBkYXRlcy9jb21wb3NpdGlvbi9SZW1vdmUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKFwiamFzbWluZTItcGl0XCIpO1xuXG5pbXBvcnQgUFVMIGZyb20gXCIuLi8uLi8uLi8uLi9saWIvdXBkYXRlcy9QVUxcIjtcbmltcG9ydCBQVUxDb21wb3NpdGlvbiBmcm9tIFwiLi4vLi4vLi4vLi4vbGliL3VwZGF0ZXMvY29tcG9zaXRpb24vUFVMQ29tcG9zaXRpb25cIjtcbmltcG9ydCBDb21tb24gZnJvbSBcIi4vQ29tbW9uXCI7XG5cbmRlY2xhcmUgZnVuY3Rpb24gcGl0KGV4cGVjdGF0aW9uOiBzdHJpbmcsIGFzc2VydGlvbj86IChkb25lOiAoKSA9PiB2b2lkKSA9PiBhbnkpOiB2b2lkO1xuXG5kZXNjcmliZShcIlJlbW92ZSBDb21wb3NpdGlvblwiLCAoKSA9PiB7XG5cbiAgICBwaXQoXCJUZXN0cyBBZ2dyZWdhdGlvbiAoMSlcIiwgKCkgPT4ge1xuXG4gICAgICAgIHZhciBkMCA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDAuaW5zZXJ0KFwiMVwiLCB7IGE6IDEgfSk7XG4gICAgICAgIGQwLmluc2VydChcIjJcIiwgeyBhOiAxIH0pO1xuXG4gICAgICAgIHZhciBkMSA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDEucmVtb3ZlKFwiMVwiKTtcblxuICAgICAgICB2YXIgZGVsdGEgPSBQVUxDb21wb3NpdGlvbi5jb21wb3NlKGQwLCBkMSwgdHJ1ZSk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmluc2VydEludG9BcnJheS5sZW5ndGgpLnRvQmUoMCk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmluc2VydEludG9PYmplY3QubGVuZ3RoKS50b0JlKDApO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5kZWxldGVGcm9tT2JqZWN0Lmxlbmd0aCkudG9CZSgwKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMuZGVsZXRlRnJvbUFycmF5Lmxlbmd0aCkudG9CZSgwKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMucmVwbGFjZUluT2JqZWN0Lmxlbmd0aCkudG9CZSgwKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMucmVwbGFjZUluQXJyYXkubGVuZ3RoKS50b0JlKDApO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5yZW5hbWVJbk9iamVjdC5sZW5ndGgpLnRvQmUoMCk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLnJlbW92ZS5sZW5ndGgpLnRvQmUoMCk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmluc2VydC5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmluc2VydFswXS5pZCkudG9CZShcIjJcIik7XG4gICAgICAgIGV4cGVjdChcbiAgICAgICAgICAgIENvbW1vbi5pc0VxdWFsKGRlbHRhLnVkcHMuaW5zZXJ0WzBdLml0ZW0sIHsgYTogMSB9KVxuICAgICAgICApLnRvQmUodHJ1ZSk7XG5cbiAgICAgICAgcmV0dXJuIENvbW1vbi5jaGVja0NvbXBvc2l0aW9uSW50ZWdyaXR5KGQwLCBkMSwge30pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcGl0KFwiVGVzdHMgQWdncmVnYXRpb24gKDIpXCIsICgpID0+IHtcblxuICAgICAgICB2YXIgZDAgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQwLmluc2VydEludG9BcnJheShcIjFcIiwgW1wiYVwiXSwgMCwgW3t9XSk7XG4gICAgICAgIGQwLnJlcGxhY2VJbk9iamVjdChcIjFcIiwgW10sIFwiYlwiLCB7fSk7XG4gICAgICAgIGQwLmluc2VydEludG9PYmplY3QoXCIxXCIsIFtdLCB7IGY6IDEgfSk7XG4gICAgICAgIGQwLmluc2VydChcIjJcIiwgeyBhOiAxIH0pO1xuXG4gICAgICAgIHZhciBkMSA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDEucmVtb3ZlKFwiMVwiKTtcblxuICAgICAgICB2YXIgZGVsdGEgPSBQVUxDb21wb3NpdGlvbi5jb21wb3NlKGQwLCBkMSwgdHJ1ZSk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmluc2VydEludG9BcnJheS5sZW5ndGgpLnRvQmUoMCk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmluc2VydEludG9PYmplY3QubGVuZ3RoKS50b0JlKDApO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5kZWxldGVGcm9tT2JqZWN0Lmxlbmd0aCkudG9CZSgwKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMuZGVsZXRlRnJvbUFycmF5Lmxlbmd0aCkudG9CZSgwKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMucmVwbGFjZUluT2JqZWN0Lmxlbmd0aCkudG9CZSgwKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMucmVwbGFjZUluQXJyYXkubGVuZ3RoKS50b0JlKDApO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5yZW5hbWVJbk9iamVjdC5sZW5ndGgpLnRvQmUoMCk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLnJlbW92ZS5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmluc2VydC5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmluc2VydFswXS5pZCkudG9CZShcIjJcIik7XG4gICAgICAgIGV4cGVjdChcbiAgICAgICAgICAgIENvbW1vbi5pc0VxdWFsKGRlbHRhLnVkcHMuaW5zZXJ0WzBdLml0ZW0sIHsgYTogMSB9KVxuICAgICAgICApLnRvQmUodHJ1ZSk7XG5cbiAgICAgICAgcmV0dXJuIENvbW1vbi5jaGVja0NvbXBvc2l0aW9uSW50ZWdyaXR5KGQwLCBkMSwgeyBcIjFcIjogeyBhOiBbXSwgYjoge30gfSB9KS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9