Skip to content

Commit e85842f

Browse files
author
Jeff Wainwright
committed
chore: improvements from test nits
1 parent c8cb434 commit e85842f

File tree

3 files changed

+40
-12
lines changed

3 files changed

+40
-12
lines changed

__tests__/application/respond.test.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,8 @@ describe('app.respond', () => {
561561
const app = new Koa()
562562

563563
app.use(async ctx => {
564-
ctx.body = new Blob(['hello']).stream()
564+
const blob = new Blob(['hello'])
565+
ctx.body = blob.stream()
565566
})
566567

567568
return request(app.callback())

__tests__/response/flushHeaders.test.js

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,16 +84,19 @@ describe('ctx.flushHeaders()', () => {
8484
it('should flush headers first and delay to send data', async () => {
8585
const PassThrough = require('stream').PassThrough
8686
const app = new Koa()
87+
let headersFlushed = false
88+
let dataReceived = false
8789

8890
app.use(ctx => {
8991
ctx.type = 'json'
9092
ctx.status = 200
9193
ctx.headers.Link = '</css/mycss.css>; as=style; rel=preload, <https://img.craftflair.com>; rel=preconnect; crossorigin'
9294
const stream = ctx.body = new PassThrough()
9395
ctx.flushHeaders()
96+
headersFlushed = true
9497
setTimeout(() => {
9598
stream.end(JSON.stringify({ message: 'hello!' }))
96-
})
99+
}, 10)
97100
})
98101

99102
const server = app.listen()
@@ -105,10 +108,22 @@ describe('ctx.flushHeaders()', () => {
105108
req.end()
106109

107110
const [res] = await once(req, 'response')
108-
const onData = () => { throw new Error('boom') }
109-
res.on('data', onData)
110-
res.removeListener('data', onData)
111+
assert(headersFlushed, 'Headers should be flushed')
112+
113+
const dataPromise = new Promise(resolve => {
114+
res.once('data', chunk => {
115+
dataReceived = true
116+
resolve(chunk)
117+
})
118+
})
119+
120+
const timeoutPromise = new Promise((_, reject) =>
121+
setTimeout(() => reject(new Error('Timeout waiting for data')), 10)
122+
)
123+
124+
await Promise.race([dataPromise, timeoutPromise])
111125
res.destroy()
126+
assert(dataReceived, 'Data should be received after headers')
112127
} finally {
113128
server.close()
114129
}

__tests__/response/writable.test.js

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,36 +46,43 @@ describe('res.writable', () => {
4646
describe('when socket closed before response sent', () => {
4747
it('should not be writable', async () => {
4848
const app = new Koa()
49-
app.use(ctx => {
50-
let assertionRan = false
51-
assert(!ctx.writable)
49+
let ctx
50+
let assertionRan = false
51+
app.on('error', () => {})
52+
53+
app.use(c => {
54+
ctx = c
5255
assertionRan = true
53-
assert(assertionRan)
5456
})
5557

5658
const server = app.listen()
5759
const port = server.address().port
5860
const buf = Buffer.from('GET / HTTP/1.1\r\nHost: localhost:' + port + '\r\nConnection: keep-alive\r\n\r\n')
59-
6061
const client = net.connect(port)
6162
await once(client, 'connect')
6263
client.write(buf)
64+
65+
await new Promise(resolve => setTimeout(resolve, 5))
6366
client.destroy()
6467

6568
server.close()
6669
await once(server, 'close')
70+
71+
assert(ctx)
72+
assert(assertionRan)
73+
assert(!ctx.writable)
6774
})
6875
})
6976

7077
describe('when response finished', () => {
7178
it('should not be writable', async () => {
7279
const app = new Koa()
80+
let assertionRan = false
81+
7382
app.use(ctx => {
7483
ctx.res.end()
75-
let assertionRan = false
7684
assert(!ctx.writable)
7785
assertionRan = true
78-
assert(assertionRan)
7986
})
8087

8188
const server = app.listen()
@@ -85,10 +92,15 @@ describe('res.writable', () => {
8592
const client = net.connect(port)
8693
await once(client, 'connect')
8794
client.write(buf)
95+
96+
await new Promise(resolve => setTimeout(resolve, 5))
97+
8898
client.destroy()
8999

90100
server.close()
91101
await once(server, 'close')
102+
103+
assert(assertionRan)
92104
})
93105
})
94106
})

0 commit comments

Comments
 (0)