From a41d25f83e17729e2e7dd5a84f2adef7a584f0a3 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Fri, 21 Feb 2020 18:07:08 +0000 Subject: [PATCH] remove unnecessary file --- packages/client/tests/stateBinding.spec.js | 174 --------------------- 1 file changed, 174 deletions(-) delete mode 100644 packages/client/tests/stateBinding.spec.js diff --git a/packages/client/tests/stateBinding.spec.js b/packages/client/tests/stateBinding.spec.js deleted file mode 100644 index f100d3a1e3..0000000000 --- a/packages/client/tests/stateBinding.spec.js +++ /dev/null @@ -1,174 +0,0 @@ -import { setupBinding } from "../src/state/stateBinding" -import { - BB_STATE_BINDINGPATH, - BB_STATE_FALLBACK, - BB_STATE_BINDINGSOURCE, -} from "../src/state/isState" -import { EVENT_TYPE_MEMBER_NAME } from "../src/state/eventHandlers" -import { writable } from "svelte/store" -import { isFunction } from "lodash/fp" - -describe("setupBinding", () => { - it("should correctly create initials props, including fallback values", () => { - const { store, props, component } = testSetup() - - const { initialProps } = testSetupBinding(store, props, component) - - expect(initialProps.boundWithFallback).toBe("Bob") - expect(initialProps.boundNoFallback).toBeUndefined() - expect(initialProps.unbound).toBe("hello") - - expect(isFunction(initialProps.eventBound)).toBeTruthy() - initialProps.eventBound() - }) - - it("should update component bound props when store is updated", () => { - const { component, store, props } = testSetup() - - const { bind } = testSetupBinding(store, props, component) - bind(component) - - store.update(s => { - s.FirstName = "Bobby" - s.LastName = "Thedog" - s.Customer = { - Name: "ACME inc", - Address: "", - } - s.addressToSet = "123 Main Street" - return s - }) - - expect(component.props.boundWithFallback).toBe("Bobby") - expect(component.props.boundNoFallback).toBe("Thedog") - expect(component.props.multiPartBound).toBe("ACME inc") - }) - - it("should not update unbound props when store is updated", () => { - const { component, store, props } = testSetup() - - const { bind } = testSetupBinding(store, props, component) - bind(component) - - store.update(s => { - s.FirstName = "Bobby" - s.LastName = "Thedog" - s.Customer = { - Name: "ACME inc", - Address: "", - } - s.addressToSet = "123 Main Street" - return s - }) - - expect(component.props.unbound).toBe("hello") - }) - - it("should update event handlers on state change", () => { - const { component, store, props } = testSetup() - - const { bind } = testSetupBinding(store, props, component) - bind(component) - - expect(component.props.boundToEventOutput).toBe("initial address") - component.props.eventBound() - expect(component.props.boundToEventOutput).toBe("event fallback address") - - store.update(s => { - s.addressToSet = "123 Main Street" - return s - }) - - component.props.eventBound() - expect(component.props.boundToEventOutput).toBe("123 Main Street") - }) - - it("event handlers should recognise event parameter", () => { - const { component, store, props } = testSetup() - - const { bind } = testSetupBinding(store, props, component) - bind(component) - - expect(component.props.boundToEventOutput).toBe("initial address") - component.props.eventBoundUsingEventParam({ - addressOverride: "Overridden Address", - }) - expect(component.props.boundToEventOutput).toBe("Overridden Address") - - store.update(s => { - s.addressToSet = "123 Main Street" - return s - }) - - component.props.eventBound() - expect(component.props.boundToEventOutput).toBe("123 Main Street") - - component.props.eventBoundUsingEventParam({ - addressOverride: "Overridden Address", - }) - expect(component.props.boundToEventOutput).toBe("Overridden Address") - }) - - it("should bind initial props to supplied context", () => { - const { component, store, props } = testSetup() - - const { bind } = testSetupBinding(store, props, component, { - ContextValue: "Real Context Value", - }) - bind(component) - - expect(component.props.boundToContext).toBe("Real Context Value") - }) -}); - -const testSetupBinding = (store, props, component, context) => { - const setup = setupBinding(store, props, undefined, context) - component.props = setup.initialProps // svelte does this for us in real life - return setup -} -const testSetup = () => { - const c = {} - - c.props = {} - c.$set = propsToSet => { - for (let pname in propsToSet) c.props[pname] = propsToSet[pname] - } - - const binding = (path, fallback, source) => ({ - [BB_STATE_BINDINGPATH]: path, - [BB_STATE_FALLBACK]: fallback, - [BB_STATE_BINDINGSOURCE]: source || "store" - }); - - const event = (handlerType, parameters) => ({ - [EVENT_TYPE_MEMBER_NAME]: handlerType, - parameters - }); - - const props = { - boundWithFallback: binding("FirstName", "Bob"), - boundNoFallback: binding("LastName"), - unbound: "hello", - multiPartBound: binding("Customer.Name", "ACME"), - boundToEventOutput: binding("Customer.Address", "initial address"), - boundToContext: binding("ContextValue", "context fallback", "context"), - eventBound: [ - event("Set State", { - path: "Customer.Address", - value: binding("addressToSet", "event fallback address"), - }), - ], - eventBoundUsingEventParam: [ - event("Set State", { - path: "Customer.Address", - value: binding("addressOverride", "", "event"), - }), - ], - } - - return { - component: c, - store: writable({}), - props, - } -}