nope-js-node
Version:
NoPE Runtime for Nodejs. For Browser-Support please use nope-browser
199 lines (198 loc) • 8.41 kB
JavaScript
;
/**
* @author Martin Karkowski
* @email m.karkowski@zema.de
* @desc [description]
*/
Object.defineProperty(exports, "__esModule", { value: true });
const chai_1 = require("chai");
const mocha_1 = require("mocha");
const mapMethods_1 = require("./mapMethods");
const mergedData_1 = require("./mergedData");
(0, mocha_1.describe)("mergedData", function () {
// Describe the required Test:
(0, mocha_1.it)("data subscription", function (done) {
const m = new Map();
const d = new mergedData_1.MergeData(m, (m) => (0, mapMethods_1.extractUniqueValues)(m));
m.set("a", "b");
m.set("b", "b");
d.update();
d.data.subscribe((result) => {
chai_1.assert.isTrue(result.length === 1, "Exactly one element different data has been added");
chai_1.assert.isTrue([...result][0] === "b", "Element is element");
done();
});
});
(0, mocha_1.it)("data subscription. Update called twice", function (done) {
const m = new Map();
const d = new mergedData_1.MergeData(m, (m) => (0, mapMethods_1.extractUniqueValues)(m));
m.set("a", "b");
m.set("b", "b");
d.update(m);
d.data.subscribe((result) => {
chai_1.assert.isTrue(result.length === 1, "Exactly one element different data has been added");
chai_1.assert.isTrue([...result][0] === "b", "Element is element");
done();
});
d.update(m);
});
(0, mocha_1.it)("onchange subscription: added", function (done) {
const m = new Map();
const d = new mergedData_1.MergeData(m, (m) => (0, mapMethods_1.extractUniqueValues)(m));
m.set("a", "b");
m.set("b", "b");
d.onChange.subscribe((result) => {
chai_1.assert.isTrue(result.added.length === 1, "Exactly one element has been added");
chai_1.assert.isTrue([...result.added][0] === "b", "Element is element");
done();
});
d.update(m);
});
(0, mocha_1.it)("onchange subscription: removed", function (done) {
const m = new Map();
const d = new mergedData_1.MergeData(m, (m) => (0, mapMethods_1.extractUniqueValues)(m));
m.set("a", "b");
m.set("b", "b");
d.onChange.subscribe((result) => {
chai_1.assert.isTrue(result.removed.length === 0, "No element has been removed!");
done();
});
d.update(m);
});
});
(0, mocha_1.describe)("MapBasedMergeData", function () {
// Describe the required Test:
(0, mocha_1.it)("data handeling - flat data", function (done) {
const m = new Map();
const d = new mergedData_1.MapBasedMergeData(m);
m.set("a", "b");
m.set("b", "b");
d.update();
(0, chai_1.expect)([...d.keyMappingReverse.keys()]).contains("b");
done();
});
(0, mocha_1.it)("data handeling - multiple data array", function (done) {
const m = new Map();
const d = new mergedData_1.MapBasedMergeData(m, "+");
m.set("a", ["a", "b"]);
m.set("b", ["c", "b"]);
d.update();
(0, chai_1.expect)([...d.keyMappingReverse.keys()]).contains("b");
done();
});
// Describe the required Test:
(0, mocha_1.it)("data subscription - simple data", function (done) {
const m = new Map();
const d = new mergedData_1.MapBasedMergeData(m);
m.set("a", "b");
m.set("b", "b");
d.update();
d.data.subscribe((result) => {
chai_1.assert.isTrue(result.length === 1, "Exactly one element different data has been added");
chai_1.assert.isTrue([...result][0] === "b", "Element is element");
done();
});
});
(0, mocha_1.it)("data subscription - array data", function (done) {
const m = new Map();
const d = new mergedData_1.MapBasedMergeData(m, "+");
m.set("a", ["a", "b"]);
m.set("b", ["c", "b"]);
d.update();
d.data.subscribe((result) => {
chai_1.assert.isTrue(result.length === 3, "The Element contains 3 different items.");
(0, chai_1.expect)([...result]).to.contain("a");
(0, chai_1.expect)([...result]).to.contain("b");
(0, chai_1.expect)([...result]).to.contain("c");
done();
});
});
(0, mocha_1.it)("data subscription - nested data", function (done) {
const m = new Map();
const d_1 = new mergedData_1.MapBasedMergeData(m, "", "key");
m.set("a", { key: "keyA", data: "dataA" });
m.set("b", { key: "keyB", data: "dataB" });
d_1.update();
chai_1.assert.isTrue(d_1.amountOf.size === 2, "The Element contains 3 different items.");
(0, chai_1.expect)([...d_1.keyMapping.keys()]).to.contain("a");
(0, chai_1.expect)([...d_1.keyMappingReverse.keys()]).to.contain("keyA");
(0, chai_1.expect)([...d_1.simplified.keys()]).to.contain("keyA");
const d_2 = new mergedData_1.MapBasedMergeData(m, "data", "key");
d_2.update();
(0, chai_1.expect)([...d_2.keyMapping.keys()]).to.contain("a");
(0, chai_1.expect)([...d_2.keyMappingReverse.keys()]).to.contain("keyA");
(0, chai_1.expect)([...d_2.simplified.keys()]).to.contain("keyA");
done();
});
// it("data subscription - nested data array", function (done) {
// const m = new Map<string, { key: string; data: string }[]>();
// const d_1 = new MapBasedMergeData<
// string,
// { key: string; data: string }[],
// string,
// { key: string; data: string }
// >(m, "", "key");
// m.set("a", [
// { key: "keyA", data: "dataA" },
// { key: "keyB", data: "dataB" },
// ]);
// m.set("b", [{ key: "keyC", data: "dataC" }]);
// d_1.update();
// assert.isTrue(
// d_1.amountOf.size === 2,
// "The Element contains 3 different items."
// );
// expect([...d_1.keyMapping.keys()]).to.contain("a");
// expect([...d_1.keyMappingReverse.keys()]).to.contain("keyA");
// expect([...d_1.simplified.keys()]).to.contain("keyA");
// expect([...d_1.keyMappingReverse.values()]).to.contain("keyA");
// const d_2 = new MapBasedMergeData<
// string,
// { key: string; data: string },
// string,
// string
// >(m, "data", "key");
// d_2.update();
// expect([...d_1.keyMapping.keys()]).to.contain("a");
// expect([...d_1.keyMappingReverse.keys()]).to.contain("keyA");
// expect([...d_1.simplified.keys()]).to.contain("keyA");
// expect([...d_1.keyMappingReverse.keys()]).to.contain("dataB");
// done();
// });
(0, mocha_1.it)("data subscription. Update called twice", function (done) {
const m = new Map();
const d = new mergedData_1.MapBasedMergeData(m);
m.set("a", "b");
m.set("b", "b");
d.update(m);
d.data.subscribe((result) => {
chai_1.assert.isTrue(result.length === 1, "Exactly one element different data has been added");
chai_1.assert.isTrue([...result][0] === "b", "Element is element");
done();
});
d.update(m);
});
(0, mocha_1.it)("onchange subscription: added", function (done) {
const m = new Map();
const d = new mergedData_1.MapBasedMergeData(m);
m.set("a", "b");
m.set("b", "b");
d.onChange.subscribe((result) => {
chai_1.assert.isTrue(result.added.length === 1, "Exactly one element has been added");
chai_1.assert.isTrue([...result.added][0] === "b", "Element is element");
done();
});
d.update(m);
});
(0, mocha_1.it)("onchange subscription: removed", function (done) {
const m = new Map();
const d = new mergedData_1.MapBasedMergeData(m);
m.set("a", "b");
m.set("b", "b");
d.onChange.subscribe((result) => {
chai_1.assert.isTrue(result.removed.length === 0, "No element has been removed!");
done();
});
d.update(m);
});
});