@@ -269,6 +269,51 @@ describe('auto-complete element', function () {
269269 assert . equal ( `5 results. first is the top result: Press Enter to activate.` , feedback . innerHTML )
270270 } )
271271 } )
272+
273+ describe ( 'fetch on empty enabled' , ( ) => {
274+ let container
275+ beforeEach ( function ( ) {
276+ document . body . innerHTML = `
277+ <div id="mocha-fixture">
278+ <auto-complete fetch-on-empty src="/moke" for="popup" data-autoselect="true">
279+ <input type="text" value="1">
280+ <ul id="popup"></ul>
281+ <div id="popup-feedback"></div>
282+ </auto-complete>
283+ </div>
284+ `
285+ container = document . querySelector ( 'auto-complete' )
286+ container . fetchResult = async ( ) => `
287+ <li>Mock Custom Fetch Result 1</li>
288+ <li>Mock Custom Fetch Result 2</li>`
289+ } )
290+
291+ it ( 'should fetch result when value is empty' , async function ( ) {
292+ const input = container . querySelector ( 'input' )
293+ const popup = container . querySelector ( `#popup` )
294+ const feedback = container . querySelector ( `#popup-feedback` )
295+
296+ triggerInput ( input , '' )
297+ await once ( container , 'loadend' )
298+
299+ assert . equal ( 2 , popup . children . length )
300+ assert . equal ( popup . querySelector ( 'li' ) . textContent , 'Mock Custom Fetch Result 1' )
301+ assert . equal ( feedback . textContent , '' )
302+ } )
303+
304+ it ( 'does not fetch result when value is empty, if fetch-on-empty removed' , async function ( ) {
305+ const input = container . querySelector ( 'input' )
306+ const popup = container . querySelector ( `#popup` )
307+ const feedback = container . querySelector ( `#popup-feedback` )
308+ container . fetchOnEmpty = false
309+
310+ triggerInput ( input , '' )
311+ await new Promise ( resolve => setTimeout ( resolve , 100 ) )
312+
313+ assert . equal ( 0 , popup . children . length )
314+ assert . equal ( feedback . textContent , '' )
315+ } )
316+ } )
272317} )
273318
274319function waitForElementToChange ( el ) {
0 commit comments