aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit/autocomplete
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/autocomplete')
-rw-r--r--tests/unit/autocomplete/autocomplete_core.js43
-rw-r--r--tests/unit/autocomplete/autocomplete_events.js5
-rw-r--r--tests/unit/autocomplete/autocomplete_methods.js11
-rw-r--r--tests/unit/autocomplete/autocomplete_options.js54
4 files changed, 67 insertions, 46 deletions
diff --git a/tests/unit/autocomplete/autocomplete_core.js b/tests/unit/autocomplete/autocomplete_core.js
index d98f56abf..ef6ea58af 100644
--- a/tests/unit/autocomplete/autocomplete_core.js
+++ b/tests/unit/autocomplete/autocomplete_core.js
@@ -2,45 +2,6 @@
module( "autocomplete: core" );
-asyncTest( "close-on-blur is properly delayed", function() {
- expect( 3 );
- var element = $( "#autocomplete" )
- .autocomplete({
- source: [ "java", "javascript" ]
- })
- .val( "ja" )
- .autocomplete( "search" ),
- menu = element.autocomplete( "widget" );
-
- ok( menu.is( ":visible" ) );
- element.blur();
- ok( menu.is( ":visible" ) );
- setTimeout(function() {
- ok( menu.is( ":hidden") );
- start();
- }, 200 );
-});
-
-asyncTest( "close-on-blur is cancelled when starting a search", function() {
- expect( 3 );
- var element = $( "#autocomplete" )
- .autocomplete({
- source: [ "java", "javascript" ]
- })
- .val( "ja" )
- .autocomplete( "search" ),
- menu = element.autocomplete( "widget" );
-
- ok( menu.is( ":visible" ) );
- element.blur();
- ok( menu.is( ":visible" ) );
- element.autocomplete( "search" );
- setTimeout(function() {
- ok( menu.is( ":visible" ) );
- start();
- }, 200 );
-});
-
test( "prevent form submit on enter when menu is active", function() {
expect( 2 );
var event,
@@ -162,8 +123,4 @@ test( "allow form submit on enter when menu is not active", function() {
}
})();
-(function() {
-
-})();
-
}( jQuery ) );
diff --git a/tests/unit/autocomplete/autocomplete_events.js b/tests/unit/autocomplete/autocomplete_events.js
index 7b51ec4c0..1c7ff7462 100644
--- a/tests/unit/autocomplete/autocomplete_events.js
+++ b/tests/unit/autocomplete/autocomplete_events.js
@@ -68,7 +68,10 @@ $.each([
ok( menu.is( ":visible" ), "menu is visible after delay" );
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } );
- element.simulate( "blur" );
+ // blur must be async for IE to handle it properly
+ setTimeout(function() {
+ element.simulate( "blur" );
+ }, 1 );
}, 50 );
});
});
diff --git a/tests/unit/autocomplete/autocomplete_methods.js b/tests/unit/autocomplete/autocomplete_methods.js
index 3fe035d28..1600d73dc 100644
--- a/tests/unit/autocomplete/autocomplete_methods.js
+++ b/tests/unit/autocomplete/autocomplete_methods.js
@@ -9,15 +9,19 @@ test( "destroy", function() {
});
});
-test( "search", function() {
- expect( 3 );
+test( "search, close", function() {
+ expect( 6 );
var data = [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "perl" ],
element = $( "#autocomplete" ).autocomplete({
source: data,
minLength: 0
}),
menu = element.autocomplete( "widget" );
+
+ ok( menu.is( ":hidden" ), "menu is hidden on init" );
+
element.autocomplete( "search" );
+ ok( menu.is( ":visible" ), "menu is visible after search" );
equal( menu.find( ".ui-menu-item" ).length, data.length, "all items for a blank search" );
element.val( "has" ).autocomplete( "search" );
@@ -25,6 +29,9 @@ test( "search", function() {
element.autocomplete( "search", "ja" );
equal( menu.find( ".ui-menu-item" ).length, 2, "only java and javascript for 'ja'" );
+
+ element.autocomplete( "close" );
+ ok( menu.is( ":hidden" ), "menu is hidden after close" );
});
}( jQuery ) );
diff --git a/tests/unit/autocomplete/autocomplete_options.js b/tests/unit/autocomplete/autocomplete_options.js
index 114e9a42b..1ab40f36c 100644
--- a/tests/unit/autocomplete/autocomplete_options.js
+++ b/tests/unit/autocomplete/autocomplete_options.js
@@ -102,6 +102,60 @@ test( "minLength", function() {
ok( menu.is( ":visible" ), "blank enough for minLength: 0" );
});
+asyncTest( "minLength, exceed then drop below", function() {
+ expect( 4 );
+ var element = $( "#autocomplete" ).autocomplete({
+ minLength: 2,
+ source: function( req, res ) {
+ equal( req.term, "12", "correct search term" );
+ setTimeout(function() {
+ res([ "item" ]);
+ }, 1 );
+ }
+ }),
+ menu = element.autocomplete( "widget" );
+
+ ok( menu.is( ":hidden" ), "menu is hidden before first search" );
+ element.autocomplete( "search", "12" );
+
+ ok( menu.is( ":hidden" ), "menu is hidden before second search" );
+ element.autocomplete( "search", "1" );
+
+ setTimeout(function() {
+ ok( menu.is( ":hidden" ), "menu is hidden after searches" );
+ start();
+ }, 50 );
+});
+
+test( "minLength, exceed then drop below then exceed", function() {
+ expect( 3 );
+ var _res = [],
+ element = $( "#autocomplete" ).autocomplete({
+ minLength: 2,
+ source: function( req, res ) {
+ _res.push( res );
+ }
+ }),
+ menu = element.autocomplete( "widget" );
+
+ // trigger a valid search
+ ok( menu.is( ":hidden" ), "menu is hidden before first search" );
+ element.autocomplete( "search", "12" );
+
+ // trigger a search below the minLength, to turn on cancelSearch flag
+ ok( menu.is( ":hidden" ), "menu is hidden before second search" );
+ element.autocomplete( "search", "1" );
+
+ // trigger a valid search
+ element.autocomplete( "search", "13" );
+ // react as if the first search was cancelled (default ajax behavior)
+ _res[ 0 ]([]);
+ // react to second search
+ _res[ 1 ]([ "13" ]);
+
+ ok( menu.is( ":visible" ), "menu is visible after searches" );
+});
+
test( "source, local string array", function() {
expect( 1 );
var element = $( "#autocomplete" ).autocomplete({