[FIX] observer: protect observed state against changes

This commit is contained in:
Géry Debongnie
2019-04-17 16:55:57 +02:00
parent d07f396578
commit 4b30d0b412
2 changed files with 30 additions and 5 deletions
+22
View File
@@ -279,4 +279,26 @@ describe("observer", () => {
await nextMicroTick();
expect(observer.notifyCB).toBeCalledTimes(4);
});
test("throw error when state is mutated in object if allowMutation=false", async () => {
const observer = new Observer();
observer.allowMutations = false;
const obj: any = { a: 1 };
observer.observe(obj);
expect(() => {
obj.a = 2;
}).toThrow('Observed state cannot be changed here! (key: "a", val: "2")');
});
test("throw error when state is mutated in array if allowMutation=false", async () => {
const observer = new Observer();
observer.allowMutations = false;
const obj: any = { a: [1] };
observer.observe(obj);
expect(() => {
obj.a.push(2);
}).toThrow("Array cannot be changed here");
});
});