(callback)
| 207 | let bindingExpression = bindingEngine.createBindingExpression('value', 'foo.bar & numberToString:arg & multiply', bindingMode.twoWay, lookupFunctions); |
| 208 | let binding = bindingExpression.createBinding(target); |
| 209 | function exerciseBindingBehavior(callback) { |
| 210 | let scope = createScopeForTest(source); |
| 211 | binding.bind(scope); |
| 212 | expect(bindingBehaviors.numberToString.bind).toHaveBeenCalledWith(binding, scope, 'hello world'); |
| 213 | expect(bindingBehaviors.multiply.bind).toHaveBeenCalledWith(binding, scope); |
| 214 | expect(target.value).toBe(source.foo.bar); |
| 215 | let sourceObserver = bindingEngine.observerLocator.getObserver(source.foo, 'bar'); |
| 216 | expect(sourceObserver.hasSubscribers()).toBe(true); |
| 217 | let argObserver = bindingEngine.observerLocator.getObserver(source, 'arg'); |
| 218 | expect(argObserver.hasSubscribers()).toBe(false); |
| 219 | expect(binding.targetObserver.hasSubscribers()).toBe(true); |
| 220 | source.foo.bar = 'xup'; |
| 221 | setTimeout(() => { |
| 222 | expect(target.value).toBe(source.foo.bar); |
| 223 | source.arg = 'goodbye world'; |
| 224 | setTimeout(() => { |
| 225 | expect(target.value).toBe(source.foo.bar); |
| 226 | target.value = 'burrito'; |
| 227 | target.dispatchEvent(DOM.createCustomEvent('change')); |
| 228 | setTimeout(() => { |
| 229 | expect(source.foo.bar).toBe(target.value); |
| 230 | binding.unbind(); |
| 231 | expect(bindingBehaviors.numberToString.unbind).toHaveBeenCalledWith(binding, scope); |
| 232 | expect(bindingBehaviors.multiply.unbind).toHaveBeenCalledWith(binding, scope); |
| 233 | expect(sourceObserver.hasSubscribers()).toBe(false); |
| 234 | expect(argObserver.hasSubscribers()).toBe(false); |
| 235 | expect(binding.targetObserver.hasSubscribers()).toBe(false); |
| 236 | source.foo.bar = 'test'; |
| 237 | setTimeout(() => { |
| 238 | expect(target.value).toBe('burrito'); |
| 239 | callback(); |
| 240 | }, checkDelay * 2); |
| 241 | }, checkDelay * 2); |
| 242 | }, checkDelay * 2); |
| 243 | }, checkDelay * 2); |
| 244 | } |
| 245 | exerciseBindingBehavior(() => exerciseBindingBehavior(done)); |
| 246 | }); |
| 247 | }); |
no test coverage detected