import { describe, it, expect, vi, beforeEach } from 'vitest'; import ProgressManager from '../utils/renderer/ProgressManager'; describe('ProgressManager', () => { let progressContainer, progressText, progressCount; let pm; beforeEach(() => { progressContainer = document.createElement('div'); progressText = document.createElement('span'); progressCount = document.createElement('span'); pm = new ProgressManager(progressContainer, progressText, progressCount); }); describe('showProgress', () => { it('shows progress with default message', () => { pm.showProgress(); expect(progressContainer.style.display).toBe('block'); expect(progressText.textContent).toBe('Scanning directory...'); expect(progressCount.textContent).toBe(''); }); it('shows progress with custom message', () => { pm.showProgress('Custom message'); expect(progressText.textContent).toBe('Custom message'); }); }); describe('hideProgress', () => { it('hides progress container', () => { pm.hideProgress(); expect(progressContainer.style.display).toBe('none'); }); }); describe('updateProgress', () => { it('updates progress with current/total', () => { pm.updateProgress(2, 10, 'video.mp4'); expect(progressText.textContent).toBe('Processing: video.mp4'); expect(progressCount.textContent).toBe('3 of 10 files'); }); it('handles first file (current=0)', () => { pm.updateProgress(0, 5, 'file1.mp4'); expect(progressCount.textContent).toBe('1 of 5 files'); }); }); describe('updateProgressText', () => { it('updates progress text', () => { pm.updateProgressText('Custom text'); expect(progressText.textContent).toBe('Custom text'); }); }); describe('updateProgressCount', () => { it('updates progress count', () => { pm.updateProgressCount(5, 20); expect(progressCount.textContent).toBe('6 of 20 files'); }); it('handles last file', () => { pm.updateProgressCount(19, 20); expect(progressCount.textContent).toBe('20 of 20 files'); }); }); describe('showDirectoryFeedback', () => { it('logs directory feedback', () => { const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => {}); pm.showDirectoryFeedback('extras'); expect(consoleSpy).toHaveBeenCalledWith('Directory "extras" created and file moved'); consoleSpy.mockRestore(); }); }); });