UNPKG

@danielkalen/simplybind

Version:

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

150 lines (100 loc) 4.97 kB
suite "Settings/Binding-Options", ()-> test "SimplyBind.settings should contain the global settings list", ()-> settings = SimplyBind.settings expect(settings.silent).not.to.be.undefined expect(settings.placeholder).not.to.be.undefined test "SimplyBind.defaultOptions should contain the default binding options list", ()-> options = SimplyBind.defaultOptions expect(options.dispatchEvents).not.to.be.undefined expect(options.updateEvenIfSame).not.to.be.undefined expect(options.updateOnBind).not.to.be.undefined expect(options.simpleSelector).not.to.be.undefined expect(options.promiseTransforms).not.to.be.undefined test "SimplyBind.settings.placeholder should only accept arrays with lengths of 2 as a new value", ()-> expect(SimplyBind.settings.placeholder).to.eql ['{{', '}}'] SimplyBind.settings.placeholder = 'na' expect(SimplyBind.settings.placeholder).to.eql ['{{', '}}'] SimplyBind.settings.placeholder = undefined expect(SimplyBind.settings.placeholder).to.eql ['{{', '}}'] SimplyBind.settings.placeholder = null expect(SimplyBind.settings.placeholder).to.eql ['{{', '}}'] SimplyBind.settings.placeholder = ()-> expect(SimplyBind.settings.placeholder).to.eql ['{{', '}}'] SimplyBind.settings.placeholder = [] expect(SimplyBind.settings.placeholder).to.eql ['{{', '}}'] SimplyBind.settings.placeholder = ['{{', '{{', '}}'] expect(SimplyBind.settings.placeholder).to.eql ['{{', '}}'] SimplyBind.settings.placeholder = ['[[', ']]'] expect(SimplyBind.settings.placeholder).to.eql ['[[', ']]'] SimplyBind.settings.placeholder = ['{{', '}}'] expect(SimplyBind.settings.placeholder).to.eql ['{{', '}}'] test "A custom binding options object can be passed as SimplyBind's second argument to be used for all subscribers added to that publisher interface", ()-> expect(SimplyBind.defaultOptions.updateOnBind).to.be.true dispatcher = value:'uniqueValue' receiver = {1,2,3,4} SimplyBind('value', updateOnBind:false).of(dispatcher) .to('1').of(receiver) .and.to('2').of(receiver) .and.to('3').of(receiver) expect(receiver[1]).not.to.equal 'uniqueValue' expect(receiver[2]).not.to.equal 'uniqueValue' expect(receiver[3]).not.to.equal 'uniqueValue' SimplyBind('value').of(dispatcher) .to('4').of(receiver) expect(receiver[4]).to.equal 'uniqueValue' expect(SimplyBind.defaultOptions.updateOnBind).to.be.true restartSandbox() test "A truthy value can be passed as SimplyBind's third argument to save the specified options to all subscribers and future subscribers of a publisher", ()-> expect(SimplyBind.defaultOptions.updateOnBind).to.be.true dispatcher = value:'uniqueValue' receiver = {1,2,3,4,5,6} SimplyBind('value', {updateOnBind:false}, true).of(dispatcher) .to('1').of(receiver) .and.to('2').of(receiver) .and.to('3').of(receiver) expect(receiver[1]).not.to.equal 'uniqueValue' expect(receiver[2]).not.to.equal 'uniqueValue' expect(receiver[3]).not.to.equal 'uniqueValue' SimplyBind('value').of(dispatcher) .to('4').of(receiver) expect(receiver[4]).not.to.equal 'uniqueValue' SimplyBind('value', {updateOnBind:true}, true).of(dispatcher) .to('5').of(receiver) expect(receiver[5]).to.equal 'uniqueValue' SimplyBind('value').of(dispatcher) .to('6').of(receiver) expect(receiver[6]).to.equal 'uniqueValue' expect(SimplyBind.defaultOptions.updateOnBind).to.be.true restartSandbox() test "A custom binding options object can be used even for a cached binding/publisher", ()-> expect(SimplyBind.defaultOptions.updateOnBind).to.be.true dispatcher = value:'uniqueValue' receiver = {1,2,3,4} SimplyBind('value', {updateOnBind:false}, true).of(dispatcher) .to('1').of(receiver) .and.to('2').of(receiver) .and.to('3').of(receiver) expect(receiver[1]).not.to.equal 'uniqueValue' expect(receiver[2]).not.to.equal 'uniqueValue' expect(receiver[3]).not.to.equal 'uniqueValue' SimplyBind('value', updateOnBind:true).of(dispatcher) .to('4').of(receiver) expect(receiver[4]).to.equal 'uniqueValue' expect(SimplyBind.defaultOptions.updateOnBind).to.be.true restartSandbox() test "Creating a new binding interface for a cached binding without passing an options object shouldn't overwrite existing options", ()-> expect(SimplyBind.defaultOptions.updateOnBind).to.be.true dispatcher = value:'uniqueValue' receiver = {1,2,3,4} SimplyBind('value', {updateOnBind:false}, true).of(dispatcher) .to('1').of(receiver) .and.to('2').of(receiver) .and.to('3').of(receiver) expect(receiver[1]).not.to.equal 'uniqueValue' expect(receiver[2]).not.to.equal 'uniqueValue' expect(receiver[3]).not.to.equal 'uniqueValue' SimplyBind('value', null, true).of(dispatcher) .to('4').of(receiver) expect(receiver[4]).not.to.equal 'uniqueValue' expect(SimplyBind.defaultOptions.updateOnBind).to.be.true restartSandbox()