UNPKG

@danielkalen/simplybind

Version:

Magically simple, framework-less one-way/two-way data binding for frontend/backend in ~5kb.

80 lines (58 loc) 2.46 kB
suite "Transform Bindings", ()-> test "Binding single prop to multiple ObjectProps + transform", ()-> dispatcher = 'prop':'value1' objectA.prop1 = objectB.prop1 = objectC.prop1 = null SimplyBind('prop').of(dispatcher) .to('multi:prop1').of([objectA, objectB, objectC]) .transform (value)-> value.toUpperCase() dispatcher.prop = 'value2' expect(dispatcher.prop).to.equal 'value2' expect(objectA.prop1).to.equal 'VALUE2' expect(objectB.prop1).to.equal 'VALUE2' expect(objectC.prop1).to.equal 'VALUE2' restartSandbox() test "Binding multiple ObjectProp to a single prop + transform", ()-> receiver = 'prop':null objectA.prop1 = objectB.prop1 = objectC.prop1 = 'value1' SimplyBind('multi:prop1').of([objectA, objectB, objectC]) .to('prop').of(receiver) .transform (value)-> value.toUpperCase() objectA.prop1 = 'value2' expect(receiver.prop).to.equal 'VALUE2' expect(objectA.prop1).to.equal 'value2' expect(objectB.prop1).to.equal 'value1' expect(objectC.prop1).to.equal 'value1' objectB.prop1 = 'value3' expect(receiver.prop).to.equal 'VALUE3' expect(objectA.prop1).to.equal 'value2' expect(objectB.prop1).to.equal 'value3' expect(objectC.prop1).to.equal 'value1' objectC.prop1 = 'value4' expect(receiver.prop).to.equal 'VALUE4' expect(objectA.prop1).to.equal 'value2' expect(objectB.prop1).to.equal 'value3' expect(objectC.prop1).to.equal 'value4' restartSandbox() test "Binding multiple ObjectProp to a single prop both ways + transform", ()-> receiverDispatcher = 'prop':'valueP1' objectA.prop1 = objectB.prop1 = objectC.prop1 = 'value1' SimplyBind('multi:prop1').of([objectA, objectB, objectC]) .to('prop').of(receiverDispatcher).bothWays() .transform (value)-> value.toUpperCase() objectA.prop1 = 'value2' expect(receiverDispatcher.prop).to.equal 'VALUE2' expect(objectA.prop1).to.equal 'value2' expect(objectB.prop1).to.equal 'VALUE2' expect(objectC.prop1).to.equal 'VALUE2' objectB.prop1 = 'value3' receiverDispatcher.prop = 'valueP3' expect(receiverDispatcher.prop).to.equal 'valueP3' expect(objectA.prop1).to.equal 'VALUEP3' expect(objectB.prop1).to.equal 'VALUEP3' expect(objectC.prop1).to.equal 'VALUEP3' objectC.prop1 = 'value4' expect(receiverDispatcher.prop).to.equal 'VALUE4' expect(objectA.prop1).to.equal 'VALUE4' expect(objectB.prop1).to.equal 'VALUE4' expect(objectC.prop1).to.equal 'value4' restartSandbox()