mirror of
https://github.com/Tzahi12345/YoutubeDL-Material.git
synced 2026-04-23 02:33:19 +03:00
Fixed a few broken tests
This commit is contained in:
@@ -108,6 +108,7 @@ exports.clearDownload = async (download_uid) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function handleDownloadError(download_uid, error_message) {
|
async function handleDownloadError(download_uid, error_message) {
|
||||||
|
if (!download_uid) return;
|
||||||
await db_api.updateRecord('download_queue', {uid: download_uid}, {error: error_message, finished: true, running: false});
|
await db_api.updateRecord('download_queue', {uid: download_uid}, {error: error_message, finished: true, running: false});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,7 +187,7 @@ async function collectInfo(download_uid) {
|
|||||||
let args = await exports.generateArgs(url, type, options, download['user_uid']);
|
let args = await exports.generateArgs(url, type, options, download['user_uid']);
|
||||||
|
|
||||||
// get video info prior to download
|
// get video info prior to download
|
||||||
let info = await getVideoInfoByURL(url, args, download_uid);
|
let info = await exports.getVideoInfoByURL(url, args, download_uid);
|
||||||
|
|
||||||
if (!info) {
|
if (!info) {
|
||||||
// info failed, error presumably already recorded
|
// info failed, error presumably already recorded
|
||||||
@@ -203,7 +204,7 @@ async function collectInfo(download_uid) {
|
|||||||
options.customOutput = category['custom_output'];
|
options.customOutput = category['custom_output'];
|
||||||
options.noRelativePath = true;
|
options.noRelativePath = true;
|
||||||
args = await exports.generateArgs(url, type, options, download['user_uid']);
|
args = await exports.generateArgs(url, type, options, download['user_uid']);
|
||||||
info = await getVideoInfoByURL(url, args, download_uid);
|
info = await exports.getVideoInfoByURL(url, args, download_uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
// setup info required to calculate download progress
|
// setup info required to calculate download progress
|
||||||
@@ -507,7 +508,7 @@ exports.generateArgs = async (url, type, options, user_uid = null, simulated = f
|
|||||||
return downloadConfig;
|
return downloadConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getVideoInfoByURL(url, args = [], download_uid = null) {
|
exports.getVideoInfoByURL = async (url, args = [], download_uid = null) => {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
// remove bad args
|
// remove bad args
|
||||||
const new_args = [...args];
|
const new_args = [...args];
|
||||||
|
|||||||
@@ -148,6 +148,7 @@ exports.updateTaskSchedule = async (task_key, schedule) => {
|
|||||||
await db_api.updateRecord('tasks', {key: task_key}, {schedule: schedule});
|
await db_api.updateRecord('tasks', {key: task_key}, {schedule: schedule});
|
||||||
if (TASKS[task_key]['job']) {
|
if (TASKS[task_key]['job']) {
|
||||||
TASKS[task_key]['job'].cancel();
|
TASKS[task_key]['job'].cancel();
|
||||||
|
TASKS[task_key]['job'] = null;
|
||||||
}
|
}
|
||||||
if (schedule) {
|
if (schedule) {
|
||||||
TASKS[task_key]['job'] = scheduleJob(task_key, schedule);
|
TASKS[task_key]['job'] = scheduleJob(task_key, schedule);
|
||||||
|
|||||||
@@ -42,6 +42,25 @@ const { uuid } = require('uuidv4');
|
|||||||
|
|
||||||
db_api.initialize(db, users_db);
|
db_api.initialize(db, users_db);
|
||||||
|
|
||||||
|
const sample_video_json = {
|
||||||
|
id: "Sample Video",
|
||||||
|
title: "Sample Video",
|
||||||
|
thumbnailURL: "https://sampleurl.jpg",
|
||||||
|
isAudio: false,
|
||||||
|
duration: 177.413,
|
||||||
|
url: "sampleurl.com",
|
||||||
|
uploader: "Sample Uploader",
|
||||||
|
size: 2838445,
|
||||||
|
path: "users\\admin\\video\\Sample Video.mp4",
|
||||||
|
upload_date: "2017-07-28",
|
||||||
|
description: null,
|
||||||
|
view_count: 230,
|
||||||
|
abr: 128,
|
||||||
|
thumbnailPath: null,
|
||||||
|
user_uid: "admin",
|
||||||
|
uid: "1ada04ab-2773-4dd4-bbdd-3e2d40761c50",
|
||||||
|
registered: 1628469039377
|
||||||
|
}
|
||||||
|
|
||||||
describe('Database', async function() {
|
describe('Database', async function() {
|
||||||
describe('Import', async function() {
|
describe('Import', async function() {
|
||||||
@@ -214,7 +233,7 @@ describe('Database', async function() {
|
|||||||
for (let i = 0; i < NUM_RECORDS_TO_ADD; i++) {
|
for (let i = 0; i < NUM_RECORDS_TO_ADD; i++) {
|
||||||
const uid = uuid();
|
const uid = uuid();
|
||||||
if (i === NUM_RECORDS_TO_ADD/2) random_uid = uid;
|
if (i === NUM_RECORDS_TO_ADD/2) random_uid = uid;
|
||||||
test_records.push({"id":"A$AP Mob - Yamborghini High (Official Music Video) ft. Juicy J","title":"A$AP Mob - Yamborghini High (Official Music Video) ft. Juicy J","thumbnailURL":"https://i.ytimg.com/vi/tt7gP_IW-1w/maxresdefault.jpg","isAudio":true,"duration":312,"url":"https://www.youtube.com/watch?v=tt7gP_IW-1w","uploader":"asapmobVEVO","size":5060157,"path":"audio\\A$AP Mob - Yamborghini High (Official Music Video) ft. Juicy J.mp3","upload_date":"2016-05-11","description":"A$AP Mob ft. Juicy J - \"Yamborghini High\" Get it now on:\niTunes: http://smarturl.it/iYAMH?IQid=yt\nListen on Spotify: http://smarturl.it/sYAMH?IQid=yt\nGoogle Play: http://smarturl.it/gYAMH?IQid=yt\nAmazon: http://smarturl.it/aYAMH?IQid=yt\n\nFollow A$AP Mob:\nhttps://www.facebook.com/asapmobofficial\nhttps://twitter.com/ASAPMOB\nhttp://instagram.com/asapmob \nhttp://www.asapmob.com/\n\n#AsapMob #YamborghiniHigh #Vevo #HipHop #OfficialMusicVideo #JuicyJ","view_count":118689353,"height":null,"abr":160,"uid": uid,"registered":1626672120632});
|
test_records.push({"id":"RandomTextRandomText","title":"RandomTextRandomTextRandomTextRandomTextRandomTextRandomTextRandomTextRandomText","thumbnailURL":"https://i.ytimg.com/vi/randomurl/maxresdefault.jpg","isAudio":true,"duration":312,"url":"https://www.youtube.com/watch?v=randomvideo","uploader":"randomUploader","size":5060157,"path":"audio\\RandomTextRandomText.mp3","upload_date":"2016-05-11","description":"RandomTextRandomTextRandomTextRandomTextRandomTextRandomTextRandomTextRandomTextRandomTextRandomTextRandomTextRandomText","view_count":118689353,"height":null,"abr":160,"uid": uid,"registered":1626672120632});
|
||||||
}
|
}
|
||||||
const insert_start = Date.now();
|
const insert_start = Date.now();
|
||||||
let success = await db_api.bulkInsertRecordsIntoTable('test', test_records);
|
let success = await db_api.bulkInsertRecordsIntoTable('test', test_records);
|
||||||
@@ -272,10 +291,12 @@ describe('Multi User', async function() {
|
|||||||
assert(user);
|
assert(user);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
describe('Video player - normal', function() {
|
describe('Video player - normal', async function() {
|
||||||
const video_to_test = 'ebbcfffb-d6f1-4510-ad25-d1ec82e0477e';
|
await db_api.removeRecord('files', {uid: sample_video_json['uid']});
|
||||||
|
await db_api.insertRecordIntoTable('files', sample_video_json);
|
||||||
|
const video_to_test = sample_video_json['uid'];
|
||||||
it('Get video', async function() {
|
it('Get video', async function() {
|
||||||
const video_obj = db_api.getVideo(video_to_test, 'admin');
|
const video_obj = await db_api.getVideo(video_to_test);
|
||||||
assert(video_obj);
|
assert(video_obj);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -360,7 +381,9 @@ describe('Downloader', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('Get file info', async function() {
|
it('Get file info', async function() {
|
||||||
|
this.timeout(300000);
|
||||||
|
const info = await downloader_api.getVideoInfoByURL(url);
|
||||||
|
assert(!!info);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Download file', async function() {
|
it('Download file', async function() {
|
||||||
@@ -379,20 +402,23 @@ describe('Downloader', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('Pause file', async function() {
|
it('Pause file', async function() {
|
||||||
|
const returned_download = await downloader_api.createDownload(url, 'video', options);
|
||||||
|
await downloader_api.pauseDownload(returned_download['uid']);
|
||||||
|
const updated_download = await db_api.getRecord('download_queue', {uid: returned_download['uid']});
|
||||||
|
assert(updated_download['paused'] && !updated_download['running']);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Generate args', async function() {
|
it('Generate args', async function() {
|
||||||
const args = await downloader_api.generateArgs(url, 'video', options);
|
const args = await downloader_api.generateArgs(url, 'video', options);
|
||||||
console.log(args);
|
assert(args.length > 0);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Generate args - subscription', async function() {
|
it('Generate args - subscription', async function() {
|
||||||
subscriptions_api.initialize(db_api, logger);
|
|
||||||
const sub = await subscriptions_api.getSubscription(sub_id);
|
const sub = await subscriptions_api.getSubscription(sub_id);
|
||||||
const sub_options = subscriptions_api.generateOptionsForSubscriptionDownload(sub, 'admin');
|
const sub_options = subscriptions_api.generateOptionsForSubscriptionDownload(sub, 'admin');
|
||||||
const args = await downloader_api.generateArgs(url, 'video', sub_options, 'admin');
|
const args_normal = await downloader_api.generateArgs(url, 'video', options);
|
||||||
console.log(args);
|
const args_sub = await downloader_api.generateArgs(url, 'video', sub_options, 'admin');
|
||||||
|
console.log(JSON.stringify(args_normal) !== JSON.stringify(args_sub));
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Generate kodi NFO file', async function() {
|
it('Generate kodi NFO file', async function() {
|
||||||
@@ -436,7 +462,7 @@ describe('Tasks', function() {
|
|||||||
};
|
};
|
||||||
tasks_api.TASKS['dummy_task'] = dummy_task;
|
tasks_api.TASKS['dummy_task'] = dummy_task;
|
||||||
|
|
||||||
await tasks_api.initialize();
|
await tasks_api.setupTasks();
|
||||||
});
|
});
|
||||||
it('Backup db', async function() {
|
it('Backup db', async function() {
|
||||||
const backups_original = await utils.recFindByExt('appdata', 'bak');
|
const backups_original = await utils.recFindByExt('appdata', 'bak');
|
||||||
@@ -448,12 +474,13 @@ describe('Tasks', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('Check for missing files', async function() {
|
it('Check for missing files', async function() {
|
||||||
|
this.timeout(300000);
|
||||||
await db_api.removeAllRecords('files', {uid: 'test'});
|
await db_api.removeAllRecords('files', {uid: 'test'});
|
||||||
const test_missing_file = {uid: 'test', path: 'test/missing_file.mp4'};
|
const test_missing_file = {uid: 'test', path: 'test/missing_file.mp4'};
|
||||||
await db_api.insertRecordIntoTable('files', test_missing_file);
|
await db_api.insertRecordIntoTable('files', test_missing_file);
|
||||||
await tasks_api.executeTask('missing_files_check');
|
await tasks_api.executeTask('missing_files_check');
|
||||||
const task_obj = await db_api.getRecord('tasks', {key: 'missing_files_check'});
|
const missing_file_db_record = await db_api.getRecord('files', {uid: 'test'});
|
||||||
assert(task_obj['data'] && task_obj['data']['uids'] && task_obj['data']['uids'].length >= 1, true);
|
assert(!missing_file_db_record, true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Check for duplicate files', async function() {
|
it('Check for duplicate files', async function() {
|
||||||
@@ -466,10 +493,13 @@ describe('Tasks', function() {
|
|||||||
await db_api.insertRecordIntoTable('files', test_duplicate_file1);
|
await db_api.insertRecordIntoTable('files', test_duplicate_file1);
|
||||||
await db_api.insertRecordIntoTable('files', test_duplicate_file2);
|
await db_api.insertRecordIntoTable('files', test_duplicate_file2);
|
||||||
await db_api.insertRecordIntoTable('files', test_duplicate_file3);
|
await db_api.insertRecordIntoTable('files', test_duplicate_file3);
|
||||||
await tasks_api.executeTask('duplicate_files_check');
|
|
||||||
|
await tasks_api.executeRun('duplicate_files_check');
|
||||||
const task_obj = await db_api.getRecord('tasks', {key: 'duplicate_files_check'});
|
const task_obj = await db_api.getRecord('tasks', {key: 'duplicate_files_check'});
|
||||||
const duplicated_record_count = await db_api.getRecords('files', {path: 'test/missing_file.mp4'}, true);
|
|
||||||
assert(task_obj['data'] && task_obj['data']['uids'] && task_obj['data']['uids'].length >= 1, true);
|
assert(task_obj['data'] && task_obj['data']['uids'] && task_obj['data']['uids'].length >= 1, true);
|
||||||
|
|
||||||
|
await tasks_api.executeTask('duplicate_files_check');
|
||||||
|
const duplicated_record_count = await db_api.getRecords('files', {path: 'test/missing_file.mp4'}, true);
|
||||||
assert(duplicated_record_count == 1, true);
|
assert(duplicated_record_count == 1, true);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -494,22 +524,36 @@ describe('Tasks', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('Schedule and cancel task', async function() {
|
it('Schedule and cancel task', async function() {
|
||||||
const today_4_hours = new Date();
|
this.timeout(5000);
|
||||||
today_4_hours.setHours(today_4_hours.getHours() + 4);
|
const today_one_year = new Date();
|
||||||
await tasks_api.updateTaskSchedule('dummy_task', today_4_hours);
|
today_one_year.setFullYear(today_one_year.getFullYear() + 1);
|
||||||
assert(!!tasks_api.TASKS['dummy_task']['job'], true);
|
const schedule_obj = {
|
||||||
|
type: 'timestamp',
|
||||||
|
data: { timestamp: today_one_year.getTime() }
|
||||||
|
}
|
||||||
|
await tasks_api.updateTaskSchedule('dummy_task', schedule_obj);
|
||||||
|
const dummy_task = await db_api.getRecord('tasks', {key: 'dummy_task'});
|
||||||
|
assert(!!tasks_api.TASKS['dummy_task']['job']);
|
||||||
|
assert(!!dummy_task['schedule']);
|
||||||
|
|
||||||
await tasks_api.updateTaskSchedule('dummy_task', null);
|
await tasks_api.updateTaskSchedule('dummy_task', null);
|
||||||
assert(!!tasks_api.TASKS['dummy_task']['job'], false);
|
const dummy_task_updated = await db_api.getRecord('tasks', {key: 'dummy_task'});
|
||||||
|
assert(!tasks_api.TASKS['dummy_task']['job']);
|
||||||
|
assert(!dummy_task_updated['schedule']);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Schedule and run task', async function() {
|
it('Schedule and run task', async function() {
|
||||||
this.timeout(5000);
|
this.timeout(5000);
|
||||||
const today_1_second = new Date();
|
const today_1_second = new Date();
|
||||||
today_1_second.setSeconds(today_1_second.getSeconds() + 1);
|
today_1_second.setSeconds(today_1_second.getSeconds() + 1);
|
||||||
await tasks_api.updateTaskSchedule('dummy_task', today_1_second);
|
const schedule_obj = {
|
||||||
assert(!!tasks_api.TASKS['dummy_task']['job'], true);
|
type: 'timestamp',
|
||||||
|
data: { timestamp: today_1_second.getTime() }
|
||||||
|
}
|
||||||
|
await tasks_api.updateTaskSchedule('dummy_task', schedule_obj);
|
||||||
|
assert(!!tasks_api.TASKS['dummy_task']['job']);
|
||||||
await utils.wait(2000);
|
await utils.wait(2000);
|
||||||
const dummy_task_obj = await db_api.getRecord('tasks', {key: 'dummy_task'});
|
const dummy_task_obj = await db_api.getRecord('tasks', {key: 'dummy_task'});
|
||||||
assert(dummy_task_obj['data'], true);
|
assert(dummy_task_obj['data']);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
Reference in New Issue
Block a user