const request = require('request'); const utils = require('../utils.js'); const { db } = require('../../src/databases/databases.js'); const getHash = require('../../src/utils/getHash.js'); function dbSponsorTimesAdd(db, videoID, startTime, endTime, UUID, category) { const votes = 0, userID = 0, timeSubmitted = 0, views = 0, shadowHidden = 0, hashedVideoID = `hash_${UUID}`; db.exec(`INSERT INTO sponsorTimes (videoID, startTime, endTime, votes, UUID, userID, timeSubmitted, views, category, shadowHidden, hashedVideoID) VALUES ('${videoID}', ${startTime}, ${endTime}, ${votes}, '${UUID}', '${userID}', ${timeSubmitted}, ${views}, '${category}', ${shadowHidden}, '${hashedVideoID}') `); } function dbSponsorTimesSetByUUID(db, UUID, startTime, endTime) { db.prepare('run', `UPDATE sponsorTimes SET startTime = ?, endTime = ? WHERE UUID = ?`, [startTime, endTime, UUID]); } function dbSponsorTimesCompareExpect(db, expect) { for (let i=0, len=expect.length; i { if (err) return done(err); return done(res.statusCode === 403 ? undefined : res.statusCode); }); }); it('Shift is outside segments', function(done) { request.post(`${baseURL}/api/segmentShift`, { json: { videoID: 'vsegshift01', userID: privateVipUserID, startTime: 20, endTime: 30, } }, (err, res, body) => { if (err) return done(err); if (res.statusCode !== 200) return done(`Status code was ${res.statusCode}`); const expect = [ { UUID: 'vsegshifttest01uuid01', startTime: 0, endTime: 10, }, { UUID: 'vsegshifttest01uuid02', startTime: 50, endTime: 80, }, { UUID: 'vsegshifttest01uuid03', startTime: 30, endTime: 35, }, { UUID: 'vsegshifttest01uuid04', startTime: 110, endTime: 130, }, ]; done(dbSponsorTimesCompareExpect(db, expect)); }); }); it('Shift is inside segment', function(done) { request.post(`${baseURL}/api/segmentShift`, { json: { videoID: 'vsegshift01', userID: privateVipUserID, startTime: 65, endTime: 75, } }, (err, res, body) => { if (err) return done(err); if (res.statusCode !== 200) return done(`Status code was ${res.statusCode}`); const expect = [ { UUID: 'vsegshifttest01uuid01', startTime: 0, endTime: 10, }, { UUID: 'vsegshifttest01uuid02', startTime: 60, endTime: 80, }, { UUID: 'vsegshifttest01uuid03', startTime: 40, endTime: 45, }, { UUID: 'vsegshifttest01uuid04', startTime: 110, endTime: 130, }, ]; done(dbSponsorTimesCompareExpect(db, expect)); }); }); it('Shift is overlaping startTime of segment', function(done) { request.post(`${baseURL}/api/segmentShift`, { json: { videoID: 'vsegshift01', userID: privateVipUserID, startTime: 32, endTime: 42, } }, (err, res, body) => { if (err) return done(err); if (res.statusCode !== 200) return done(`Status code was ${res.statusCode}`); const expect = [ { UUID: 'vsegshifttest01uuid01', startTime: 0, endTime: 10, }, { UUID: 'vsegshifttest01uuid02', startTime: 50, endTime: 80, }, { UUID: 'vsegshifttest01uuid03', startTime: 32, endTime: 35, }, { UUID: 'vsegshifttest01uuid04', startTime: 110, endTime: 130, }, ]; done(dbSponsorTimesCompareExpect(db, expect)); }); }); it('Shift is overlaping endTime of segment', function(done) { request.post(`${baseURL}/api/segmentShift`, { json: { videoID: 'vsegshift01', userID: privateVipUserID, startTime: 85, endTime: 95, } }, (err, res, body) => { if (err) return done(err); if (res.statusCode !== 200) return done(`Status code was ${res.statusCode}`); const expect = [ { UUID: 'vsegshifttest01uuid01', startTime: 0, endTime: 10, }, { UUID: 'vsegshifttest01uuid02', startTime: 60, endTime: 85, }, { UUID: 'vsegshifttest01uuid03', startTime: 40, endTime: 45, }, { UUID: 'vsegshifttest01uuid04', startTime: 110, endTime: 130, }, ]; done(dbSponsorTimesCompareExpect(db, expect)); }); }); it('Shift is overlaping segment', function(done) { request.post(`${baseURL}/api/segmentShift`, { json: { videoID: 'vsegshift01', userID: privateVipUserID, startTime: 35, endTime: 55, } }, (err, res, body) => { if (err) return done(err); if (res.statusCode !== 200) return done(`Status code was ${res.statusCode}`); const expect = [ { UUID: 'vsegshifttest01uuid01', startTime: 0, endTime: 10, }, { UUID: 'vsegshifttest01uuid02', startTime: 40, endTime: 70, }, { UUID: 'vsegshifttest01uuid03', startTime: 40, endTime: 45, removed: true, }, { UUID: 'vsegshifttest01uuid04', startTime: 100, endTime: 120, }, ]; done(dbSponsorTimesCompareExpect(db, expect)); }); }); });