From dd0a7fb96660dd83778ec5290455fa7952178181 Mon Sep 17 00:00:00 2001 From: Mohamedox Date: Wed, 13 Mar 2019 11:58:25 +0100 Subject: [PATCH 1/6] computed tests --- src/new.spec.js | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/new.spec.js b/src/new.spec.js index 6f4d90e..9b5c41e 100644 --- a/src/new.spec.js +++ b/src/new.spec.js @@ -111,5 +111,53 @@ describe("withStore", () => { expect(getState().baz).toBe("baz"); }); + + it("are not called when its state/props dependencies do not change", async () => { + const baz = jest.fn(({ qux }, { bar }) => bar * qux); + const props = { bar: 2, thud: 9 }; + const { effects, setParentProps } = makeTestInstance( + { + initialState: () => ({ qux: 1, corge: 4 }), + effects: { + changeState() { + this.state.corge = 8; + }, + }, + computed: { + baz, + }, + }, + props + ); + + setParentProps({ thud: 8 }); + await effects.changeState(); + expect(baz.mock.calls.length).toBe(0); + }); + + it("is called when its state/props dependencies change", async () => { + const baz = jest.fn(({ bar }, { qux }) => bar + qux + 2); + const props = { qux: 2 }; + const { effects, getState, setParentProps } = makeTestInstance( + { + initialState: () => ({ bar: 3 }), + effects: { + changeState() { + this.state.bar = 5; + }, + }, + computed: { + baz, + }, + }, + props + ); + + setParentProps({ qux: 4 }); + expect(getState().baz).toBe(9); + await effects.changeState(); + expect(getState().baz).toBe(11); + expect(baz.mock.calls.length).toBe(2); + }); }); }); From eb1e16b444555d97595271ab8a0a2efc3ecd0356 Mon Sep 17 00:00:00 2001 From: Mohamedox Date: Wed, 13 Mar 2019 14:39:47 +0100 Subject: [PATCH 2/6] fix --- src/new.spec.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/new.spec.js b/src/new.spec.js index 9b5c41e..97821ac 100644 --- a/src/new.spec.js +++ b/src/new.spec.js @@ -115,7 +115,7 @@ describe("withStore", () => { it("are not called when its state/props dependencies do not change", async () => { const baz = jest.fn(({ qux }, { bar }) => bar * qux); const props = { bar: 2, thud: 9 }; - const { effects, setParentProps } = makeTestInstance( + const { effects, getState, setParentProps } = makeTestInstance( { initialState: () => ({ qux: 1, corge: 4 }), effects: { @@ -130,9 +130,10 @@ describe("withStore", () => { props ); + expect(getState().baz).toBe(2); setParentProps({ thud: 8 }); await effects.changeState(); - expect(baz.mock.calls.length).toBe(0); + expect(baz.mock.calls.length).toBe(1); }); it("is called when its state/props dependencies change", async () => { From 6326f7f134a4a3a2327da37d146f8bf877716926 Mon Sep 17 00:00:00 2001 From: Mohamedox Date: Thu, 14 Mar 2019 09:12:24 +0100 Subject: [PATCH 3/6] fix --- src/new.spec.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/new.spec.js b/src/new.spec.js index 97821ac..3af807d 100644 --- a/src/new.spec.js +++ b/src/new.spec.js @@ -133,6 +133,7 @@ describe("withStore", () => { expect(getState().baz).toBe(2); setParentProps({ thud: 8 }); await effects.changeState(); + expect(getState().baz).toBe(2); expect(baz.mock.calls.length).toBe(1); }); From 9cc02b317b5a29f9944bd84277fad4370f8fdfda Mon Sep 17 00:00:00 2001 From: Mohamedox Date: Thu, 14 Mar 2019 13:22:21 +0100 Subject: [PATCH 4/6] fix --- src/new.spec.js | 46 ++++++++++++++++++---------------------------- 1 file changed, 18 insertions(+), 28 deletions(-) diff --git a/src/new.spec.js b/src/new.spec.js index 3af807d..89670a5 100644 --- a/src/new.spec.js +++ b/src/new.spec.js @@ -113,53 +113,43 @@ describe("withStore", () => { }); it("are not called when its state/props dependencies do not change", async () => { - const baz = jest.fn(({ qux }, { bar }) => bar * qux); - const props = { bar: 2, thud: 9 }; + const sum = jest.fn(({ a }, { b }) => a + b); + const props = { b: 2, c: 9 }; const { effects, getState, setParentProps } = makeTestInstance( { - initialState: () => ({ qux: 1, corge: 4 }), - effects: { - changeState() { - this.state.corge = 8; - }, - }, + initialState: () => ({ a: 1, d: 4 }), computed: { - baz, + sum, }, }, props ); - expect(getState().baz).toBe(2); - setParentProps({ thud: 8 }); - await effects.changeState(); - expect(getState().baz).toBe(2); - expect(baz.mock.calls.length).toBe(1); + expect(getState().sum).toBe(3); + setParentProps({ c: 8 }); + await effects._setState({ d: 8 }); + expect(getState().sum).toBe(3); + expect(sum.mock.calls.length).toBe(1); }); it("is called when its state/props dependencies change", async () => { - const baz = jest.fn(({ bar }, { qux }) => bar + qux + 2); - const props = { qux: 2 }; + const sum = jest.fn(({ a }, { b }) => a + b); + const props = { b: 2, c: 9 }; const { effects, getState, setParentProps } = makeTestInstance( { - initialState: () => ({ bar: 3 }), - effects: { - changeState() { - this.state.bar = 5; - }, - }, + initialState: () => ({ a: 1, d: 4 }), computed: { - baz, + sum, }, }, props ); - setParentProps({ qux: 4 }); - expect(getState().baz).toBe(9); - await effects.changeState(); - expect(getState().baz).toBe(11); - expect(baz.mock.calls.length).toBe(2); + expect(getState().sum).toBe(3); + setParentProps({ b: 3 }); + await effects._setState({ a: 2 }); + expect(getState().sum).toBe(5); + expect(sum.mock.calls.length).toBe(2); }); }); }); From a30016fe8f88a77c6de3bddc4b9446794df690b5 Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Thu, 14 Mar 2019 13:26:52 +0100 Subject: [PATCH 5/6] Update new.spec.js --- src/new.spec.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/new.spec.js b/src/new.spec.js index 89670a5..32a5903 100644 --- a/src/new.spec.js +++ b/src/new.spec.js @@ -126,8 +126,11 @@ describe("withStore", () => { ); expect(getState().sum).toBe(3); + expect(sum.mock.calls.length).toBe(1); + setParentProps({ c: 8 }); await effects._setState({ d: 8 }); + expect(getState().sum).toBe(3); expect(sum.mock.calls.length).toBe(1); }); @@ -146,8 +149,15 @@ describe("withStore", () => { ); expect(getState().sum).toBe(3); - setParentProps({ b: 3 }); + expect(sum.mock.calls.length).toBe(1); + await effects._setState({ a: 2 }); + + expect(getState().sum).toBe(4); + expect(sum.mock.calls.length).toBe(2); + + setParentProps({ b: 3 }); + expect(getState().sum).toBe(5); expect(sum.mock.calls.length).toBe(2); }); From 5b9bfe58b486a8c34fff8685e1e5fc932d0033e1 Mon Sep 17 00:00:00 2001 From: Mohamedox Date: Thu, 14 Mar 2019 13:29:16 +0100 Subject: [PATCH 6/6] fix --- src/new.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/new.spec.js b/src/new.spec.js index 32a5903..fa4b62e 100644 --- a/src/new.spec.js +++ b/src/new.spec.js @@ -159,7 +159,7 @@ describe("withStore", () => { setParentProps({ b: 3 }); expect(getState().sum).toBe(5); - expect(sum.mock.calls.length).toBe(2); + expect(sum.mock.calls.length).toBe(3); }); }); });