diff --git a/src/api/viya/spec/writeStream.spec.ts b/src/api/viya/spec/writeStream.spec.ts index 358c82a..0acf05e 100644 --- a/src/api/viya/spec/writeStream.spec.ts +++ b/src/api/viya/spec/writeStream.spec.ts @@ -1,24 +1,34 @@ import { WriteStream } from '../../../types' import { writeStream } from '../writeStream' -import 'jest-extended' +import { + createWriteStream, + fileExists, + readFile, + deleteFile +} from '@sasjs/utils' describe('writeStream', () => { - const stream: WriteStream = { - write: jest.fn(), - path: 'test' - } + const filename = 'test.txt' + const content = 'test' + let stream: WriteStream + + beforeAll(async () => { + stream = await createWriteStream(filename) + }) it('should resolve when the stream is written successfully', async () => { - expect(writeStream(stream, 'test')).toResolve() + await expect(writeStream(stream, content)).toResolve() + await expect(fileExists(filename)).resolves.toEqual(true) + await expect(readFile(filename)).resolves.toEqual(content + '\n') - expect(stream.write).toHaveBeenCalledWith('test\n', expect.anything()) + await deleteFile(filename) }) it('should reject when the write errors out', async () => { jest .spyOn(stream, 'write') .mockImplementation((_, callback) => callback(new Error('Test Error'))) - const error = await writeStream(stream, 'test').catch((e) => e) + const error = await writeStream(stream, content).catch((e) => e) expect(error.message).toEqual('Test Error') }) diff --git a/src/api/viya/writeStream.ts b/src/api/viya/writeStream.ts index 0baaaa0..5403304 100644 --- a/src/api/viya/writeStream.ts +++ b/src/api/viya/writeStream.ts @@ -3,13 +3,9 @@ import { WriteStream } from '../../types' export const writeStream = async ( stream: WriteStream, content: string -): Promise => { - return new Promise((resolve, reject) => { - stream.write(content + '\n', (e) => { - if (e) { - return reject(e) - } - return resolve() - }) +): Promise => + stream.write(content + '\n', (e) => { + if (e) return Promise.reject(e) + + return Promise.resolve() }) -}