MCPcopy Create free account
hub / github.com/aurelia/binding / exerciseBindingBehavior

Function exerciseBindingBehavior

test/binding-expression.spec.js:209–244  ·  view source on GitHub ↗
(callback)

Source from the content-addressed store, hash-verified

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});

Callers 1

Calls 5

createScopeForTestFunction · 0.90
callbackFunction · 0.85
bindMethod · 0.65
getObserverMethod · 0.65
unbindMethod · 0.65

Tested by

no test coverage detected