@@ -6,151 +6,169 @@ describe('$ionicLoading service', function() {
6
6
expect ( loader ) . toBe ( loader2 ) ;
7
7
} ) ) ;
8
8
9
- describe ( 'loader instance ' , function ( ) {
9
+ describe ( '.show() ' , function ( ) {
10
10
11
- describe ( '.show()' , function ( ) {
12
-
13
- it ( 'should retain backdrop if !noBackdrop and !isShown' , inject ( function ( $ionicLoading , $ionicBackdrop ) {
14
- spyOn ( $ionicBackdrop , 'retain' ) ;
15
- var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
16
- loader . show ( { } ) ;
17
- expect ( $ionicBackdrop . retain ) . toHaveBeenCalled ( ) ;
18
- } ) ) ;
19
- it ( 'should not retain backdrop if noBackdrop' , inject ( function ( $ionicLoading , $ionicBackdrop ) {
20
- spyOn ( $ionicBackdrop , 'retain' ) ;
21
- var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
22
- loader . show ( { noBackdrop : true } ) ;
23
- expect ( $ionicBackdrop . retain ) . not . toHaveBeenCalled ( ) ;
24
- } ) ) ;
25
- it ( 'should not retain backdrop if isShown' , inject ( function ( $ionicLoading , $ionicBackdrop ) {
26
- spyOn ( $ionicBackdrop , 'retain' ) ;
27
- var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
28
- loader . isShown = true ;
29
- loader . show ( { } ) ;
30
- expect ( $ionicBackdrop . retain ) . not . toHaveBeenCalled ( ) ;
31
- } ) ) ;
32
-
33
- it ( 'should not timeout if no duration' , inject ( function ( $ionicLoading , $timeout ) {
34
- var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
35
- loader . show ( { } ) ;
36
- expect ( loader . durationTimeout ) . toBeFalsy ( ) ;
37
- } ) ) ;
38
- it ( 'should timeout if duration' , inject ( function ( $ionicLoading , $timeout ) {
39
- var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
40
- loader . show ( { duration : 1000 } ) ;
41
- expect ( loader . durationTimeout ) . toBeTruthy ( ) ;
42
- expect ( loader . durationTimeout . $$timeoutId ) . toBeTruthy ( ) ;
43
- } ) ) ;
44
- it ( 'should add active' , inject ( function ( $ionicLoading , $timeout ) {
45
- var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
46
- ionic . requestAnimationFrame = function ( cb ) { cb ( ) ; } ;
47
- expect ( loader . element . hasClass ( 'active' ) ) . toBe ( false ) ;
48
- loader . show ( { } ) ;
49
- $timeout . flush ( ) ;
50
- expect ( loader . element . hasClass ( 'active' ) ) . toBe ( true ) ;
51
- } ) ) ;
52
- it ( 'should isShown = true' , inject ( function ( $ionicLoading ) {
53
- var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
54
- expect ( loader . isShown ) . toBeFalsy ( ) ;
55
- loader . show ( { } ) ;
56
- expect ( loader . isShown ) . toBe ( true ) ;
57
- } ) ) ;
58
-
59
- it ( 'should use options.template' , inject ( function ( $ionicLoading , $rootScope ) {
60
- var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
61
- loader . show ( { template : 'foo {{"bar"}}' } ) ;
62
- $rootScope . $apply ( ) ;
63
- expect ( loader . element . text ( ) ) . toBe ( 'foo bar' ) ;
64
- } ) ) ;
65
-
66
- it ( 'should use options.templateUrl' , inject ( function ( $ionicLoading , $rootScope , $ionicTemplateLoader , $q ) {
67
- spyOn ( $ionicTemplateLoader , 'load' ) . andReturn ( $q . when ( '{{1}} content' ) ) ;
68
- var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
69
- loader . show ( { templateUrl : 'template.html' } ) ;
70
- expect ( $ionicTemplateLoader . load ) . toHaveBeenCalledWith ( 'template.html' ) ;
71
- $rootScope . $apply ( ) ;
72
- expect ( loader . element . text ( ) ) . toBe ( '1 content' ) ;
73
- } ) ) ;
74
-
75
- } ) ;
76
-
77
- describe ( '.hide()' , function ( ) {
78
-
79
- it ( 'should release backdrop if hasBackdrop and isShown' , inject ( function ( $ionicLoading , $ionicBackdrop ) {
80
- spyOn ( $ionicBackdrop , 'release' ) ;
81
- var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
82
- loader . isShown = true ;
83
- loader . hasBackdrop = true ;
84
- loader . hide ( ) ;
85
- expect ( $ionicBackdrop . release ) . toHaveBeenCalled ( ) ;
86
- } ) ) ;
87
- it ( 'should not release backdrop if !hasBackdrop' , inject ( function ( $ionicLoading , $ionicBackdrop ) {
88
- spyOn ( $ionicBackdrop , 'release' ) ;
89
- var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
90
- loader . isShown = true ;
91
- loader . hide ( ) ;
92
- expect ( $ionicBackdrop . release ) . not . toHaveBeenCalled ( ) ;
93
- } ) ) ;
94
- it ( 'should cancel durationTimeout and set isShown to false' , inject ( function ( $ionicLoading , $timeout ) {
95
- spyOn ( $timeout , 'cancel' ) ;
96
- var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
97
- loader . durationTimeout = { } ;
98
- loader . isShown = true ;
99
- loader . hide ( { } ) ;
100
- expect ( $timeout . cancel ) . toHaveBeenCalledWith ( loader . durationTimeout ) ;
101
- expect ( loader . isShown ) . toBe ( false ) ;
102
- } ) ) ;
103
-
104
- } ) ;
11
+ it ( 'should retain backdrop if !noBackdrop and !isShown' , inject ( function ( $ionicLoading , $ionicBackdrop ) {
12
+ spyOn ( $ionicBackdrop , 'retain' ) ;
13
+ var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
14
+ loader . show ( { } ) ;
15
+ expect ( $ionicBackdrop . retain ) . toHaveBeenCalled ( ) ;
16
+ } ) ) ;
17
+ it ( 'should not retain backdrop if noBackdrop' , inject ( function ( $ionicLoading , $ionicBackdrop ) {
18
+ spyOn ( $ionicBackdrop , 'retain' ) ;
19
+ var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
20
+ loader . show ( { noBackdrop : true } ) ;
21
+ expect ( $ionicBackdrop . retain ) . not . toHaveBeenCalled ( ) ;
22
+ } ) ) ;
23
+ it ( 'should not retain backdrop if isShown' , inject ( function ( $ionicLoading , $ionicBackdrop ) {
24
+ spyOn ( $ionicBackdrop , 'retain' ) ;
25
+ var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
26
+ loader . isShown = true ;
27
+ loader . show ( { } ) ;
28
+ expect ( $ionicBackdrop . retain ) . not . toHaveBeenCalled ( ) ;
29
+ } ) ) ;
105
30
106
- it ( 'should show with options ' , inject ( function ( $ionicLoading , $timeout ) {
31
+ it ( 'should not timeout if no duration ' , inject ( function ( $ionicLoading , $timeout ) {
107
32
var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
108
- spyOn ( loader , 'show' ) ;
109
- var options = { } ;
110
- $ionicLoading . show ( options ) ;
33
+ loader . show ( { } ) ;
34
+ expect ( loader . durationTimeout ) . toBeFalsy ( ) ;
35
+ } ) ) ;
36
+ it ( 'should timeout if duration' , inject ( function ( $ionicLoading , $timeout ) {
37
+ var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
38
+ loader . show ( { duration : 1000 } ) ;
39
+ expect ( loader . durationTimeout ) . toBeTruthy ( ) ;
40
+ expect ( loader . durationTimeout . $$timeoutId ) . toBeTruthy ( ) ;
41
+ } ) ) ;
42
+ it ( 'should add active' , inject ( function ( $ionicLoading , $timeout ) {
43
+ var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
44
+ ionic . requestAnimationFrame = function ( cb ) { cb ( ) ; } ;
45
+ expect ( loader . element . hasClass ( 'active' ) ) . toBe ( false ) ;
46
+ loader . show ( { } ) ;
111
47
$timeout . flush ( ) ;
112
- expect ( loader . show ) . toHaveBeenCalledWith ( options ) ;
48
+ expect ( loader . element . hasClass ( 'active' ) ) . toBe ( true ) ;
49
+ } ) ) ;
50
+ it ( 'should isShown = true' , inject ( function ( $ionicLoading ) {
51
+ var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
52
+ expect ( loader . isShown ) . toBeFalsy ( ) ;
53
+ loader . show ( { } ) ;
54
+ expect ( loader . isShown ) . toBe ( true ) ;
113
55
} ) ) ;
114
56
115
- it ( 'should $timeout.cancel & hide ' , inject ( function ( $ionicLoading , $rootScope , $timeout ) {
57
+ it ( 'should use options.template ' , inject ( function ( $ionicLoading , $rootScope ) {
116
58
var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
117
- spyOn ( $timeout , 'cancel' ) ;
118
- spyOn ( loader , 'hide' ) ;
119
- $ionicLoading . hide ( ) ;
120
- expect ( $timeout . cancel ) . toHaveBeenCalled ( ) ;
59
+ loader . show ( { template : 'foo {{"bar"}}' } ) ;
121
60
$rootScope . $apply ( ) ;
122
- expect ( loader . hide ) . toHaveBeenCalled ( ) ;
61
+ expect ( loader . element . text ( ) ) . toBe ( 'foo bar' ) ;
123
62
} ) ) ;
124
63
125
- it ( 'hide should cancel show delay and just go ahead and hide ' , inject ( function ( $ionicLoading , $timeout ) {
126
- ionic . requestAnimationFrame = function ( cb ) { cb ( ) ; } ;
64
+ it ( 'should use options.templateUrl ' , inject ( function ( $ionicLoading , $rootScope , $ionicTemplateLoader , $q ) {
65
+ spyOn ( $ionicTemplateLoader , 'load' ) . andReturn ( $q . when ( '{{1}} content' ) ) ;
127
66
var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
128
- spyOn ( loader , 'hide' ) . andCallThrough ( ) ;
129
- spyOn ( loader , 'show' ) . andCallThrough ( ) ;
130
- $ionicLoading . show ( { delay : 1000 } ) ;
131
- $ionicLoading . hide ( ) ;
132
- expect ( loader . show ) . not . toHaveBeenCalled ( ) ;
133
- expect ( loader . hide ) . not . toHaveBeenCalled ( ) ;
134
- $timeout . flush ( ) ;
135
- expect ( loader . show ) . not . toHaveBeenCalled ( ) ;
136
- expect ( loader . hide ) . toHaveBeenCalled ( ) ;
137
- expect ( loader . isShown ) . toBe ( false ) ;
138
- expect ( loader . element . hasClass ( 'active' ) ) . toBe ( false ) ;
67
+ loader . show ( { templateUrl : 'template.html' } ) ;
68
+ expect ( $ionicTemplateLoader . load ) . toHaveBeenCalledWith ( 'template.html' ) ;
69
+ $rootScope . $apply ( ) ;
70
+ expect ( loader . element . text ( ) ) . toBe ( '1 content' ) ;
139
71
} ) ) ;
140
- it ( 'show should only active after raf is still isShown' , inject ( function ( $ionicLoading ) {
72
+
73
+ } ) ;
74
+
75
+ describe ( '.hide()' , function ( ) {
76
+
77
+ it ( 'should release backdrop if hasBackdrop and isShown' , inject ( function ( $ionicLoading , $ionicBackdrop ) {
78
+ spyOn ( $ionicBackdrop , 'release' ) ;
141
79
var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
142
- var rafCallback ;
143
- ionic . requestAnimationFrame = function ( cb ) {
144
- rafCallback = cb ;
145
- } ;
146
- loader . show ( { } ) ;
147
- expect ( loader . isShown ) . toBe ( true ) ;
80
+ loader . isShown = true ;
81
+ loader . hasBackdrop = true ;
148
82
loader . hide ( ) ;
83
+ expect ( $ionicBackdrop . release ) . toHaveBeenCalled ( ) ;
84
+ } ) ) ;
85
+ it ( 'should not release backdrop if !hasBackdrop' , inject ( function ( $ionicLoading , $ionicBackdrop ) {
86
+ spyOn ( $ionicBackdrop , 'release' ) ;
87
+ var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
88
+ loader . isShown = true ;
89
+ loader . hide ( ) ;
90
+ expect ( $ionicBackdrop . release ) . not . toHaveBeenCalled ( ) ;
91
+ } ) ) ;
92
+ it ( 'should cancel durationTimeout and set isShown to false' , inject ( function ( $ionicLoading , $timeout ) {
93
+ spyOn ( $timeout , 'cancel' ) ;
94
+ var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
95
+ loader . durationTimeout = { } ;
96
+ loader . isShown = true ;
97
+ loader . hide ( { } ) ;
98
+ expect ( $timeout . cancel ) . toHaveBeenCalledWith ( loader . durationTimeout ) ;
149
99
expect ( loader . isShown ) . toBe ( false ) ;
150
- rafCallback ( ) ;
151
- expect ( loader . element . hasClass ( 'active' ) ) . toBe ( false ) ;
152
- ionic . requestAnimationFrame = function ( cb ) { cb ( ) ; } ;
153
100
} ) ) ;
154
101
155
102
} ) ;
103
+
104
+ it ( 'should show with options' , inject ( function ( $ionicLoading , $timeout ) {
105
+ var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
106
+ spyOn ( loader , 'show' ) ;
107
+ var options = { } ;
108
+ $ionicLoading . show ( options ) ;
109
+ $timeout . flush ( ) ;
110
+ expect ( loader . show ) . toHaveBeenCalledWith ( options ) ;
111
+ } ) ) ;
112
+
113
+ it ( 'should $timeout.cancel & hide' , inject ( function ( $ionicLoading , $rootScope , $timeout ) {
114
+ var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
115
+ spyOn ( $timeout , 'cancel' ) ;
116
+ spyOn ( loader , 'hide' ) ;
117
+ $ionicLoading . hide ( ) ;
118
+ expect ( $timeout . cancel ) . toHaveBeenCalled ( ) ;
119
+ $rootScope . $apply ( ) ;
120
+ expect ( loader . hide ) . toHaveBeenCalled ( ) ;
121
+ } ) ) ;
122
+
123
+ it ( 'hide should cancel show delay and just go ahead and hide' , inject ( function ( $ionicLoading , $timeout ) {
124
+ ionic . requestAnimationFrame = function ( cb ) { cb ( ) ; } ;
125
+ var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
126
+ spyOn ( loader , 'hide' ) . andCallThrough ( ) ;
127
+ spyOn ( loader , 'show' ) . andCallThrough ( ) ;
128
+ $ionicLoading . show ( { delay : 1000 } ) ;
129
+ $ionicLoading . hide ( ) ;
130
+ expect ( loader . show ) . not . toHaveBeenCalled ( ) ;
131
+ expect ( loader . hide ) . not . toHaveBeenCalled ( ) ;
132
+ $timeout . flush ( ) ;
133
+ expect ( loader . show ) . not . toHaveBeenCalled ( ) ;
134
+ expect ( loader . hide ) . toHaveBeenCalled ( ) ;
135
+ expect ( loader . isShown ) . toBe ( false ) ;
136
+ expect ( loader . element . hasClass ( 'active' ) ) . toBe ( false ) ;
137
+ } ) ) ;
138
+ it ( 'show should only active after raf is still isShown' , inject ( function ( $ionicLoading ) {
139
+ var loader = TestUtil . unwrapPromise ( $ionicLoading . _getLoader ( ) ) ;
140
+ var rafCallback ;
141
+ ionic . requestAnimationFrame = function ( cb ) {
142
+ rafCallback = cb ;
143
+ } ;
144
+ loader . show ( { } ) ;
145
+ expect ( loader . isShown ) . toBe ( true ) ;
146
+ loader . hide ( ) ;
147
+ expect ( loader . isShown ) . toBe ( false ) ;
148
+ rafCallback ( ) ;
149
+ expect ( loader . element . hasClass ( 'active' ) ) . toBe ( false ) ;
150
+ ionic . requestAnimationFrame = function ( cb ) { cb ( ) ; } ;
151
+ } ) ) ;
152
+
153
+ describe ( "back button" , function ( ) {
154
+ it ( '.show() should register back button action' , inject ( function ( $ionicLoading , $ionicPlatform , $timeout ) {
155
+ spyOn ( $ionicPlatform , 'registerBackButtonAction' ) ;
156
+ $ionicLoading . show ( ) ;
157
+ $timeout . flush ( ) ;
158
+ expect ( $ionicPlatform . registerBackButtonAction ) . toHaveBeenCalledWith (
159
+ angular . noop ,
160
+ PLATFORM_BACK_BUTTON_PRIORITY_LOADING
161
+ ) ;
162
+ } ) ) ;
163
+ it ( '.hide() should deregister back button action' , inject ( function ( $ionicLoading , $ionicPlatform , $timeout ) {
164
+ var deregisterSpy = jasmine . createSpy ( 'deregister' ) ;
165
+ spyOn ( $ionicPlatform , 'registerBackButtonAction' ) . andReturn ( deregisterSpy ) ;
166
+ $ionicLoading . show ( ) ;
167
+ $timeout . flush ( ) ;
168
+ expect ( deregisterSpy ) . not . toHaveBeenCalled ( ) ;
169
+ $ionicLoading . hide ( ) ;
170
+ expect ( deregisterSpy ) . toHaveBeenCalled ( ) ;
171
+ } ) ) ;
172
+ } ) ;
173
+
156
174
} ) ;
0 commit comments