-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathindex.spec.ts
More file actions
76 lines (59 loc) · 2.81 KB
/
Copy pathindex.spec.ts
File metadata and controls
76 lines (59 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import { Transform } from 'stream';
import { ReadableMock, WritableMock } from 'stream-mock';
import { pipelinePromise, rePipeline } from '../src';
describe('Re Pipeline', () => {
it('Test pipelinePromise', async () => {
const trimStream = new Transform({
objectMode: true,
transform: (item, encoding, callback) => callback(undefined, String(item).trim()),
});
const uppercaseStream = new Transform({
objectMode: true,
transform: (item, encoding, callback) => callback(undefined, String(item).toUpperCase()),
});
const start = new ReadableMock(['test', ' other', ' last '], { objectMode: true });
const end = new WritableMock({ objectMode: true });
await pipelinePromise(start, trimStream, uppercaseStream, end);
expect(end.data).toEqual(['TEST', 'OTHER', 'LAST']);
});
it('Test pipelinePromise error handling', async () => {
const trimStream = new Transform({
objectMode: true,
transform: (item, encoding, callback) => callback(undefined, String(item).trim()),
});
const uppercaseStream = new Transform({
objectMode: true,
transform: (item, encoding, callback) => callback(undefined, String(item).toUpperCase()),
});
const throwStream = new Transform({
objectMode: true,
transform: (item, encoding, callback) =>
callback(item === 'error' ? new Error('from stream') : undefined, item !== 'error' ? item : undefined),
});
const start = new ReadableMock(['test', ' other', 'error', ' last '], { objectMode: true });
const end = new WritableMock({ objectMode: true });
const errorCheck = jest.fn();
await pipelinePromise(start, trimStream, throwStream, uppercaseStream, end).catch(errorCheck);
expect(end.data).toEqual(['TEST', 'OTHER']);
expect(errorCheck).toHaveBeenCalledWith(new Error('from stream'));
});
it('Test rePipeline with multiple error handling', async () => {
const trimStream = new Transform({
objectMode: true,
transform: (item, encoding, callback) => callback(undefined, String(item).trim()),
});
const throwStream = new Transform({
objectMode: true,
transform: (item, encoding, callback) =>
callback(item === 'error' ? new Error('from stream') : undefined, item !== 'error' ? item : undefined),
});
const start = new ReadableMock(['test', ' other', 'error', 'error', ' last '], { objectMode: true });
const end = new WritableMock({ objectMode: true });
const errorCheck = jest.fn();
const pipeline = rePipeline(errorCheck, start, trimStream, throwStream, end);
await new Promise(resolve => pipeline.on('finish', resolve));
expect(end.data).toEqual(['test', 'other', 'last']);
expect(errorCheck).toHaveBeenCalledTimes(2);
expect(errorCheck).toHaveBeenCalledWith(new Error('from stream'));
});
});