Skip to content

Commit

Permalink
Add tests for transformTextFileLines
Browse files Browse the repository at this point in the history
  • Loading branch information
TungstnBallon committed Jan 27, 2025
1 parent cbf5a77 commit 2663484
Showing 1 changed file with 64 additions and 1 deletion.
65 changes: 64 additions & 1 deletion libs/execution/src/lib/util/file-util.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,25 @@
//
// SPDX-License-Identifier: AGPL-3.0-only

import { FileExtension, MimeType } from '../types';
import * as R from '../blocks';
import { FileExtension, MimeType, TextFile } from '../types';

import {
inferFileExtensionFromContentTypeString,
inferFileExtensionFromFileExtensionString,
inferMimeTypeFromFileExtensionString,
transformTextFileLines,
} from './file-util';

function exampleTextFile(content: string): TextFile {
return new TextFile(
'exampleTextFile',
FileExtension.TXT,
MimeType.TEXT_PLAIN,
content,
);
}

describe('Validation of file-util', () => {
describe('Function inferMimeTypeFromContentTypeString', () => {
it('should diagnose no error on known mimeType', () => {
Expand Down Expand Up @@ -68,4 +79,56 @@ describe('Validation of file-util', () => {
expect(result).toEqual(undefined);
});
});
describe('Function transformTextFileLines', () => {
it('should diagnose no error without newline', async () => {
const file = exampleTextFile('some text content without a newline');
// eslint-disable-next-line @typescript-eslint/require-await
const spy = vi.fn(async (lines: string[]) => R.ok(lines));
const result = await transformTextFileLines(file, /\r?\n/, spy);

expect(spy).toHaveBeenCalledOnce();
expect(spy).toHaveBeenCalledWith(['some text content without a newline']);

expect(R.isOk(result)).toBe(true);
assert(R.isOk(result));

expect(result.right).toStrictEqual(file);
});
it('should diagnose no error on empty file', async () => {
const file = exampleTextFile('');

// eslint-disable-next-line @typescript-eslint/require-await
const spy = vi.fn(async (lines: string[]) => R.ok(lines));
const result = await transformTextFileLines(file, /\r?\n/, spy);

expect(spy).toHaveBeenCalledOnce();
expect(spy).toHaveBeenCalledWith([]);

expect(R.isOk(result)).toBe(true);
assert(R.isOk(result));

expect(result.right).toStrictEqual(file);
});
it('should diagnose no error on file with trailing newline', async () => {
const file = exampleTextFile(`some text content
with a
trailing newline
`);
// eslint-disable-next-line @typescript-eslint/require-await
const spy = vi.fn(async (lines: string[]) => R.ok(lines));
const result = await transformTextFileLines(file, /\r?\n/, spy);

expect(spy).toHaveBeenCalledOnce();
expect(spy).toHaveBeenCalledWith([
'some text content',
'with a ',
'trailing newline',
]);

expect(R.isOk(result)).toBe(true);
assert(R.isOk(result));

expect(result.right).toStrictEqual(file);
});
});
});

0 comments on commit 2663484

Please sign in to comment.