@danielkalen/simplybind
Version:
Magically simple, framework-less one-way/two-way data binding for frontend/backend in ~5kb.
88 lines (65 loc) • 2.72 kB
text/coffeescript
suite "Basic Bindings", ()->
test "Binding single prop to multiple ObjectProps", ()->
dispatcher = 'prop':'value1'
objectA.prop1 = objectB.prop1 = objectC.prop1 = null
SimplyBind('prop').of(dispatcher)
.to('multi:prop1').of([objectA, objectB, objectC])
expect(objectA.prop1).to.equal 'value1'
expect(objectB.prop1).to.equal 'value1'
expect(objectC.prop1).to.equal 'value1'
dispatcher.prop = '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", ()->
receiver = 'prop':null
objectA.prop1 = objectB.prop1 = objectC.prop1 = 'value1'
SimplyBind('multi:prop1').of([objectA, objectB, objectC])
.to('prop').of(receiver)
expect(receiver.prop).to.equal 'value1'
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 '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", ()->
receiverDispatcher = 'prop':'valueP1'
objectA.prop1 = objectB.prop1 = objectC.prop1 = 'value1'
SimplyBind('multi:prop1').of([objectA, objectB, objectC])
.to('prop').of(receiverDispatcher).bothWays()
expect(receiverDispatcher.prop).to.equal 'value1'
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 '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()