UNPKG

@danielkalen/simplybind

Version:

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

99 lines (74 loc) 3.04 kB
suite "Condition Bindings", ()-> test "Binding single prop to multiple ObjectProps + condition", ()-> dispatcher = 'prop':'value1' objectA.prop1 = objectB.prop1 = objectC.prop1 = null allowUpdate = false SimplyBind('prop', {updateOnBind:false}).of(dispatcher) .to('multi:prop1').of([objectA, objectB, objectC]) .condition ()-> allowUpdate expect(objectA.prop1).to.equal null expect(objectB.prop1).to.equal null expect(objectC.prop1).to.equal null dispatcher.prop = 'value2' expect(dispatcher.prop).to.equal 'value2' expect(objectA.prop1).to.equal null expect(objectB.prop1).to.equal null expect(objectC.prop1).to.equal null allowUpdate = true dispatcher.prop = 'value3' expect(dispatcher.prop).to.equal 'value3' expect(objectA.prop1).to.equal 'value3' expect(objectB.prop1).to.equal 'value3' expect(objectC.prop1).to.equal 'value3' restartSandbox() test "Binding multiple ObjectProp to a single prop + condition", ()-> receiver = 'prop':null objectA.prop1 = objectB.prop1 = objectC.prop1 = 'value1' allowUpdate = false SimplyBind('multi:prop1', {updateOnBind:false}).of([objectA, objectB, objectC]) .to('prop').of(receiver) .condition ()-> allowUpdate expect(receiver.prop).to.equal null expect(objectA.prop1).to.equal 'value1' expect(objectB.prop1).to.equal 'value1' expect(objectC.prop1).to.equal 'value1' objectA.prop1 = 'value2' expect(receiver.prop).to.equal null expect(objectA.prop1).to.equal 'value2' expect(objectB.prop1).to.equal 'value1' expect(objectC.prop1).to.equal 'value1' allowUpdate = true 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' restartSandbox() test "Binding multiple ObjectProp to a single prop both ways + condition", ()-> receiverDispatcher = 'prop':'valueP1' objectA.prop1 = objectB.prop1 = objectC.prop1 = 'value1' allowUpdate = false SimplyBind('multi:prop1', {updateOnBind:false}).of([objectA, objectB, objectC]) .to('prop').of(receiverDispatcher).bothWays() .condition ()-> allowUpdate expect(receiverDispatcher.prop).to.equal 'valueP1' expect(objectA.prop1).to.equal 'value1' expect(objectB.prop1).to.equal 'value1' expect(objectC.prop1).to.equal 'value1' objectA.prop1 = 'value2' expect(receiverDispatcher.prop).to.equal 'valueP1' expect(objectA.prop1).to.equal 'value2' expect(objectB.prop1).to.equal 'value1' expect(objectC.prop1).to.equal 'value1' allowUpdate = true 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()