@sil/args
Version:
Process CLI arguments
97 lines (82 loc) • 2.52 kB
text/typescript
import { fixArg, parseArguments, getArgs } from ".";
import { ArgType } from "./types";
describe('getArgs', () => {
let processArgvBackup: string[];
beforeEach(() => {
processArgvBackup = process.argv; // backup the original process.argv
});
afterEach(() => {
process.argv = processArgvBackup; // restore the original process.argv
});
it('should parse process arguments', () => {
const mockArgs = ['node', 'script.js', '--arg1','value1', '--arg2','value2'];
const expected: ArgType = { arg1: 'value1', arg2: 'value2' }; // replace with actual expected result
process.argv = mockArgs;
const result = getArgs();
expect(result).toEqual(expected);
});
});
describe("fixArg", () => {
it("Should convert to a number", () => {
expect(fixArg("343")).toBe(343);
});
it("Should convert to a string", () => {
expect(fixArg("a343")).toBe("a343");
});
it("Should convert to a boolean", () => {
expect(fixArg("true")).toBe(true);
});
});
describe("parseArguments", () => {
it("Should convert the whole object to correct types", () => {
const exampleProcessArg = [
"/Users/svd/.nvm/versions/node/v16.14.0/bin/node",
"/Users/svd/repos/sil-args/dist/cli.js",
"--test",
"true",
"--removeOld",
"false",
"--some-object",
"henk",
"peter",
"5",
"--another-test-or",
"so",
"5",
"aaaa",
"true",
];
const expected = {
test: true,
removeOld: false,
someObject: ["henk", "peter", 5],
anotherTestOr: ["so", 5, "aaaa", true],
};
expect(parseArguments(exampleProcessArg)).toEqual(expected);
});
it("Should convert make an empty key true", () => {
const exampleProcessArg = [
"/Users/svd/.nvm/versions/node/v16.14.0/bin/node",
"/Users/svd/repos/sil-args/dist/cli.js",
"--test",
"--removeOld",
"false",
"--some-object",
"henk",
"peter",
"5",
"--another-test-or",
"so",
"5",
"aaaa",
"true",
];
const expected = {
test: true,
removeOld: false,
someObject: ["henk", "peter", 5],
anotherTestOr: ["so", 5, "aaaa", true],
};
expect(parseArguments(exampleProcessArg)).toEqual(expected);
});
});