@@ -1878,6 +1878,10 @@ describe('ui-select tests', function () {
18781878 if ( attrs . limit !== undefined ) { attrsHtml += ' limit="' + attrs . limit + '"' ; }
18791879 if ( attrs . onSelect !== undefined ) { attrsHtml += ' on-select="' + attrs . onSelect + '"' ; }
18801880 if ( attrs . removeSelected !== undefined ) { attrsHtml += ' remove-selected="' + attrs . removeSelected + '"' ; }
1881+ if ( attrs . refresh !== undefined ) { choicesAttrsHtml += ' refresh="' + attrs . refresh + '"' ; }
1882+ if ( attrs . refreshDelay !== undefined ) { choicesAttrsHtml += ' refresh-delay="' + attrs . refreshDelay + '"' ; }
1883+ if ( attrs . spinnerEnabled !== undefined ) { attrsHtml += ' spinner-enabled="' + attrs . spinnerEnabled + '"' ; }
1884+ if ( attrs . spinnerClass !== undefined ) { attrsHtml += ' spinner-class="' + attrs . spinnerClass + '"' ; }
18811885 }
18821886
18831887 return compileTemplate (
@@ -2988,6 +2992,68 @@ describe('ui-select tests', function () {
29882992 expect ( $ ( el ) . scope ( ) . $select . search ) . toEqual ( '' ) ;
29892993 } ) ;
29902994 } ) ;
2995+
2996+ describe ( 'Test Spinner for promises' , function ( ) {
2997+ var deferred ;
2998+
2999+ function getFromServer ( ) {
3000+ deferred = $q . defer ( ) ;
3001+ return deferred . promise ;
3002+ }
3003+ it ( 'should have a default value of false' , function ( ) {
3004+ var control = createUiSelectMultiple ( ) ;
3005+ expect ( control . scope ( ) . $select . spinnerEnabled ) . toEqual ( false ) ;
3006+ } ) ;
3007+
3008+ it ( 'should have a set a value of true' , function ( ) {
3009+ var control = createUiSelectMultiple ( { spinnerEnabled : true } ) ;
3010+ expect ( control . scope ( ) . $select . spinnerEnabled ) . toEqual ( true ) ;
3011+ } ) ;
3012+
3013+ it ( 'should have a default value of glyphicon-refresh ui-select-spin' , function ( ) {
3014+ var control = createUiSelectMultiple ( ) ;
3015+ expect ( control . scope ( ) . $select . spinnerClass ) . toEqual ( 'glyphicon glyphicon-refresh ui-select-spin' ) ;
3016+ } ) ;
3017+
3018+ it ( 'should have set a custom class value of randomclass' , function ( ) {
3019+ var control = createUiSelectMultiple ( { spinnerClass : 'randomclass' } ) ;
3020+ expect ( control . scope ( ) . $select . spinnerClass ) . toEqual ( 'randomclass' ) ;
3021+ } ) ;
3022+
3023+ it ( 'should not display spinner when disabled' , function ( ) {
3024+ scope . getFromServer = getFromServer ;
3025+ var el = createUiSelectMultiple ( { theme : 'bootstrap' , refresh : "getFromServer($select.search)" , refreshDelay : 0 } ) ;
3026+ openDropdown ( el ) ;
3027+ var spinner = el . find ( '.ui-select-refreshing' ) ;
3028+ expect ( spinner . hasClass ( 'ng-hide' ) ) . toBe ( true ) ;
3029+ setSearchText ( el , 'a' ) ;
3030+ expect ( spinner . hasClass ( 'ng-hide' ) ) . toBe ( true ) ;
3031+ deferred . resolve ( ) ;
3032+ scope . $digest ( ) ;
3033+ expect ( spinner . hasClass ( 'ng-hide' ) ) . toBe ( true ) ;
3034+ } ) ;
3035+
3036+ it ( 'should display spinner when enabled' , function ( ) {
3037+ scope . getFromServer = getFromServer ;
3038+ var el = createUiSelectMultiple ( { spinnerEnabled : true , theme : 'bootstrap' , refresh : "getFromServer($select.search)" , refreshDelay : 0 } ) ;
3039+ openDropdown ( el ) ;
3040+ var spinner = el . find ( '.ui-select-refreshing' ) ;
3041+ expect ( spinner . hasClass ( 'ng-hide' ) ) . toBe ( true ) ;
3042+ setSearchText ( el , 'a' ) ;
3043+ expect ( spinner . hasClass ( 'ng-hide' ) ) . toBe ( false ) ;
3044+ deferred . resolve ( ) ;
3045+ scope . $digest ( ) ;
3046+ expect ( spinner . hasClass ( 'ng-hide' ) ) . toBe ( true ) ;
3047+ } ) ;
3048+
3049+ it ( 'should not display spinner when enabled' , function ( ) {
3050+ var el = createUiSelectMultiple ( { spinnerEnabled : true , theme : 'bootstrap' , spinnerClass : 'randomclass' } ) ;
3051+ openDropdown ( el ) ;
3052+ var spinner = el . find ( '.ui-select-refreshing' ) ;
3053+ setSearchText ( el , 'a' ) ;
3054+ expect ( el . scope ( ) . $select . spinnerClass ) . toBe ( 'randomclass' ) ;
3055+ } ) ;
3056+ } ) ;
29913057 } ) ;
29923058
29933059 it ( 'should add an id to the search input field' , function ( ) {
0 commit comments