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

Function executeSharedPropertyObserverTests

test/shared.js:53–185  ·  view source on GitHub ↗
(obj, observer, done)

Source from the content-addressed store, hash-verified

51}
52
53export function executeSharedPropertyObserverTests(obj, observer, done) {
54 let context = 'test-context';
55 let callable0 = { call: jasmine.createSpy('callable0') };
56 let callable1 = { call: jasmine.createSpy('callable1') };
57 let callable2 = { call: jasmine.createSpy('callable2') };
58 let callable3 = { call: jasmine.createSpy('callable3') };
59 let callable4 = { call: jasmine.createSpy('callable4') };
60 let callable5 = { call: jasmine.createSpy('callable5') };
61 let oldValue;
62 let newValue;
63 let values = ['alkjdfs', 0, false, {}, [], null, undefined, 'foo'];
64 let next;
65 spyOn(observer, 'addSubscriber').and.callThrough();
66 spyOn(observer, 'removeSubscriber').and.callThrough();
67 // hasSubscribers, hasSubscriber
68 expect(observer.hasSubscribers()).toBe(false);
69 expect(observer.hasSubscriber(context, callable0)).toBe(false);
70 observer.subscribe(context, callable0);
71 expect(observer.addSubscriber).toHaveBeenCalledWith(context, callable0);
72 expect(countSubscribers(observer)).toBe(1);
73 expect(observer.hasSubscribers()).toBe(true);
74 expect(observer.hasSubscriber(context, callable0)).toBe(true);
75 // doesn't allow multiple subscribe
76 observer.subscribe(context, callable0);
77 expect(observer.addSubscriber).toHaveBeenCalledWith(context, callable0);
78 expect(countSubscribers(observer)).toBe(1);
79 // doesn't allow multiple unsubscribe
80 observer.unsubscribe(context, callable0);
81 expect(observer.removeSubscriber).toHaveBeenCalledWith(context, callable0);
82 expect(countSubscribers(observer)).toBe(0);
83 observer.unsubscribe(context, callable0);
84 expect(observer.removeSubscriber).toHaveBeenCalledWith(context, callable0);
85 expect(countSubscribers(observer)).toBe(0);
86
87 // overflows into "rest" array
88 observer.subscribe(context, callable0);
89 expect(observer._callable0).toBe(callable0);
90 expect(countSubscribers(observer)).toBe(1);
91 expect(observer.hasSubscribers()).toBe(true);
92 expect(observer.hasSubscriber(context, callable0)).toBe(true);
93
94 observer.subscribe(context, callable1);
95 expect(observer._callable1).toBe(callable1);
96 expect(countSubscribers(observer)).toBe(2);
97 expect(observer.hasSubscribers()).toBe(true);
98 expect(observer.hasSubscriber(context, callable1)).toBe(true);
99
100 observer.subscribe(context, callable2);
101 expect(observer._callable2).toBe(callable2);
102 expect(countSubscribers(observer)).toBe(3);
103 expect(observer.hasSubscribers()).toBe(true);
104 expect(observer.hasSubscriber(context, callable2)).toBe(true);
105
106 observer.subscribe(context, callable3);
107 expect(observer._callablesRest[0]).toBe(callable3);
108 expect(countSubscribers(observer)).toBe(4);
109 expect(observer.hasSubscribers()).toBe(true);
110 expect(observer.hasSubscriber(context, callable3)).toBe(true);

Calls 6

countSubscribersFunction · 0.85
subscribeMethod · 0.65
unsubscribeMethod · 0.65
getValueMethod · 0.65
setValueMethod · 0.65
resetMethod · 0.65

Tested by

no test coverage detected