|
| 1 | +import type { ExecFileException } from "node:child_process"; |
| 2 | +import { expect, test } from "bun:test"; |
| 3 | +import { convert } from "../../src/converters/msgconvert.ts"; |
| 4 | +import { ExecFileFn } from "../../src/converters/types.ts"; |
| 5 | + |
| 6 | +test("convert rejects conversion if input filetype is not msg and output type is not eml", async () => { |
| 7 | + const mockExecFile: ExecFileFn = ( |
| 8 | + _cmd: string, |
| 9 | + _args: string[], |
| 10 | + options: unknown, |
| 11 | + callback: (err: ExecFileException | null, stdout: string, stderr: string) => void, |
| 12 | + ) => { |
| 13 | + callback(null, "Fake stdout", ""); |
| 14 | + }; |
| 15 | + |
| 16 | + const expectedError = new Error( |
| 17 | + "Unsupported conversion from obj to stl. Only MSG to EML conversion is currently supported.", |
| 18 | + ); |
| 19 | + |
| 20 | + expect(convert("input.obj", "obj", "stl", "output.stl", undefined, mockExecFile)).rejects.toEqual( |
| 21 | + expectedError, |
| 22 | + ); |
| 23 | +}); |
| 24 | + |
| 25 | +test("convert rejects conversion on error", async () => { |
| 26 | + const mockExecFile: ExecFileFn = ( |
| 27 | + _cmd: string, |
| 28 | + _args: string[], |
| 29 | + options: unknown, |
| 30 | + callback: (err: ExecFileException | null, stdout: string, stderr: string) => void, |
| 31 | + ) => { |
| 32 | + callback(new Error("Test error"), "", ""); |
| 33 | + }; |
| 34 | + |
| 35 | + const expectedError = new Error("msgconvert failed: Test error") |
| 36 | + |
| 37 | + expect( |
| 38 | + convert("input.msg", "msg", "eml", "output.eml", undefined, mockExecFile), |
| 39 | + ).rejects.toEqual(expectedError); |
| 40 | +}) |
| 41 | + |
| 42 | +test("convert logs stderr as warning", async () => { |
| 43 | + const originalConsoleWarn = console.warn; |
| 44 | + |
| 45 | + let loggedMessage = ""; |
| 46 | + console.warn = (msg) => { |
| 47 | + loggedMessage = msg; |
| 48 | + }; |
| 49 | + |
| 50 | + const mockExecFile = ( |
| 51 | + _cmd: string, |
| 52 | + _args: string[], |
| 53 | + options: unknown, |
| 54 | + callback: (err: Error | null, stdout: string, stderr: string) => void, |
| 55 | + ) => { |
| 56 | + callback(null, "", "Fake stderr"); |
| 57 | + }; |
| 58 | + |
| 59 | + await convert("file.msg", "msg", "eml", "out.eml", undefined, mockExecFile); |
| 60 | + |
| 61 | + console.error = originalConsoleWarn; |
| 62 | + |
| 63 | + expect(loggedMessage).toBe("msgconvert stderr: Fake stderr"); |
| 64 | +}) |
0 commit comments