corrade-http-templates – Blame information for rev 57

Subversion Repositories:
Rev:
Rev Author Line No. Line
57 office 1 define( [
2 "qunit",
3 "jquery",
4 "ui/widgets/autocomplete"
5 ], function( QUnit, $ ) {
6  
7 QUnit.module( "autocomplete: events" );
8  
9 var data = [ "Clojure", "COBOL", "ColdFusion", "Java", "JavaScript", "Scala", "Scheme" ];
10  
11 $.each( [
12 {
13 type: "input",
14 selector: "#autocomplete",
15 valueMethod: "val"
16 },
17 {
18 type: "textarea",
19 selector: "#autocomplete-textarea",
20 valueMethod: "val"
21 },
22 {
23 type: "contenteditable",
24 selector: "#autocomplete-contenteditable",
25 valueMethod: "text"
26 }
27 ], function( i, settings ) {
28 QUnit.test( "all events - " + settings.type, function( assert ) {
29 var ready = assert.async();
30 assert.expect( 13 );
31 var element = $( settings.selector )
32 .autocomplete( {
33 autoFocus: false,
34 delay: 0,
35 source: data,
36 search: function( event ) {
37 assert.equal( event.originalEvent.type, "keydown", "search originalEvent" );
38 },
39 response: function( event, ui ) {
40 assert.deepEqual( ui.content, [
41 { label: "Clojure", value: "Clojure" },
42 { label: "Java", value: "Java" },
43 { label: "JavaScript", value: "JavaScript" }
44 ], "response ui.content" );
45 ui.content.splice( 0, 1 );
46 },
47 open: function() {
48 assert.ok( menu.is( ":visible" ), "menu open on open" );
49 },
50 focus: function( event, ui ) {
51 assert.equal( event.originalEvent.type, "menufocus", "focus originalEvent" );
52 assert.deepEqual( ui.item, { label: "Java", value: "Java" }, "focus ui.item" );
53 },
54 close: function( event ) {
55 assert.equal( event.originalEvent.type, "menuselect", "close originalEvent" );
56 assert.ok( menu.is( ":hidden" ), "menu closed on close" );
57 },
58 select: function( event, ui ) {
59 assert.equal( event.originalEvent.type, "menuselect", "select originalEvent" );
60 assert.deepEqual( ui.item, { label: "Java", value: "Java" }, "select ui.item" );
61 },
62 change: function( event, ui ) {
63 assert.equal( event.originalEvent.type, "blur", "change originalEvent" );
64 assert.deepEqual( ui.item, { label: "Java", value: "Java" }, "change ui.item" );
65 assert.ok( menu.is( ":hidden" ), "menu closed on change" );
66 ready();
67 }
68 } ),
69 menu = element.autocomplete( "widget" );
70  
71 element.simulate( "focus" )[ settings.valueMethod ]( "j" ).trigger( "keydown" );
72 setTimeout( function() {
73 assert.ok( menu.is( ":visible" ), "menu is visible after delay" );
74 element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
75 element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } );
76  
77 // Blur must be async for IE to handle it properly
78 setTimeout( function() {
79 element.simulate( "blur" );
80 } );
81 } );
82 } );
83 } );
84  
85 QUnit.test( "change without selection", function( assert ) {
86 var ready = assert.async();
87 assert.expect( 1 );
88 var element = $( "#autocomplete" ).autocomplete( {
89 delay: 0,
90 source: data,
91 change: function( event, ui ) {
92 assert.strictEqual( ui.item, null );
93 ready();
94 }
95 } );
96 element.triggerHandler( "focus" );
97 element.val( "ja" ).triggerHandler( "blur" );
98 } );
99  
100 QUnit.test( "cancel search", function( assert ) {
101 var ready = assert.async();
102 assert.expect( 6 );
103 var first = true,
104 element = $( "#autocomplete" ).autocomplete( {
105 delay: 0,
106 source: data,
107 search: function() {
108 if ( first ) {
109 assert.equal( element.val(), "ja", "val on first search" );
110 first = false;
111 return false;
112 }
113 assert.equal( element.val(), "java", "val on second search" );
114 },
115 open: function() {
116 assert.ok( true, "menu opened" );
117 }
118 } ),
119 menu = element.autocomplete( "widget" );
120 element.val( "ja" ).trigger( "keydown" );
121 setTimeout( function() {
122 assert.ok( menu.is( ":hidden" ), "menu is hidden after first search" );
123 element.val( "java" ).trigger( "keydown" );
124 setTimeout( function() {
125 assert.ok( menu.is( ":visible" ), "menu is visible after second search" );
126 assert.equal( menu.find( ".ui-menu-item" ).length, 2, "# of menu items" );
127 ready();
128 } );
129 } );
130 } );
131  
132 QUnit.test( "cancel focus", function( assert ) {
133 var ready = assert.async();
134 assert.expect( 1 );
135 var customVal = "custom value",
136 element = $( "#autocomplete" ).autocomplete( {
137 delay: 0,
138 source: data,
139 focus: function() {
140 $( this ).val( customVal );
141 return false;
142 }
143 } );
144 element.val( "ja" ).trigger( "keydown" );
145 setTimeout( function() {
146 element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
147 assert.equal( element.val(), customVal );
148 ready();
149 } );
150 } );
151  
152 QUnit.test( "cancel select", function( assert ) {
153 var ready = assert.async();
154 assert.expect( 1 );
155 var customVal = "custom value",
156 element = $( "#autocomplete" ).autocomplete( {
157 delay: 0,
158 source: data,
159 select: function() {
160 $( this ).val( customVal );
161 return false;
162 }
163 } );
164 element.val( "ja" ).trigger( "keydown" );
165 setTimeout( function() {
166 element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
167 element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } );
168 assert.equal( element.val(), customVal );
169 ready();
170 } );
171 } );
172  
173 QUnit.test( "blur during remote search", function( assert ) {
174 var ready = assert.async();
175 assert.expect( 1 );
176 var ac = $( "#autocomplete" ).autocomplete( {
177 delay: 0,
178 source: function( request, response ) {
179 assert.ok( true, "trigger request" );
180 ac.simulate( "blur" );
181 setTimeout( function() {
182 response( [ "result" ] );
183 ready();
184 }, 25 );
185 },
186 open: function() {
187 assert.ok( false, "opened after a blur" );
188 }
189 } );
190 ac.val( "ro" ).trigger( "keydown" );
191 } );
192  
193 } );