@@ -30,14 +30,55 @@ describe('remote-input', function() {
3030 const input = document . querySelector ( 'input' )
3131 const results = document . querySelector ( '#results' )
3232 assert . equal ( results . innerHTML , '' )
33+ let successEvent = false
34+ remoteInput . addEventListener ( 'remote-input-success' , function ( ) {
35+ successEvent = true
36+ } )
3337 remoteInput . addEventListener ( 'loadend' , function ( ) {
38+ assert . ok ( successEvent , 'success event happened' )
3439 assert . equal ( results . querySelector ( 'ol' ) . getAttribute ( 'data-src' ) , '/results?q=test' )
3540 done ( )
3641 } )
3742 input . value = 'test'
3843 input . focus ( )
3944 } )
4045
46+ it ( 'handles not ok responses' , function ( done ) {
47+ const remoteInput = document . querySelector ( 'remote-input' )
48+ const input = document . querySelector ( 'input' )
49+ const results = document . querySelector ( '#results' )
50+ remoteInput . src = '/500'
51+ assert . equal ( results . innerHTML , '' )
52+ let errorEvent = false
53+ remoteInput . addEventListener ( 'remote-input-error' , function ( ) {
54+ errorEvent = true
55+ } )
56+ remoteInput . addEventListener ( 'loadend' , function ( ) {
57+ assert . ok ( errorEvent , 'error event happened' )
58+ assert . equal ( results . innerHTML , '' , 'nothing was appended' )
59+ done ( )
60+ } )
61+ input . value = 'test'
62+ input . focus ( )
63+ } )
64+
65+ it ( 'handles network error' , function ( done ) {
66+ const remoteInput = document . querySelector ( 'remote-input' )
67+ const input = document . querySelector ( 'input' )
68+ const results = document . querySelector ( '#results' )
69+ remoteInput . src = '/network-error'
70+ assert . equal ( results . innerHTML , '' )
71+ remoteInput . addEventListener ( 'error' , async function ( ) {
72+ await Promise . resolve ( )
73+ assert . equal ( results . innerHTML , '' , 'nothing was appended' )
74+ assert . notOk ( remoteInput . hasAttribute ( 'loading' ) , 'loading attribute was removed' )
75+ done ( )
76+ } )
77+ input . value = 'test'
78+ input . focus ( )
79+ assert . ok ( remoteInput . hasAttribute ( 'loading' ) , 'loading attribute was added' )
80+ } )
81+
4182 it ( 'repects param attribute' , function ( done ) {
4283 const remoteInput = document . querySelector ( 'remote-input' )
4384 const input = document . querySelector ( 'input' )
0 commit comments