Compare commits

...

2 commits

Author SHA1 Message Date
Ethan Lane b2722b487e Update tests
All checks were successful
continuous-integration/drone/push Build is passing
2023-12-07 18:18:46 +00:00
Ethan Lane 38054d3812 Add JSON flag 2023-12-07 18:14:52 +00:00
3 changed files with 28 additions and 2 deletions

View file

@ -9,7 +9,8 @@ program
.name('random-bunny') .name('random-bunny')
.description('Get a random image url from a subreddit of your choosing') .description('Get a random image url from a subreddit of your choosing')
.version('2.2') .version('2.2')
.option('-s, --subreddit <subreddit>', 'The subreddit to search', 'rabbits'); .option('-s, --subreddit <subreddit>', 'The subreddit to search', 'rabbits')
.option('-j, --json', 'Output as JSON');
program.parse(); program.parse();
@ -21,6 +22,12 @@ randomBunny(options.subreddit)
const result = response.Result!; const result = response.Result!;
const outputLines: string[] = []; const outputLines: string[] = [];
if (options.json) {
console.log(JSON.stringify(result));
return;
}
outputLines.push(`Archived = ${result.Archived}`); outputLines.push(`Archived = ${result.Archived}`);
outputLines.push(`Downvotes = ${result.Downs}`); outputLines.push(`Downvotes = ${result.Downs}`);
outputLines.push(`Hidden = ${result.Hidden}`); outputLines.push(`Hidden = ${result.Hidden}`);

View file

@ -1,3 +1,4 @@
export default interface ICliOptions { export default interface ICliOptions {
subreddit: string, subreddit: string,
json?: boolean,
} }

View file

@ -88,7 +88,25 @@ describe('subreddit', () => {
expect(subreddit).toBe('Horses'); expect(subreddit).toBe('Horses');
}, 5000); }, 5000);
}) });
describe('json', () => {
test('GIVEN -j is supplied, EXPECT output to be valid JSON', async () => {
const result = await cli(['-j'], '.');
const json = JSON.parse(result.stdout);
expect(json).toBeDefined();
}, 5000);
test('GIVEN --json is supplied, EXPECT output to be valid JSON', async () => {
const result = await cli(['--json'], '.');
const json = JSON.parse(result.stdout);
expect(json).toBeDefined();
}, 5000);
});
function cli(args: string[], cwd: string): Promise<cliResult> { function cli(args: string[], cwd: string): Promise<cliResult> {
return new Promise(resolve => { return new Promise(resolve => {