diff --git a/test/ChangeAPITest.ts b/test/ChangeAPITest.ts index 980013a9..f95e7766 100644 --- a/test/ChangeAPITest.ts +++ b/test/ChangeAPITest.ts @@ -110,8 +110,8 @@ describe("Change API", () => { sinon.assert.calledOnce(onChangeSpy); sinon.assert.calledOnce(playerSpy); }); - - it("should trigger onChange when removing child object", () => { + + it("should trigger onChange when setting child object to null", () => { const state = new State(); state.player = new Player("Jake", 10, 10); @@ -130,6 +130,27 @@ describe("Change API", () => { sinon.assert.calledOnce(onChangeSpy); }); + + it("should trigger onChange when deleting child object", () => { + const state = new State(); + state.player = new Player("Jake", 10, 10); + + const decodedState = new State(); + decodedState.decode(state.encode()); + + decodedState.onChange = function (changes: DataChange[]) { + console.log(changes); + assert.equal(changes.length, 1); + assert.equal(changes[0].field, "player"); + assert.equal(changes[0].value, undefined); + } + let onChangeSpy = sinon.spy(decodedState, 'onChange'); + + delete state.player; + decodedState.decode(state.encode()); + + sinon.assert.calledOnce(onChangeSpy); + }); }); describe("ArraySchema", () => {