MovieMapper/test-renderer-classes.js
Jarian Cottingham 759139a6f8 Add comprehensive test coverage for renderer class refactoring
- Added test-renderer-classes.js with tests for all 8 new class files
- Updated test-functional.js to match new code structure
- All tests passing:
  * 4 renderer class tests (AppState, EpisodeManager, ProgressManager, imports)
  * 9 audit system tests
  * 4 functional tests
- Syntax verified with node --check
2026-02-25 02:33:37 -06:00

99 lines
3.3 KiB
JavaScript

const { test } = require('node:test');
const assert = require('node:assert');
// Test class imports
const AppState = require('./utils/renderer/AppState');
const FileListManager = require('./utils/renderer/FileListManager');
const TagManager = require('./utils/renderer/TagManager');
const EpisodeManager = require('./utils/renderer/EpisodeManager');
const SearchManager = require('./utils/renderer/SearchManager');
const FileManager = require('./utils/renderer/FileManager');
const ModalManager = require('./utils/renderer/ModalManager');
const ProgressManager = require('./utils/renderer/ProgressManager');
test('AppState class', () => {
const state = new AppState();
// Test initial state
assert.strictEqual(state.getCurrentDirectory(), null);
assert.deepStrictEqual(state.getCurrentFiles(), []);
assert.strictEqual(state.getCurrentShow(), null);
// Test setters and getters
state.setCurrentDirectory('/test/path');
assert.strictEqual(state.getCurrentDirectory(), '/test/path');
state.setCurrentFiles([{ name: 'test.mp4' }]);
assert.deepStrictEqual(state.getCurrentFiles(), [{ name: 'test.mp4' }]);
state.setCurrentShow({ id: 123, name: 'Test Show' });
assert.strictEqual(state.getCurrentShow().id, 123);
// Test reset
state.reset();
assert.strictEqual(state.getCurrentDirectory(), null);
assert.deepStrictEqual(state.getCurrentFiles(), []);
});
test('EpisodeManager class', () => {
const manager = new EpisodeManager();
// Test isUpdatingEpisodeNumbers flag
assert.strictEqual(manager.getIsUpdatingEpisodeNumbers(), false);
manager.setIsUpdatingEpisodeNumbers(true);
assert.strictEqual(manager.getIsUpdatingEpisodeNumbers(), true);
// Test episode range calculation
const mockEpisodeEl = {
dataset: {
episodeStart: '5',
episodeEnd: '7'
}
};
const range = manager.getEpisodeRange(mockEpisodeEl);
assert.strictEqual(range.start, 5);
assert.strictEqual(range.end, 7);
});
test('ProgressManager class', () => {
// Mock DOM elements
const mockProgressContainer = { style: { display: '' } };
const mockProgressText = { textContent: '' };
const mockProgressCount = { textContent: '' };
const manager = new ProgressManager(
mockProgressContainer,
mockProgressText,
mockProgressCount
);
// Test showProgress
manager.showProgress('Testing...');
assert.strictEqual(mockProgressContainer.style.display, 'block');
assert.strictEqual(mockProgressText.textContent, 'Testing...');
// Test hideProgress
manager.hideProgress();
assert.strictEqual(mockProgressContainer.style.display, 'none');
// Test updateProgress
manager.showProgress();
manager.updateProgress(5, 10, 'test.mp4');
assert.strictEqual(mockProgressText.textContent, 'Processing: test.mp4');
assert.strictEqual(mockProgressCount.textContent, '6 of 10 files');
});
test('Class imports', () => {
assert.ok(AppState, 'AppState class loaded');
assert.ok(FileListManager, 'FileListManager class loaded');
assert.ok(TagManager, 'TagManager class loaded');
assert.ok(EpisodeManager, 'EpisodeManager class loaded');
assert.ok(SearchManager, 'SearchManager class loaded');
assert.ok(FileManager, 'FileManager class loaded');
assert.ok(ModalManager, 'ModalManager class loaded');
assert.ok(ProgressManager, 'ProgressManager class loaded');
});
console.log('All renderer class tests passed!');