Skip to content

Commit 7e836f2

Browse files
chandan-singhajoslin
authored andcommitted
test(promiseTracker): add tests for tracker.tracking()
1 parent 87776e5 commit 7e836f2

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed

test/unit/provider.spec.js

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ describe('promiseTracker provider', function() {
3030
expect(promiseTracker().active()).toBe(false);
3131
});
3232

33+
it('should not be tracking by default', function() {
34+
expect(promiseTracker().tracking()).toBe(false);
35+
});
36+
3337
describe('addPromise', function() {
3438

3539
it('should error with object', function() {
@@ -77,6 +81,20 @@ describe('promiseTracker provider', function() {
7781
expect(trackerPromise.reject).toHaveBeenCalledWith(2);
7882
});
7983

84+
it('should start tracking with then, $then, $promise.then', function() {
85+
var tracker = promiseTracker();
86+
tracker.addPromise(q.defer().promise);
87+
expect(tracker.tracking()).toBe(true);
88+
89+
tracker = promiseTracker();
90+
tracker.addPromise({ $then: q.defer().promise.then });
91+
expect(tracker.tracking()).toBe(true);
92+
93+
tracker = promiseTracker();
94+
tracker.addPromise({ $promise: { then: q.defer().promise.then } });
95+
expect(tracker.tracking()).toBe(true);
96+
});
97+
8098
});
8199

82100
describe('createPromise', function() {
@@ -111,6 +129,32 @@ describe('promiseTracker provider', function() {
111129
expect(tracker.active()).toBe(false);
112130
});
113131

132+
it('should set tracking to true when promise is added', function() {
133+
var tracker = promiseTracker();
134+
tracker.createPromise();
135+
expect(tracker.tracking()).toBe(true);
136+
});
137+
138+
it('should set tracking to true when promises are added', function() {
139+
var tracker = promiseTracker();
140+
tracker.createPromise();
141+
tracker.createPromise();
142+
expect(tracker.tracking()).toBe(true);
143+
});
144+
145+
it('should set tracking to false when promises are added and resolved/rejected', function() {
146+
var tracker = promiseTracker();
147+
var p1 = tracker.createPromise();
148+
var p2 = tracker.createPromise();
149+
expect(tracker.tracking()).toBe(true);
150+
p1.resolve();
151+
digest();
152+
expect(tracker.tracking()).toBe(true);
153+
p2.reject();
154+
digest();
155+
expect(tracker.tracking()).toBe(false);
156+
});
157+
114158
});
115159

116160
it('cancel should deactivate and resolve all promises', function() {
@@ -121,6 +165,7 @@ describe('promiseTracker provider', function() {
121165
tracker.cancel();
122166
expect(p1.resolve).toHaveBeenCalled();
123167
expect(tracker.active()).toBe(false);
168+
expect(tracker.tracking()).toBe(false);
124169
});
125170

126171
it('destroy should be cancel', function() {
@@ -144,6 +189,20 @@ describe('promiseTracker provider', function() {
144189
expect(tracker.active()).toBe(true);
145190
});
146191

192+
it('should be tracking irrespective of the activation delay', function() {
193+
var tracker = promiseTracker({ activationDelay: 1000 });
194+
tracker.createPromise();
195+
196+
//Should be tracking
197+
expect(tracker.tracking()).toBe(true);
198+
tracker.createPromise();
199+
expect(tracker.tracking()).toBe(true);
200+
201+
//Flush, it should be tracking
202+
timeout.flush();
203+
expect(tracker.tracking()).toBe(true);
204+
});
205+
147206
});
148207

149208
describe('minDuration', function() {
@@ -176,6 +235,34 @@ describe('promiseTracker provider', function() {
176235
expect(tracker.active()).toBe(false);
177236
});
178237

238+
it('should be tracking for at least minDuration', function() {
239+
var tracker = promiseTracker({ minDuration: 1000 });
240+
var p1 = tracker.createPromise();
241+
expect(tracker.tracking()).toBe(true);
242+
p1.resolve();
243+
digest();
244+
//Should still be tracking until minDuration timeout elapses
245+
expect(tracker.tracking()).toBe(true);
246+
timeout.flush();
247+
expect(tracker.tracking()).toBe(false);
248+
});
249+
250+
it('should continue tracking if there is still another promise active', function() {
251+
var tracker = promiseTracker({ minDuration: 1000 });
252+
var p1 = tracker.createPromise();
253+
expect(tracker.tracking()).toBe(true);
254+
p1.resolve();
255+
digest();
256+
//Should still be tracking until minDuration timeout elapses
257+
expect(tracker.tracking()).toBe(true);
258+
var p2 = tracker.createPromise();
259+
timeout.flush();
260+
expect(tracker.tracking()).toBe(true);
261+
p2.resolve();
262+
digest();
263+
expect(tracker.tracking()).toBe(false);
264+
});
265+
179266
});
180267

181268
describe('minDuration + activationDelay', function() {
@@ -193,6 +280,20 @@ describe('promiseTracker provider', function() {
193280
expect(tracker.active()).toBe(false);
194281
});
195282

283+
it('should delay, be tracking, wait until duration, then be not tracking', function() {
284+
var tracker = promiseTracker({ minDuration: 500, activationDelay: 250 });
285+
expect(tracker.tracking()).toBe(false);
286+
var p1 = tracker.createPromise();
287+
expect(tracker.tracking()).toBe(true);
288+
timeout.flush();
289+
expect(tracker.tracking()).toBe(true);
290+
p1.resolve();
291+
digest();
292+
expect(tracker.tracking()).toBe(true);
293+
timeout.flush();
294+
expect(tracker.tracking()).toBe(false);
295+
});
296+
196297
});
197298

198299
});

0 commit comments

Comments
 (0)