test.govlab/argv/core/formatters/invocation.formatter.test.ts

test.govlab/argv/core/formatters/invocation.formatter.test.ts is a file in Codebase Testing. 32 lines of code and 0 definitions.

import {
    CLOSING,
    FLAGS_SLOT,
    HELP_ROW,
    REPEATABLE_NOTE,
    REST_NOTE,
    VALUE_SLOT,
} from "@govlab/argv/configuration/strings/invocation.strings.ts";
import { HELP_FLAG, NAME_WIDTH } from "@govlab/argv/configuration/constants/invocation.constants.ts";
import { describe, expect, it } from "vitest";
import { SPEC } from "../converters/invocation.fixture.ts";
import { usageOf } from "@govlab/argv";

describe("usageOf", () => {
    it("names the command, the positional and every flag", () => {
        const usage = usageOf(SPEC);
        expect(usage).toContain(`npm run thing -- <input> ${FLAGS_SLOT}`);
        expect(usage).toContain(`--tag ${VALUE_SLOT}`);
        expect(usage).toContain(REPEATABLE_NOTE.trim());
        expect(usage).toContain(`    ${HELP_FLAG.padEnd(NAME_WIDTH)}${HELP_ROW}`);
        expect(usage.endsWith(`${CLOSING}\n`)).toBe(true);
    });

    it("marks an optional variadic positional and a rest slot", () => {
        const usage = usageOf({
            ...SPEC,
            positionals: [{ describe: "files", name: "file", optional: true, variadic: true }],
            rest: { describe: "passed on", name: "args" },
        });
        expect(usage).toContain("[file...]");
        expect(usage).toContain("[args...]");
        expect(usage).toContain(REST_NOTE);
    });
});