- Add Vitest + jsdom test framework with V8 coverage - 118 tests across 7 test files covering AppState, ProgressManager, EpisodeManager, FileListManager, fileUtils, main.js logic, renderer escapeHtml, preload module polyfill - Fix async bug in extractFileDuration (await in non-async callback) - CI enforces 85% coverage threshold on testable modules - Exclude Electron IPC wrappers (FileManager, SearchManager, TagManager, ModalManager, UIManager) from coverage as they require Electron runtime
44 lines
1.4 KiB
JavaScript
44 lines
1.4 KiB
JavaScript
import { describe, it, expect } from 'vitest';
|
|
import path from 'path';
|
|
|
|
const { isMediaFile } = require('../utils/fileUtils');
|
|
|
|
describe('isMediaFile', () => {
|
|
it('returns true for supported extensions', () => {
|
|
expect(isMediaFile('/path/to/video.mp4')).toBe(true);
|
|
expect(isMediaFile('/path/to/video.mkv')).toBe(true);
|
|
expect(isMediaFile('/path/to/video.avi')).toBe(true);
|
|
expect(isMediaFile('/path/to/video.mov')).toBe(true);
|
|
expect(isMediaFile('/path/to/video.flv')).toBe(true);
|
|
expect(isMediaFile('/path/to/video.webm')).toBe(true);
|
|
});
|
|
|
|
it('returns false for non-media extensions', () => {
|
|
expect(isMediaFile('/path/to/file.txt')).toBe(false);
|
|
expect(isMediaFile('/path/to/file.pdf')).toBe(false);
|
|
expect(isMediaFile('/path/to/file.jpg')).toBe(false);
|
|
expect(isMediaFile('/path/to/file.mp3')).toBe(false);
|
|
});
|
|
|
|
it('handles uppercase extensions', () => {
|
|
expect(isMediaFile('/path/to/video.MP4')).toBe(true);
|
|
expect(isMediaFile('/path/to/video.MKV')).toBe(true);
|
|
});
|
|
|
|
it('handles files without extension', () => {
|
|
expect(isMediaFile('/path/to/video')).toBe(false);
|
|
});
|
|
|
|
it('handles empty path', () => {
|
|
expect(isMediaFile('')).toBe(false);
|
|
});
|
|
|
|
it('handles deep nested paths', () => {
|
|
expect(isMediaFile('/very/deep/nested/path/to/episode.mp4')).toBe(true);
|
|
});
|
|
|
|
it('handles windows-style paths', () => {
|
|
expect(isMediaFile('C:\\Users\\video.mkv')).toBe(true);
|
|
});
|
|
});
|