From 6024fdf2564b274af2f2d306f420e44a2c88d7b1 Mon Sep 17 00:00:00 2001 From: Scott González Date: Thu, 14 Jan 2010 17:23:11 +0000 Subject: Copied autocomplete from dev branch. --- tests/unit/autocomplete/autocomplete_options.js | 174 ++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 tests/unit/autocomplete/autocomplete_options.js (limited to 'tests/unit/autocomplete/autocomplete_options.js') diff --git a/tests/unit/autocomplete/autocomplete_options.js b/tests/unit/autocomplete/autocomplete_options.js new file mode 100644 index 000000000..1b6857b22 --- /dev/null +++ b/tests/unit/autocomplete/autocomplete_options.js @@ -0,0 +1,174 @@ +/* + * autocomplete_options.js + */ +(function($) { + +module("autocomplete: options"); + + +/* disabled until autocomplete actually has built-in support for caching +// returns at most 4 items +function source(request) { + ok(true, "handling a request"); + switch(request.term) { + case "cha": + return ["Common Pochard", "Common Chiffchaff", "Common Chaffinch", "Iberian Chiffchaff"] + case "chaf": + case "chaff": + return ["Common Chiffchaff", "Common Chaffinch", "Iberian Chiffchaff"] + case "chaffi": + return ["Common Chaffinch"] + case "schi": + return ["schifpre"] + } +} + +function search(input) { + var autocomplete = input.data("autocomplete"); + autocomplete.search("cha"); + autocomplete.close(); + autocomplete.search("chaf"); + autocomplete.close(); + autocomplete.search("chaff"); + autocomplete.close(); + autocomplete.search("chaffi"); + autocomplete.close(); + autocomplete.search("schi"); +} + +test("cache: default", function() { + expect(2); + search($("#autocomplete").autocomplete({ + source: source + })); +}); + +test("cache: {limit:4}", function() { + expect(3); + search($("#autocomplete").autocomplete({ + cache: { + limit: 4 + }, + source: source + })); +}); + +test("cache: false", function() { + expect(5); + search($("#autocomplete").autocomplete({ + cache: false, + source: source + })); +}); +*/ + +var data = ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "pearl"]; + +test("delay", function() { + var ac = $("#autocomplete").autocomplete({ + source: data, + delay: 50 + }); + ac.val("ja").keydown(); + + same( $(".ui-menu").length, 0 ); + + // wait half a second for the default delay to open the menu + stop(); + setTimeout(function() { + same( $(".ui-menu").length, 1 ); + ac.autocomplete("destroy"); + start(); + }, 100); +}); + +test("minLength", function() { + var ac = $("#autocomplete").autocomplete({ + source: data + }); + ac.autocomplete("search", ""); + same( $(".ui-menu").length, 0, "blank not enough for minLength: 1" ); + + ac.autocomplete("option", "minLength", 0); + ac.autocomplete("search", ""); + same( $(".ui-menu").length, 1, "blank enough for minLength: 0" ); + ac.autocomplete("destroy"); +}); + +test("source, local string array", function() { + var ac = $("#autocomplete").autocomplete({ + source: data + }); + ac.val("ja").autocomplete("search"); + same( $(".ui-menu .ui-menu-item").text(), "javajavascript" ); + ac.autocomplete("destroy"); +}); + +function source_test(source, async) { + var ac = $("#autocomplete").autocomplete({ + source: source + }); + ac.val("ja").autocomplete("search"); + function result(){ + same( $(".ui-menu .ui-menu-item").text(), "javajavascript" ); + ac.autocomplete("destroy"); + async && start(); + } + if (async) { + stop(); + setTimeout(result, 100); + } else { + result(); + } +} + +test("source, local object array, only label property", function() { + source_test([ + {label:"java"}, + {label:"php"}, + {label:"coldfusion"}, + {label:"javascript"} + ]); +}); + +test("source, local object array, only value property", function() { + source_test([ + {value:"java"}, + {value:"php"}, + {value:"coldfusion"}, + {value:"javascript"} + ]); +}); + +test("source, url string with remote json string array", function() { + source_test("remote_string_array.txt", true); +}); + +test("source, url string with remote json object array, only value properties", function() { + source_test("remote_object_array_values.txt", true); +}); + +test("source, url string with remote json object array, only label properties", function() { + source_test("remote_object_array_labels.txt", true); +}); + +test("source, custom", function() { + source_test(function(request, response) { + same( request.term, "ja" ); + response(["java", "javascript"]); + }); +}); + +test("source, update after init", function() { + var ac = $("#autocomplete").autocomplete({ + source: ["java", "javascript", "haskell"] + }); + ac.val("ja").autocomplete("search"); + same( $(".ui-menu .ui-menu-item").text(), "javajavascript" ); + ac.autocomplete("option", "source", ["php", "asp"]); + ac.val("ph").autocomplete("search"); + same( $(".ui-menu .ui-menu-item").text(), "php" ); + ac.autocomplete("destroy"); +}); + +})(jQuery); -- cgit v1.2.3