Files
youtube-dl-gui/tests/Video.test.js

80 lines
2.7 KiB
JavaScript

const Video = require("../modules/types/Video");
const Format = require("../modules/types/Format");
describe('select highest quality', () => {
it('Sorts the formats high to low', () => {
const instance = instanceBuilder();
instance.selectHighestQuality();
expect(instance.formats[0].height).toEqual("1080");
expect(instance.formats[0].fps).toEqual("60");
});
it('Returns the index of the highest format', () => {
const instance = instanceBuilder();
const result = instance.selectHighestQuality();
expect(result).toBe(0);
});
});
describe('Get video format from label', () => {
it('Returns the format matching the label', () => {
const instance = instanceBuilder();
Format.prototype.getDisplayName = jest.fn(() => "1080p60");
const result = instance.getFormatFromLabel("1080p60");
expect(result).toEqual(instance.formats[0]);
});
});
describe('Get filename', () => {
it('Returns undefined when the video has no metadata', () => {
const instance = instanceBuilder();
instance.hasMetadata = false;
const result = instance.getFilename();
expect(result).toBeFalsy();
});
it('Returns only the title with (p) when there are no formats', () => {
const instance = instanceBuilder();
instance.hasMetadata = true;
instance.formats = [];
instance.title = "test__title";
const result = instance.getFilename();
expect(result).toBe("test__title-(p)");
});
it('Returns the filename as ytdl outputs it', () => {
const instance = instanceBuilder();
instance.hasMetadata = true;
instance.title = "test__title*";
instance.selected_format_index = 0;
const result = instance.getFilename();
expect(result).toBe("test__title_-(144p12)");
});
it('Clips the title length to 200', () => {
const instance = instanceBuilder();
instance.hasMetadata = true;
for(let i=0;i<20;i++) {
instance.title += "test__title*";
}
instance.selected_format_index = 0;
const result = instance.getFilename();
expect(result.length).toBeLessThanOrEqual(215);
})
});
function instanceBuilder(type) {
const env = {
paths: {
downloadPath: "test__downloadpath"
},
settings: {
nameFormatMode: "%(title).200s-(%(height)sp%(fps).0d).%(ext)s"
}
};
const video = new Video("http://test.url", type, env);
let formats = [];
const displayNames = ["144p12", "1080p", "480p", "480p30", "480p29", "1080p60"];
for (const name of displayNames) {
formats.push(Format.getFromDisplayName(name));
}
video.formats = formats;
return video;
}