diff --git a/test/cases/getSkipSegments.js b/test/cases/getSkipSegments.js index 7e33518..46feae3 100644 --- a/test/cases/getSkipSegments.js +++ b/test/cases/getSkipSegments.js @@ -22,11 +22,13 @@ describe('getSkipSegments', () => { db.exec("INSERT INTO sponsorTimes VALUES ('testtesttest', 20, 33, 2, '1-uuid-2', 'testman', 0, 50, 'intro', 0)"); db.exec("INSERT INTO sponsorTimes VALUES ('testtesttest,test', 1, 11, 2, '1-uuid-1', 'testman', 0, 50, 'sponsor', 0)"); db.exec("INSERT INTO sponsorTimes VALUES ('test3', 1, 11, 2, '1-uuid-4', 'testman', 0, 50, 'sponsor', 0)"); - db.exec("INSERT INTO sponsorTimes VALUES ('test3', 1, 11, 2, '1-uuid-5', 'testman', 0, 50, 'sponsor', 0)"); + db.exec("INSERT INTO sponsorTimes VALUES ('test3', 7, 22, -3, '1-uuid-5', 'testman', 0, 50, 'sponsor', 0)"); + db.exec("INSERT INTO sponsorTimes VALUES ('multiple', 1, 11, 2, '1-uuid-6', 'testman', 0, 50, 'intro', 0)"); + db.exec("INSERT INTO sponsorTimes VALUES ('multiple', 20, 33, 2, '1-uuid-7', 'testman', 0, 50, 'intro', 0)"); }); - it('Should be able to get a time by category', (done) => { + it('Should be able to get a time by category (Query Method) 1', (done) => { request.get(utils.getbaseURL() + "/api/skipSegments?videoID=testtesttest&category=sponsor", null, (err, res, body) => { @@ -44,6 +46,105 @@ describe('getSkipSegments', () => { }); }); + it('Should be able to get a time by category (Query Method) 2', (done) => { + request.get(utils.getbaseURL() + + "/api/skipSegments?videoID=testtesttest&category=intro", null, + (err, res, body) => { + if (err) done("Couldn't call endpoint"); + else if (res.statusCode !== 200) done("Status code was: " + res.statusCode); + else { + let data = JSON.parse(res.body); + if (data.length === 1 && data[0].segment[0] === 20 && data[0].segment[1] === 33 + && data[0].category === "intro" && data[0].UUID === "1-uuid-2") { + done(); + } else { + done("Received incorrect body: " + res.body); + } + } + }); + }); + + it('Should be able to get a time by category (JSON Method) 1', (done) => { + request.get(utils.getbaseURL() + + "/api/skipSegments?videoID=testtesttest&category=sponsor", { + json: { + videoID: "testtesttest", + categories: ["sponsor"] + } + }, + (err, res, body) => { + if (err) done("Couldn't call endpoint"); + else if (res.statusCode !== 200) done("Status code was: " + res.statusCode); + else { + let data = res.body; + if (data.length === 1 && data[0].segment[0] === 1 && data[0].segment[1] === 11 + && data[0].category === "sponsor" && data[0].UUID === "1-uuid-0") { + done(); + } else { + done("Received incorrect body: " + JSON.stringify(res.body)); + } + } + }); + }); + + it('Should be able to get a time by category (JSON Method) 2', (done) => { + request.get(utils.getbaseURL() + + "/api/skipSegments?videoID=testtesttest&category=sponsor", { + json: { + videoID: "testtesttest", + categories: ["intro"] + } + }, + (err, res, body) => { + if (err) done("Couldn't call endpoint"); + else if (res.statusCode !== 200) done("Status code was: " + res.statusCode); + else { + let data = res.body; + if (data.length === 1 && data[0].segment[0] === 20 && data[0].segment[1] === 33 + && data[0].category === "intro" && data[0].UUID === "1-uuid-2") { + done(); + } else { + done("Received incorrect body: " + JSON.stringify(res.body)); + } + } + }); + }); + + it('Should be able to get multiple times by category (JSON Method) 1', (done) => { + request.get(utils.getbaseURL() + + "/api/skipSegments?videoID=testtesttest&category=sponsor", { + json: { + videoID: "multiple", + categories: ["intro"] + } + }, + (err, res, body) => { + if (err) done("Couldn't call endpoint"); + else if (res.statusCode !== 200) done("Status code was: " + res.statusCode); + else { + let data = res.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-7") && + (segment.segment[0] !== 1 || segment.segment[1] !== 11 + || segment.category !== "intro" || segment.UUID !== "1-uuid-6")) { + success = false; + break; + } + } + + if (success) done(); + else done("Received incorrect body: " + JSON.stringify(res.body)); + } else { + done("Received incorrect body: " + JSON.stringify(res.body)); + } + } + }); + }); + it('Should be possible to send unexpected query parameters', (done) => { request.get(utils.getbaseURL() + "/api/skipSegments?videoID=testtesttest&fakeparam=hello&category=sponsor", null, @@ -62,6 +163,24 @@ describe('getSkipSegments', () => { }); }); + it('Low voted submissions should be hidden', (done) => { + request.get(utils.getbaseURL() + + "/api/skipSegments?videoID=test3&category=sponsor", null, + (err, res, body) => { + if (err) done("Couldn't call endpoint"); + else if (res.statusCode !== 200) done("Status code was: " + res.statusCode); + else { + let data = JSON.parse(res.body); + if (data.length === 1 && data[0].segment[0] === 1 && data[0].segment[1] === 11 + && data[0].category === "sponsor" && data[0].UUID === "1-uuid-4") { + done(); + } else { + done("Received incorrect body: " + res.body); + } + } + }); + }); + it('Should return 404 if no segment found', (done) => { request.get(utils.getbaseURL() + "/api/skipSegments?videoID=notarealvideo", null,