diff --git a/src/cli.ts b/src/cli.ts index 8b1eced..0d739e2 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -14,12 +14,11 @@ program .option('-j, --json', 'Output as JSON') .option('-q, --query-metadata', 'Include query metadata in result') .option('-o ', 'Output to file') - .addOption(new Option('--sort ', 'Sort by').default('hot').choices(['hot', 'new', 'top'])) - .addOption(new Option('--limit ', 'The amount of posts to fetch from the reddit api').default(100)); + .addOption(new Option('--sort ', 'Sort by').default('hot').choices(['hot', 'new', 'top'])); program.parse(); const options: ICliOptions = program.opts(); -randomBunny(options.subreddit, options.sort, options.limit) +randomBunny(options.subreddit, options.sort) .then((response) => exit(CliHelper.Endpoint(response, options))); \ No newline at end of file diff --git a/src/constants/ErrorCode.ts b/src/constants/ErrorCode.ts index 6a1e720..bbf3fef 100644 --- a/src/constants/ErrorCode.ts +++ b/src/constants/ErrorCode.ts @@ -3,5 +3,4 @@ export enum ErrorCode { FailedToFetchReddit, UnableToParseJSON, NoImageResultsFound, - LimitOutOfRange, } \ No newline at end of file diff --git a/src/constants/ErrorMessages.ts b/src/constants/ErrorMessages.ts index 180e335..4c5e24a 100644 --- a/src/constants/ErrorMessages.ts +++ b/src/constants/ErrorMessages.ts @@ -2,5 +2,4 @@ export default class ErrorMessages { public static readonly FailedToFetchReddit = "Failed to fetch result from Reddit"; public static readonly UnableToParseJSON = "Unable to parse the JSON result"; public static readonly NoImageResultsFound = "No image results found in response from Reddit"; - public static readonly LimitOutOfRange = "Limit must be a number between 1 and 100"; } \ No newline at end of file diff --git a/src/contracts/ICliOptions.ts b/src/contracts/ICliOptions.ts index a2844e4..355c92f 100644 --- a/src/contracts/ICliOptions.ts +++ b/src/contracts/ICliOptions.ts @@ -3,6 +3,5 @@ export default interface ICliOptions { json?: boolean, sort: "new" | "hot" | "top", o?: string, - limit: number, queryMetadata?: boolean, } \ No newline at end of file diff --git a/src/contracts/QueryResult.ts b/src/contracts/QueryResult.ts index 03bdacc..ee97e30 100644 --- a/src/contracts/QueryResult.ts +++ b/src/contracts/QueryResult.ts @@ -1,5 +1,4 @@ export default interface QueryResult { subreddit: string, sortBy: string, - limit: number, } \ No newline at end of file diff --git a/src/helpers/outputHelper.ts b/src/helpers/outputHelper.ts index 2e25935..40a2927 100644 --- a/src/helpers/outputHelper.ts +++ b/src/helpers/outputHelper.ts @@ -24,7 +24,6 @@ export default class OutputHelper { 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"); diff --git a/src/index.ts b/src/index.ts index 3e573af..b1ecc5d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,23 +7,8 @@ import { ErrorCode } from "./constants/ErrorCode"; import ErrorMessages from "./constants/ErrorMessages"; import ImageHelper from "./helpers/imageHelper"; -export default async function randomBunny(subreddit: string, sortBy: "new" | "hot" | "top" = 'hot', limit: number = 100): Promise { - if (limit < 1 || limit > 100) { - return { - IsSuccess: false, - Query: { - subreddit: subreddit, - sortBy: sortBy, - limit: limit, - }, - Error: { - Code: ErrorCode.LimitOutOfRange, - Message: ErrorMessages.LimitOutOfRange, - } - }; - } - - const result = await fetch(`https://reddit.com/r/${subreddit}/${sortBy}.json?limit=${limit}`) +export default async function randomBunny(subreddit: string, sortBy: "new" | "hot" | "top" = 'hot'): Promise { + const result = await fetch(`https://reddit.com/r/${subreddit}/${sortBy}.json?limit=100`) .then((res) => { return res; }) @@ -37,7 +22,6 @@ export default async function randomBunny(subreddit: string, sortBy: "new" | "ho Query: { subreddit: subreddit, sortBy: sortBy, - limit: limit, }, Error: { Code: ErrorCode.FailedToFetchReddit, @@ -54,7 +38,6 @@ export default async function randomBunny(subreddit: string, sortBy: "new" | "ho Query: { subreddit: subreddit, sortBy: sortBy, - limit: limit, }, Error: { Code: ErrorCode.UnableToParseJSON, @@ -77,7 +60,6 @@ export default async function randomBunny(subreddit: string, sortBy: "new" | "ho Query: { subreddit: subreddit, sortBy: sortBy, - limit: limit, }, Error: { Code: ErrorCode.NoImageResultsFound, @@ -103,7 +85,6 @@ export default async function randomBunny(subreddit: string, sortBy: "new" | "ho Query: { subreddit: subreddit, sortBy: sortBy, - limit: limit, }, Error: { Code: ErrorCode.NoImageResultsFound, @@ -134,7 +115,6 @@ export default async function randomBunny(subreddit: string, sortBy: "new" | "ho Query: { subreddit: subreddit, sortBy: sortBy, - limit: limit, }, Result: redditResult }; diff --git a/tests/helpers/__snapshots__/outputHelper.test.ts.snap b/tests/helpers/__snapshots__/outputHelper.test.ts.snap index 79f386f..0aa5dcc 100644 --- a/tests/helpers/__snapshots__/outputHelper.test.ts.snap +++ b/tests/helpers/__snapshots__/outputHelper.test.ts.snap @@ -25,6 +25,5 @@ Title = This is my Ms Bear! Upvotes = 17 Url = https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d Query.Subreddit = rabbits -Query.Sort By = hot -Query.Limit = 100" +Query.Sort By = hot" `; diff --git a/tests/helpers/outputHelper.test.ts b/tests/helpers/outputHelper.test.ts index a0f1959..8c9893d 100644 --- a/tests/helpers/outputHelper.test.ts +++ b/tests/helpers/outputHelper.test.ts @@ -10,7 +10,6 @@ describe("GenerateOutput", () => { Query: { subreddit: "rabbits", sortBy: "hot", - limit: 100, }, Result: { Archived: false, @@ -41,7 +40,6 @@ describe("GenerateOutput", () => { Query: { subreddit: "rabbits", sortBy: "hot", - limit: 100, }, Result: { Archived: false, @@ -74,7 +72,6 @@ describe("GenerateOutput", () => { Query: { subreddit: "rabbits", sortBy: "hot", - limit: 100, }, Result: { Archived: false, diff --git a/tests/index.test.ts b/tests/index.test.ts index 2de4607..ffa9015 100644 --- a/tests/index.test.ts +++ b/tests/index.test.ts @@ -7,10 +7,6 @@ import fetch from "got-cjs"; jest.mock('got-cjs'); const fetchMock = jest.mocked(fetch); -beforeEach(() => { - fetchMock.mockReset(); -}); - describe('randomBunny', () => { test('GIVEN subreddit AND sortBy is supplied, EXPECT successful result', async() => { fetchMock.mockResolvedValue({ @@ -235,106 +231,4 @@ describe('randomBunny', () => { expect(result.Error?.Code).toBe(ErrorCode.NoImageResultsFound); expect(result.Error?.Message).toBe(ErrorMessages.NoImageResultsFound); }); - - test("GIVEN limit is supplied, EXPECT limit sent to the API", async () => { - fetchMock.mockResolvedValue({ - body: JSON.stringify({ - data: { - children: [ - { - data: { - archived: false, - downs: 0, - hidden: false, - permalink: '/r/Rabbits/comments/12pa5te/someone_told_pickles_its_monday_internal_fury/', - subreddit: 'Rabbits', - subreddit_subscribers: 298713, - title: 'Someone told pickles it’s Monday… *internal fury*', - ups: 1208, - url: 'https://i.redd.it/cr8xudsnkgua1.jpg', - }, - }, - ], - } - }), - }); - - const result = await randomBunny('rabbits', 'new', 50); - - expect(result.IsSuccess).toBeTruthy(); - expect(result.Result).toBeDefined(); - expect(result.Error).toBeUndefined(); - - expect(fetchMock).toHaveBeenCalledWith('https://reddit.com/r/rabbits/new.json?limit=50'); - }); - - test("GIVEN limit is less than 1, EXPECT error to be returned", async () => { - fetchMock.mockResolvedValue({ - body: JSON.stringify({ - data: { - children: [ - { - data: { - archived: false, - downs: 0, - hidden: false, - permalink: '/r/Rabbits/comments/12pa5te/someone_told_pickles_its_monday_internal_fury/', - subreddit: 'Rabbits', - subreddit_subscribers: 298713, - title: 'Someone told pickles it’s Monday… *internal fury*', - ups: 1208, - url: 'https://i.redd.it/cr8xudsnkgua1.jpg', - }, - }, - ], - } - }), - }); - - const result = await randomBunny('rabbits', 'new', 0); - - expect(result.IsSuccess).toBeFalsy(); - expect(result.Result).toBeUndefined(); - expect(result.Error).toBeDefined(); - - expect(result.Error!.Code).toBe(ErrorCode.LimitOutOfRange); - expect(result.Error!.Message).toBe(ErrorMessages.LimitOutOfRange); - - expect(fetchMock).not.toHaveBeenCalled(); - }); - - test("GIVEN limit is greater than 100, EXPECT error to be returned", async () => { - fetchMock.mockResolvedValue({ - body: JSON.stringify({ - data: { - children: [ - { - data: { - archived: false, - downs: 0, - hidden: false, - permalink: '/r/Rabbits/comments/12pa5te/someone_told_pickles_its_monday_internal_fury/', - subreddit: 'Rabbits', - subreddit_subscribers: 298713, - title: 'Someone told pickles it’s Monday… *internal fury*', - ups: 1208, - url: 'https://i.redd.it/cr8xudsnkgua1.jpg', - }, - }, - ], - } - }), - }); - - const result = await randomBunny('rabbits', 'new', 101); - - expect(result.IsSuccess).toBeFalsy(); - expect(result.Result).toBeUndefined(); - expect(result.Error).toBeDefined(); - - expect(result.Error!.Code).toBe(ErrorCode.LimitOutOfRange); - expect(result.Error!.Message).toBe(ErrorMessages.LimitOutOfRange); - - expect(fetchMock).not.toHaveBeenCalled(); - }); }); \ No newline at end of file