Skip to content

Commit 77d7e51

Browse files
committed
review(ap): generalize BOOLEAN_STRING tests
1 parent 828cb84 commit 77d7e51

File tree

2 files changed

+26
-18
lines changed

2 files changed

+26
-18
lines changed

src/cli/config-flags.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ export type StringCLIFlag = ArrayValuesAsUnion<typeof STRING_CLI_FLAGS>;
207207
export type StringArrayCLIFlag = ArrayValuesAsUnion<typeof STRING_ARRAY_CLI_FLAGS>;
208208
export type NumberCLIFlag = ArrayValuesAsUnion<typeof NUMBER_CLI_FLAGS>;
209209
export type StringNumberCLIFlag = ArrayValuesAsUnion<typeof STRING_NUMBER_CLI_FLAGS>;
210-
type BooleanStringCLIFlag = ArrayValuesAsUnion<typeof BOOLEAN_STRING_CLI_FLAGS>;
210+
export type BooleanStringCLIFlag = ArrayValuesAsUnion<typeof BOOLEAN_STRING_CLI_FLAGS>;
211211
export type LogCLIFlag = ArrayValuesAsUnion<typeof LOG_LEVEL_CLI_FLAGS>;
212212

213213
export type KnownCLIFlag =

src/cli/test/parse-flags.spec.ts

+25-17
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import { toDashCase } from '@utils';
33
import { LogLevel } from '../../declarations';
44
import {
55
BOOLEAN_CLI_FLAGS,
6+
BOOLEAN_STRING_CLI_FLAGS,
7+
BooleanStringCLIFlag,
68
ConfigFlags,
79
NUMBER_CLI_FLAGS,
810
STRING_ARRAY_CLI_FLAGS,
@@ -132,36 +134,42 @@ describe('parseFlags', () => {
132134
expect(flags.config).toBe('/config-2.js');
133135
});
134136

135-
describe('boolean-string flag', () => {
137+
describe.each(BOOLEAN_STRING_CLI_FLAGS)('boolean-string flag - %s', (cliArg: BooleanStringCLIFlag) => {
136138
it('parses a boolean-string flag as a boolean with no arg', () => {
137-
const args = ['--headless'];
139+
const args = [`--${cliArg}`];
138140
const flags = parseFlags(args);
139141
expect(flags.headless).toBe(true);
140-
expect(flags.knownArgs).toEqual(['--headless']);
142+
expect(flags.knownArgs).toEqual([`--${cliArg}`]);
141143
});
142144

143-
it.each([['--noHeadless'], ['--no-headless']])(
144-
'parses a boolean-string flag as a falsy boolean with "no" arg - \'%s\'',
145-
(noVariant) => {
146-
const args = [noVariant];
147-
const flags = parseFlags(args);
148-
expect(flags.headless).toBe(false);
149-
expect(flags.knownArgs).toEqual([noVariant]);
150-
}
151-
);
145+
it(`parses a boolean-string flag as a falsy boolean with "no" arg - --no-${cliArg}`, () => {
146+
const args = [`--no-${cliArg}`];
147+
const flags = parseFlags(args);
148+
expect(flags.headless).toBe(false);
149+
expect(flags.knownArgs).toEqual([`--no-${cliArg}`]);
150+
});
152151

153-
it("parses a boolean-string flag as a string with 'new' arg", () => {
154-
const args = ['--headless', 'new'];
152+
it(`parses a boolean-string flag as a falsy boolean with "no" arg - --no${
153+
cliArg.charAt(0).toUpperCase() + cliArg.slice(1)
154+
}`, () => {
155+
const negativeFlag = '--no' + cliArg.charAt(0).toUpperCase() + cliArg.slice(1);
156+
const flags = parseFlags([negativeFlag]);
157+
expect(flags.headless).toBe(false);
158+
expect(flags.knownArgs).toEqual([negativeFlag]);
159+
});
160+
161+
it('parses a boolean-string flag as a string with a string arg', () => {
162+
const args = [`--${cliArg}`, 'new'];
155163
const flags = parseFlags(args);
156164
expect(flags.headless).toBe('new');
157165
expect(flags.knownArgs).toEqual(['--headless', 'new']);
158166
});
159167

160-
it("parses a boolean-string flag as a string with 'new' arg using equality", () => {
161-
const args = ['--headless=new'];
168+
it('parses a boolean-string flag as a string with a string arg using equality', () => {
169+
const args = [`--${cliArg}=new`];
162170
const flags = parseFlags(args);
163171
expect(flags.headless).toBe('new');
164-
expect(flags.knownArgs).toEqual(['--headless', 'new']);
172+
expect(flags.knownArgs).toEqual([`--${cliArg}`, 'new']);
165173
});
166174
});
167175

0 commit comments

Comments
 (0)