Fix bug where you weren't able to use both the -q and -j flags at the same time (#227)
- Fix bug where if you supplied both `-q`/`--query-metadata` and `-j`/`--json` the query metadata wasn't added to the output - Update tests #181 Reviewed-on: #227 Reviewed-by: VylpesTester <tester@vylpes.com> Co-authored-by: Ethan Lane <ethan@vylpes.com> Co-committed-by: Ethan Lane <ethan@vylpes.com>
This commit is contained in:
parent
3fe8a76534
commit
3b2da358b3
3 changed files with 70 additions and 39 deletions
|
@ -5,36 +5,28 @@ export default class OutputHelper {
|
||||||
public static GenerateOutput(response: IReturnResult, options: ICliOptions): string {
|
public static GenerateOutput(response: IReturnResult, options: ICliOptions): string {
|
||||||
const result = response.Result!;
|
const result = response.Result!;
|
||||||
|
|
||||||
const outputLines: string[] = [];
|
let outputObject = {};
|
||||||
|
|
||||||
|
outputObject = { ...result };
|
||||||
|
|
||||||
|
if (options.queryMetadata) {
|
||||||
|
outputObject = { ...outputObject, ...response.Query }
|
||||||
|
}
|
||||||
|
|
||||||
if (options.json) {
|
if (options.json) {
|
||||||
return JSON.stringify(result);
|
return JSON.stringify(outputObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
outputLines.push(`Archived = ${result.Archived}`);
|
return this.GetFriendlyObjectText(outputObject);
|
||||||
outputLines.push(`Author = ${result.Author}`);
|
}
|
||||||
outputLines.push(`Downvotes = ${result.Downs}`);
|
|
||||||
|
|
||||||
if (result.Gallery.length > 1) {
|
private static GetFriendlyObjectText<T>(object: T): string {
|
||||||
outputLines.push(`Gallery = ${result.Gallery.join(", ")}`);
|
const output: string[] = [];
|
||||||
|
|
||||||
|
for (const key in object) {
|
||||||
|
output.push(`${key} = ${object[key]}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
outputLines.push(`Hidden = ${result.Hidden}`);
|
return output.join("\n");
|
||||||
|
|
||||||
outputLines.push(`Permalink = ${result.Permalink}`);
|
|
||||||
outputLines.push(`Subreddit = ${result.Subreddit}`);
|
|
||||||
outputLines.push(`Subreddit Subscribers = ${result.SubredditSubscribers}`);
|
|
||||||
outputLines.push(`Title = ${result.Title}`);
|
|
||||||
outputLines.push(`Upvotes = ${result.Ups}`);
|
|
||||||
outputLines.push(`Url = ${result.Url}`);
|
|
||||||
|
|
||||||
|
|
||||||
if (options.queryMetadata != null) {
|
|
||||||
outputLines.push(`Query.Subreddit = ${response.Query.subreddit}`);
|
|
||||||
outputLines.push(`Query.Sort By = ${response.Query.sortBy}`);
|
|
||||||
outputLines.push(`Query.Limit = ${response.Query.limit}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
return outputLines.join("\n");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -3,44 +3,48 @@
|
||||||
exports[`GenerateOutput EXPECT standout output to be returned 1`] = `
|
exports[`GenerateOutput EXPECT standout output to be returned 1`] = `
|
||||||
"Archived = false
|
"Archived = false
|
||||||
Author = author
|
Author = author
|
||||||
Downvotes = 0
|
Downs = 0
|
||||||
Hidden = false
|
Hidden = false
|
||||||
Permalink = /r/Rabbits/comments/1dj8pbt/this_is_my_ms_bear/
|
Permalink = /r/Rabbits/comments/1dj8pbt/this_is_my_ms_bear/
|
||||||
Subreddit = Rabbits
|
Subreddit = Rabbits
|
||||||
Subreddit Subscribers = 654751
|
SubredditSubscribers = 654751
|
||||||
Title = This is my Ms Bear!
|
Title = This is my Ms Bear!
|
||||||
Upvotes = 17
|
Ups = 17
|
||||||
Url = https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d"
|
Url = https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d
|
||||||
|
Gallery = https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d"
|
||||||
`;
|
`;
|
||||||
|
|
||||||
exports[`GenerateOutput GIVEN options.json is true, EXPECT output to be returned as JSON 1`] = `"{"Archived":false,"Author":"author","Downs":0,"Hidden":false,"Permalink":"/r/Rabbits/comments/1dj8pbt/this_is_my_ms_bear/","Subreddit":"Rabbits","SubredditSubscribers":654751,"Title":"This is my Ms Bear!","Ups":17,"Url":"https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d","Gallery":["https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d"]}"`;
|
exports[`GenerateOutput GIVEN options.json is true, EXPECT output to be returned as JSON 1`] = `"{"Archived":false,"Author":"author","Downs":0,"Hidden":false,"Permalink":"/r/Rabbits/comments/1dj8pbt/this_is_my_ms_bear/","Subreddit":"Rabbits","SubredditSubscribers":654751,"Title":"This is my Ms Bear!","Ups":17,"Url":"https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d","Gallery":["https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d"]}"`;
|
||||||
|
|
||||||
|
exports[`GenerateOutput GIVEN options.queryMetadata AND options.json is supplied, EXPECT query metadata to be in JSON format 1`] = `"{"Archived":false,"Author":"author","Downs":0,"Hidden":false,"Permalink":"/r/Rabbits/comments/1dj8pbt/this_is_my_ms_bear/","Subreddit":"Rabbits","SubredditSubscribers":654751,"Title":"This is my Ms Bear!","Ups":17,"Url":"https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d","subreddit":"rabbits","sortBy":"hot","limit":100}"`;
|
||||||
|
|
||||||
exports[`GenerateOutput GIVEN options.queryMetadata is supplied, EXPECT query metadata to be added 1`] = `
|
exports[`GenerateOutput GIVEN options.queryMetadata is supplied, EXPECT query metadata to be added 1`] = `
|
||||||
"Archived = false
|
"Archived = false
|
||||||
Author = author
|
Author = author
|
||||||
Downvotes = 0
|
Downs = 0
|
||||||
Hidden = false
|
Hidden = false
|
||||||
Permalink = /r/Rabbits/comments/1dj8pbt/this_is_my_ms_bear/
|
Permalink = /r/Rabbits/comments/1dj8pbt/this_is_my_ms_bear/
|
||||||
Subreddit = Rabbits
|
Subreddit = Rabbits
|
||||||
Subreddit Subscribers = 654751
|
SubredditSubscribers = 654751
|
||||||
Title = This is my Ms Bear!
|
Title = This is my Ms Bear!
|
||||||
Upvotes = 17
|
Ups = 17
|
||||||
Url = https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d
|
Url = https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d
|
||||||
Query.Subreddit = rabbits
|
Gallery = https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d
|
||||||
Query.Sort By = hot
|
subreddit = rabbits
|
||||||
Query.Limit = 100"
|
sortBy = hot
|
||||||
|
limit = 100"
|
||||||
`;
|
`;
|
||||||
|
|
||||||
exports[`GenerateOutput GIVEN the Gallery input has more than 1 item, EXPECT Gallery line to be added 1`] = `
|
exports[`GenerateOutput GIVEN the Gallery input has more than 1 item, EXPECT Gallery line to be added 1`] = `
|
||||||
"Archived = false
|
"Archived = false
|
||||||
Author = author
|
Author = author
|
||||||
Downvotes = 0
|
Downs = 0
|
||||||
Gallery = https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d, https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d
|
|
||||||
Hidden = false
|
Hidden = false
|
||||||
Permalink = /r/Rabbits/comments/1dj8pbt/this_is_my_ms_bear/
|
Permalink = /r/Rabbits/comments/1dj8pbt/this_is_my_ms_bear/
|
||||||
Subreddit = Rabbits
|
Subreddit = Rabbits
|
||||||
Subreddit Subscribers = 654751
|
SubredditSubscribers = 654751
|
||||||
Title = This is my Ms Bear!
|
Title = This is my Ms Bear!
|
||||||
Upvotes = 17
|
Ups = 17
|
||||||
Url = https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d"
|
Url = https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d
|
||||||
|
Gallery = https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d,https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d"
|
||||||
`;
|
`;
|
||||||
|
|
|
@ -106,6 +106,41 @@ describe("GenerateOutput", () => {
|
||||||
expect(result).toMatchSnapshot();
|
expect(result).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("GIVEN options.queryMetadata AND options.json is supplied, EXPECT query metadata to be in JSON format", () => {
|
||||||
|
// Arrange
|
||||||
|
const response = {
|
||||||
|
IsSuccess: true,
|
||||||
|
Query: {
|
||||||
|
subreddit: "rabbits",
|
||||||
|
sortBy: "hot",
|
||||||
|
limit: 100,
|
||||||
|
},
|
||||||
|
Result: {
|
||||||
|
Archived: false,
|
||||||
|
Author: 'author',
|
||||||
|
Downs: 0,
|
||||||
|
Hidden: false,
|
||||||
|
Permalink: "/r/Rabbits/comments/1dj8pbt/this_is_my_ms_bear/",
|
||||||
|
Subreddit: "Rabbits",
|
||||||
|
SubredditSubscribers: 654751,
|
||||||
|
Title: "This is my Ms Bear!",
|
||||||
|
Ups: 17,
|
||||||
|
Url: "https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d",
|
||||||
|
},
|
||||||
|
} as IReturnResult;
|
||||||
|
|
||||||
|
const options = {
|
||||||
|
json: true,
|
||||||
|
queryMetadata: true,
|
||||||
|
} as ICliOptions;
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const result = OutputHelper.GenerateOutput(response, options);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(result).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
test("GIVEN the Gallery input has more than 1 item, EXPECT Gallery line to be added", () => {
|
test("GIVEN the Gallery input has more than 1 item, EXPECT Gallery line to be added", () => {
|
||||||
// Arrange
|
// Arrange
|
||||||
const response = {
|
const response = {
|
||||||
|
|
Loading…
Reference in a new issue