diff --git a/src/routes/getSegmentInfo.ts b/src/routes/getSegmentInfo.ts index 354102d..b9e03ea 100644 --- a/src/routes/getSegmentInfo.ts +++ b/src/routes/getSegmentInfo.ts @@ -29,10 +29,12 @@ async function getSegmentsByUUID(UUIDs: SegmentUUID[]): Promise { async function handleGetSegmentInfo(req: Request, res: Response) { // If using params instead of JSON, only one UUID can be pulled let UUIDs = req.query.UUIDs - ? JSON.parse(req.query.UUIDs as string) - : req.query.UUID - ? [req.query.UUID] - : null; + ? JSON.parse(req.query.UUIDs as string) + : req.query.UUID + ? Array.isArray(req.query.UUID) + ? req.query.UUID + : [req.query.UUID] + : null; // deduplicate with set UUIDs = [ ...new Set(UUIDs)]; // if more than 10 entries, slice diff --git a/src/routes/getSkipSegments.ts b/src/routes/getSkipSegments.ts index 3889e32..368781d 100644 --- a/src/routes/getSkipSegments.ts +++ b/src/routes/getSkipSegments.ts @@ -268,7 +268,9 @@ async function handleGetSegments(req: Request, res: Response): Promise { }) .catch(err => ("couldn't call endpoint")); }); + + it('Should be able to retreive multiple segments with multiple parameters', (done: Done) => { + fetch(getbaseURL() + `/api/segmentInfo?UUID=${upvotedID}&UUID=${downvotedID}`) + .then(async res => { + if (res.status !== 200) done("Status code was: " + res.status); + else { + const data = await res.json(); + if (data.length === 2 && + (data[0].videoID === "upvoted" && data[0].votes === 2) && + (data[1].videoID === "downvoted" && data[1].votes === -2)) { + done(); + } else { + done("Received incorrect body: " + (await res.text())); + } + } + }) + .catch(err => "Couldn't call endpoint"); + }); }); diff --git a/test/cases/getSkipSegments.ts b/test/cases/getSkipSegments.ts index d7e914f..839e0db 100644 --- a/test/cases/getSkipSegments.ts +++ b/test/cases/getSkipSegments.ts @@ -264,4 +264,33 @@ describe('getSkipSegments', () => { .catch(err => ("Couldn't call endpoint")); }); + it('Should be able to get multiple categories with repeating parameters', (done: Done) => { + fetch(getbaseURL() + "/api/skipSegments?videoID=testtesttest&category=sponsor&category=intro") + .then(async res => { + if (res.status !== 200) done("Status code was: " + res.status); + else { + const body = await res.text(); + const data = JSON.parse(body); + if (data.length === 2) { + + let success = true; + for (const segment of data) { + if ((segment.segment[0] !== 20 || segment.segment[1] !== 33 + || segment.category !== "intro" || segment.UUID !== "1-uuid-2") && + (segment.segment[0] !== 1 || segment.segment[1] !== 11 + || segment.category !== "sponsor" || segment.UUID !== "1-uuid-0")) { + success = false; + break; + } + } + + if (success) done(); + else done("Received incorrect body: " + body); + } else { + done("Received incorrect body: " + body); + } + } + }) + .catch(err => ("Couldn't call endpoint")); + }); });