@danielkalen/simplybind
Version:
Magically simple, framework-less one-way/two-way data binding for frontend/backend in ~5kb.
57 lines (41 loc) • 1.76 kB
text/coffeescript
suite "Unbinding", ()->
test "Binding single prop to multiple ObjectProps and then calling .unBind() should unbind all", ()->
dispatcher = 'prop':'value1'
objectA.prop1 = objectB.prop1 = objectC.prop1 = null
binding = 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'
binding.unBind()
dispatcher.prop = 'value2'
expect(objectA.prop1).to.equal 'value1'
expect(objectB.prop1).to.equal 'value1'
expect(objectC.prop1).to.equal 'value1'
restartSandbox()
test "Binding multiple ObjectProps to a single prop and then calling .unBind() should unbind all props from that single prop", ()->
receiver = 'prop':null
objectA.prop1 = objectB.prop1 = objectC.prop1 = 'value1'
binding = 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'
binding.unBind()
objectA.prop1 = 'value2'
expect(receiver.prop).to.equal 'value1'
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 'value1'
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 'value1'
expect(objectA.prop1).to.equal 'value2'
expect(objectB.prop1).to.equal 'value3'
expect(objectC.prop1).to.equal 'value4'
restartSandbox()