Skip to content

Commit 6e8ae1e

Browse files
committed
Add test for custom and network error events
1 parent bf97eec commit 6e8ae1e

File tree

2 files changed

+44
-14
lines changed

2 files changed

+44
-14
lines changed

test/karma.config.js

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
11
function reply(request, response, next) {
22
if (request.method === 'GET') {
3-
const status = request.url.startsWith('/500') ? 500 : 200
4-
response.writeHead(status)
5-
response.ok = status === 200
6-
response.end(`
7-
<ol data-src="${request.url}">
8-
<li>item</li>
9-
<li>item</li>
10-
<li>item</li>
11-
</ol>
12-
`)
3+
if (request.url.startsWith('/500')) {
4+
response.writeHead(500)
5+
response.ok = false
6+
response.end('Server error')
7+
} else if (request.url.startsWith('/network-error')) {
8+
request.destroy(new Error())
9+
response.end()
10+
} else {
11+
response.writeHead(200)
12+
response.ok = true
13+
response.end(`
14+
<ol data-src="${request.url}">
15+
<li>item</li>
16+
<li>item</li>
17+
<li>item</li>
18+
</ol>
19+
`)
20+
}
1321
return
1422
}
1523
next()

test/test.js

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,12 @@ 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
})
@@ -44,17 +49,34 @@ describe('remote-input', function() {
4449
const results = document.querySelector('#results')
4550
remoteInput.src = '/500'
4651
assert.equal(results.innerHTML, '')
47-
let errorHappened = false
48-
remoteInput.addEventListener('error', function() {
49-
errorHappened = true
52+
let errorEvent = false
53+
remoteInput.addEventListener('remote-input-error', function() {
54+
errorEvent = true
5055
})
5156
remoteInput.addEventListener('loadend', function() {
52-
assert.ok(errorHappened, 'error event happened')
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()
5373
assert.equal(results.innerHTML, '', 'nothing was appended')
74+
assert.notOk(remoteInput.hasAttribute('loading'), 'loading attribute was removed')
5475
done()
5576
})
5677
input.value = 'test'
5778
input.focus()
79+
assert.ok(remoteInput.hasAttribute('loading'), 'loading attribute was added')
5880
})
5981

6082
it('repects param attribute', function(done) {

0 commit comments

Comments
 (0)