@johngw/stream
Version:
Reactive programming tools using the WHATWG Streams API.
48 lines (43 loc) • 1.07 kB
text/typescript
import { race } from '@johngw/stream/sources/race'
import { write } from '@johngw/stream/sinks/write'
import { fromTimeline } from '@johngw/stream-jest'
test('mirrors the first source stream to queue an item', async () => {
await expect(
race([
fromTimeline(`
-T1000-1-|
`),
fromTimeline(`
-T10---2-|
`),
])
).toMatchTimeline(`
-------2-
`)
})
test('immediately closes if there are 0 streams', async () => {
const fn = jest.fn()
await race([]).pipeTo(write(fn))
expect(fn).not.toHaveBeenCalled()
})
test('receives an error from the first stream that errors', async () => {
await expect(
race([
fromTimeline(`
------------------------------E(foo)-|
`),
fromTimeline(`
-----------2-----------------------------3-|
`),
]).pipeTo(write())
).rejects.toThrow('foo')
})
test('cancels upstream when aborted', async () => {
await expect(
race([
fromTimeline(`
----X
`),
]).pipeTo(write(), { signal: AbortSignal.abort() })
).rejects.toThrow()
})