1 | const delay = require('./delay')
|
2 | const { AbortController } = require('./AbortController')
|
3 |
|
4 | describe('delay', () => {
|
5 | it('should wait for the specified time', async () => {
|
6 | const start = Date.now()
|
7 | await delay(100)
|
8 | expect(Date.now() - start).toBeGreaterThanOrEqual(100)
|
9 | })
|
10 |
|
11 | it('should reject if signal is already aborted', async () => {
|
12 | const signal = { aborted: true }
|
13 | const start = Date.now()
|
14 | await expect(delay(100, { signal })).rejects.toHaveProperty('name', 'AbortError')
|
15 |
|
16 | expect(Date.now() - start).toBeLessThan(50)
|
17 | })
|
18 |
|
19 | it('should reject when signal is aborted', async () => {
|
20 | const controller = new AbortController()
|
21 | const start = Date.now()
|
22 | const testDelay = delay(100, { signal: controller.signal })
|
23 | await Promise.all([
|
24 | delay(50).then(() => controller.abort()),
|
25 | expect(testDelay).rejects.toHaveProperty('name', 'AbortError')
|
26 | ])
|
27 |
|
28 |
|
29 | const time = Date.now() - start
|
30 | expect(time).toBeGreaterThanOrEqual(50)
|
31 | expect(time).toBeLessThan(100)
|
32 | })
|
33 | })
|