@@ -32,6 +32,8 @@ describe('search-box()', () => {
32
32
} ;
33
33
helper = {
34
34
on : sinon . spy ( ) ,
35
+ setQuery : sinon . spy ( ) ,
36
+ search : sinon . spy ( ) ,
35
37
state : {
36
38
query : ''
37
39
}
@@ -166,6 +168,74 @@ describe('search-box()', () => {
166
168
} ) ;
167
169
} ) ;
168
170
171
+ context ( 'keyup' , ( ) => {
172
+ let input ;
173
+ beforeEach ( ( ) => {
174
+ container = document . createElement ( 'div' ) ;
175
+ input = createHTMLNodeFromString ( '<input />' ) ;
176
+ input . addEventListener = sinon . spy ( ) ;
177
+ } ) ;
178
+
179
+ context ( 'instant search' , ( ) => {
180
+ beforeEach ( ( ) => {
181
+ widget = searchBox ( { container, autofocus : 'auto' } ) ;
182
+ widget . getInput = sinon . stub ( ) . returns ( input ) ;
183
+ } ) ;
184
+
185
+ it ( 'performs the search on keyup' , ( ) => {
186
+ // Given
187
+ helper . state . query = 'foo' ;
188
+ // When
189
+ widget . init ( initialState , helper ) ;
190
+ // Then
191
+ expect ( input . addEventListener . called ) . toEqual ( true ) ;
192
+ expect ( input . addEventListener . args [ 0 ] . length ) . toEqual ( 2 ) ;
193
+ expect ( input . addEventListener . args [ 0 ] [ 0 ] ) . toEqual ( 'keyup' ) ;
194
+ let fn = input . addEventListener . args [ 0 ] [ 1 ] ;
195
+ fn ( { } ) ;
196
+ expect ( helper . setQuery . calledOnce ) . toBe ( true ) ;
197
+ expect ( helper . search . calledOnce ) . toBe ( true ) ;
198
+ } ) ;
199
+ } ) ;
200
+
201
+ context ( 'non-instant search' , ( ) => {
202
+ beforeEach ( ( ) => {
203
+ widget = searchBox ( { container, autofocus : 'auto' , searchOnEnterKeyPressOnly : true } ) ;
204
+ widget . getInput = sinon . stub ( ) . returns ( input ) ;
205
+ } ) ;
206
+
207
+ it ( 'performs the search on <ENTER>' , ( ) => {
208
+ // Given
209
+ helper . state . query = 'foo' ;
210
+ // When
211
+ widget . init ( initialState , helper ) ;
212
+ // Then
213
+ expect ( input . addEventListener . called ) . toEqual ( true ) ;
214
+ expect ( input . addEventListener . args [ 0 ] . length ) . toEqual ( 2 ) ;
215
+ expect ( input . addEventListener . args [ 0 ] [ 0 ] ) . toEqual ( 'keyup' ) ;
216
+ let fn = input . addEventListener . args [ 0 ] [ 1 ] ;
217
+ fn ( { keyCode : 13 } ) ;
218
+ expect ( helper . setQuery . calledOnce ) . toBe ( true ) ;
219
+ expect ( helper . search . calledOnce ) . toBe ( true ) ;
220
+ } ) ;
221
+
222
+ it ( 'doesn\'t perform the search on keyup' , ( ) => {
223
+ // Given
224
+ helper . state . query = 'foo' ;
225
+ // When
226
+ widget . init ( initialState , helper ) ;
227
+ // Then
228
+ expect ( input . addEventListener . called ) . toEqual ( true ) ;
229
+ expect ( input . addEventListener . args [ 0 ] . length ) . toEqual ( 2 ) ;
230
+ expect ( input . addEventListener . args [ 0 ] [ 0 ] ) . toEqual ( 'keyup' ) ;
231
+ let fn = input . addEventListener . args [ 0 ] [ 1 ] ;
232
+ fn ( { } ) ;
233
+ expect ( helper . setQuery . calledOnce ) . toBe ( true ) ;
234
+ expect ( helper . search . calledOnce ) . toBe ( false ) ;
235
+ } ) ;
236
+ } ) ;
237
+ } ) ;
238
+
169
239
context ( 'focus' , ( ) => {
170
240
let input ;
171
241
beforeEach ( ( ) => {
0 commit comments