@@ -18,7 +18,7 @@ describe 'showErrors', ->
1818 <div id="first-name-group" class="form-group" show-errors>
1919 <input type="text" name="firstName" ng-model="firstName" ng-minlength="3" />
2020 </div>
21- <div class="form-group" show-errors>
21+ <div id="last-name-group" class="form-group" show-errors="{ showSuccess: true }" >
2222 <input type="text" name="lastName" ng-model="lastName" ng-minlength="3" />
2323 </div>
2424 </form>'
@@ -27,16 +27,6 @@ describe 'showErrors', ->
2727 $scope .$digest ()
2828 el
2929
30- find = (el , selector ) ->
31- el[0 ].querySelector selector
32-
33- firstNameEl = (el ) ->
34- find el, ' [name=firstName]'
35-
36- expectFormGroupHasErrorClass = (el ) ->
37- formGroup = el[0 ].querySelector ' [id=first-name-group]'
38- expect angular .element (formGroup).hasClass (' has-error' )
39-
4030 describe ' directive does not contain an input element with a name attribute' , ->
4131 it ' throws an exception' , ->
4232 expect ( ->
@@ -63,7 +53,6 @@ describe 'showErrors', ->
6353 el = compileEl ()
6454 $scope .userForm .firstName .$setViewValue invalidName
6555 angular .element (firstNameEl (el)).triggerHandler ' blur'
66- $scope .$digest ()
6756 expectFormGroupHasErrorClass (el).toBe true
6857
6958 describe ' $dirty && $invalid && not blurred' , ->
@@ -178,3 +167,127 @@ describe 'showErrors', ->
178167 $scope .$broadcast ' show-errors-reset'
179168 $timeout .flush ()
180169 expectFormGroupHasErrorClass (el).toBe false
170+
171+ describe ' {showSuccess: true} option' , ->
172+ describe ' $pristine && $valid' , ->
173+ it ' has-success is absent' , ->
174+ el = compileEl ()
175+ expectLastNameFormGroupHasSuccessClass (el).toBe false
176+
177+ describe ' $dirty && $valid && blurred' , ->
178+ it ' has-success is present' , ->
179+ el = compileEl ()
180+ $scope .userForm .lastName .$setViewValue validName
181+ angular .element (lastNameEl (el)).triggerHandler ' blur'
182+ $scope .$digest ()
183+ expectLastNameFormGroupHasSuccessClass (el).toBe true
184+
185+ describe ' $dirty && $invalid && blurred' , ->
186+ it ' has-success is present' , ->
187+ el = compileEl ()
188+ $scope .userForm .lastName .$setViewValue invalidName
189+ angular .element (lastNameEl (el)).triggerHandler ' blur'
190+ $scope .$digest ()
191+ expectLastNameFormGroupHasSuccessClass (el).toBe false
192+
193+ describe ' $invalid && blurred then becomes $valid before blurred' , ->
194+ it ' has-success is present' , ->
195+ el = compileEl ()
196+ $scope .userForm .lastName .$setViewValue invalidName
197+ angular .element (lastNameEl (el)).triggerHandler ' blur'
198+ $scope .$apply ->
199+ $scope .userForm .lastName .$setViewValue invalidName
200+ $scope .$apply ->
201+ $scope .userForm .lastName .$setViewValue validName
202+ expectLastNameFormGroupHasSuccessClass (el).toBe true
203+
204+ describe ' $valid && showErrorsCheckValidity is set before blurred' , ->
205+ it ' has-success is present' , ->
206+ el = compileEl ()
207+ $scope .userForm .lastName .$setViewValue validName
208+ $scope .$broadcast ' show-errors-check-validity'
209+ expectLastNameFormGroupHasSuccessClass (el).toBe true
210+
211+ describe ' showErrorsReset' , ->
212+ it ' removes has-success' , ->
213+ el = compileEl ()
214+ $scope .userForm .lastName .$setViewValue validName
215+ angular .element (lastNameEl (el)).triggerHandler ' blur'
216+ $scope .$broadcast ' show-errors-reset'
217+ $timeout .flush ()
218+ expectLastNameFormGroupHasSuccessClass (el).toBe false
219+
220+ describe ' showErrorsConfig' , ->
221+ $compile = undefined
222+ $scope = undefined
223+ $timeout = undefined
224+ validName = ' Paul'
225+ invalidName = ' Pa'
226+
227+ beforeEach ->
228+ testModule = angular .module ' testModule' , []
229+ testModule .config (showErrorsConfigProvider) ->
230+ showErrorsConfigProvider .showSuccess true
231+
232+ module ' ui.bootstrap.showErrors' , ' testModule'
233+
234+ inject ((_$compile_ , _$rootScope_ , _$timeout_ ) ->
235+ $compile = _$compile_
236+ $scope = _$rootScope_
237+ $timeout = _$timeout_
238+ )
239+
240+ compileEl = ->
241+ el = $compile (
242+ ' <form name="userForm">
243+ <div id="first-name-group" class="form-group" show-errors="{showSuccess: false}">
244+ <input type="text" name="firstName" ng-model="firstName" ng-minlength="3" />
245+ </div>
246+ <div id="last-name-group" class="form-group" show-errors>
247+ <input type="text" name="lastName" ng-model="lastName" ng-minlength="3" />
248+ </div>
249+ </form>'
250+ )($scope)
251+ angular .element (document .body ).append el
252+ $scope .$digest ()
253+ el
254+
255+ describe ' when showErrorsConfig.showSuccess is true' , ->
256+ describe ' and no options given' , ->
257+ it ' show-success class is applied' , ->
258+ el = compileEl ()
259+ $scope .userForm .lastName .$setViewValue validName
260+ angular .element (lastNameEl (el)).triggerHandler ' blur'
261+ $scope .$digest ()
262+ expectLastNameFormGroupHasSuccessClass (el).toBe true
263+
264+ describe ' when showErrorsConfig.showSuccess is true' , ->
265+ describe ' but options.showSuccess is false' , ->
266+ it ' show-success class is not applied' , ->
267+ el = compileEl ()
268+ $scope .userForm .firstName .$setViewValue validName
269+ angular .element (firstNameEl (el)).triggerHandler ' blur'
270+ $scope .$digest ()
271+ expectFirstNameFormGroupHasSuccessClass (el).toBe false
272+
273+ find = (el , selector ) ->
274+ el[0 ].querySelector selector
275+
276+ firstNameEl = (el ) ->
277+ find el, ' [name=firstName]'
278+
279+ lastNameEl = (el ) ->
280+ find el, ' [name=lastName]'
281+
282+ expectFormGroupHasErrorClass = (el ) ->
283+ formGroup = el[0 ].querySelector ' [id=first-name-group]'
284+ expect angular .element (formGroup).hasClass (' has-error' )
285+
286+ expectFirstNameFormGroupHasSuccessClass = (el ) ->
287+ formGroup = el[0 ].querySelector ' [id=first-name-group]'
288+ expect angular .element (formGroup).hasClass (' has-success' )
289+
290+ expectLastNameFormGroupHasSuccessClass = (el ) ->
291+ formGroup = el[0 ].querySelector ' [id=last-name-group]'
292+ expect angular .element (formGroup).hasClass (' has-success' )
293+
0 commit comments