UNPKG

2.35 kBJavaScriptView Raw
1describe('async',function() {
2 "use strict";
3
4 describe('async beforeEach()',function() {
5 var beforeEachReady = false;
6 var itReady = false;
7
8 beforeEach(function(done) {
9 function ready() {
10 beforeEachReady = true;
11 done();
12 }
13 setTimeout(ready, 0);
14 });
15
16 it('should not call it() until beforeEach() is ready', function(done) {
17 expect(beforeEachReady).toEqual(true);
18 function ready() {
19 itReady = true;
20 done();
21 }
22 setTimeout(ready, 0);
23 });
24
25 it('should wait before previous it() is ready', function() {
26 expect(itReady).toEqual(true);
27 });
28
29 });
30
31 describe('promises', function() {
32 var $q;
33 var beforeEachReady = false;
34 var itReady = false;
35
36 beforeEach(function() {
37 angular.mock.inject(["$q", function(_$q_) {
38 $q = _$q_;
39 }]);
40 });
41
42 beforeEach(function() {
43 var d = $q.defer();
44 function ready() {
45 beforeEachReady = true;
46 d.resolve();
47 }
48 setTimeout(ready, 0);
49 return d.promise;
50 });
51
52 it('should wait for returned promises from beforeEach() to be resolved', function() {
53 expect(beforeEachReady).toEqual(true);
54 var d = $q.defer();
55 function ready() {
56 itReady = true;
57 d.resolve();
58 }
59 setTimeout(ready, 0);
60 return d.promise;
61 });
62
63 it('should wait for returned promises from it() to be resolved', function() {
64 expect(itReady).toEqual(true);
65 });
66
67 it('should resolve promises asynchronously and not fail with a timeout', function(done) {
68 var d = $q.defer();
69 var p = d.promise;
70 var resolved = false;
71 var thenCalled = false;
72 p.then(function() {
73 expect(resolved).toEqual(true);
74 thenCalled = true;
75 done();
76 });
77 expect(thenCalled).toEqual(false);
78 d.resolve();
79 resolved = true;
80 expect(thenCalled).toEqual(false);
81 });
82 });
83});