Skip to content

Commit

Permalink
Add tests for ReadableStream.from()
Browse files Browse the repository at this point in the history
  • Loading branch information
MattiasBuelens committed Jan 4, 2024
1 parent 54c7f5f commit f4a60a5
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions test/unit/readable-stream/from.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
const { ReadableStream } = require('../../../');
const { ReadableStream: NodeReadableStream } = require('node:stream/web');

describe('ReadableStream.from()', () => {
it('supports a Node.js ReadableStream', async () => {
const native = new NodeReadableStream({
start(c) {
c.enqueue('a');
c.enqueue('b');
c.close();
}
});
const wrapped = ReadableStream.from(native);
expect(wrapped instanceof ReadableStream).toBe(true);
const reader = wrapped.getReader();
await expectAsync(reader.read()).toBeResolvedTo({ done: false, value: 'a' });
await expectAsync(reader.read()).toBeResolvedTo({ done: false, value: 'b' });
await expectAsync(reader.read()).toBeResolvedTo({ done: true, value: undefined });
});

it('supports a ReadableStream-like object', async () => {
let i = 0;
const closedPromise = new Promise(() => {});
const readerLike = {
get closed() { return closedPromise; },
async read() { return { done: false, value: ++i }; },
async cancel() {},
releaseLock() {}
};
const streamLike = {
getReader() { return readerLike; }
};
const wrapped = ReadableStream.from(streamLike);
expect(wrapped instanceof ReadableStream).toBe(true);
const reader = wrapped.getReader();
await expectAsync(reader.read()).toBeResolvedTo({ done: false, value: 1 });
await expectAsync(reader.read()).toBeResolvedTo({ done: false, value: 2 });
});
});

0 comments on commit f4a60a5

Please sign in to comment.