diff --git a/test-renderer-classes-comprehensive.js b/test-renderer-classes-comprehensive.js index 8cf8049..f31b62f 100644 --- a/test-renderer-classes-comprehensive.js +++ b/test-renderer-classes-comprehensive.js @@ -2,50 +2,111 @@ const { test, describe, beforeEach, afterEach } = require('node:test'); const assert = require('node:assert'); // Create a simple mock for DOM -const createMockElement = () => ({ - style: {}, - innerHTML: '', - textContent: '', - dataset: {}, - className: '', - addEventListener: () => {}, - removeEventListener: () => {}, - appendChild: () => {}, - insertBefore: () => {}, - remove: () => {}, - querySelector: () => null, - querySelectorAll: () => [], - setAttribute: () => {}, - removeAttribute: () => {}, - hasAttribute: () => false, - closest: () => null, - contains: () => false, - focus: () => {}, - blur: () => {}, - click: () => {}, - dispatchEvent: () => true, - classList: { add: () => {}, remove: () => {} }, - get parentElement() { return null; } -}); +const createMockElement = (overrides = {}) => { + const el = { + style: {}, + get innerHTML() { return this._innerHTML || ''; }, + set innerHTML(val) { + this._innerHTML = val; + // Parse simple HTML to extract textContent for episode numbers + if (val.includes('episode-number')) { + const match = val.match(/>(\d+|-?\d+-\d+)<\/div>/); + this._textContent = match ? match[1] : ''; + } + }, + get textContent() { return this._textContent || ''; }, + set textContent(val) { this._textContent = val; }, + dataset: {}, + className: '', + addEventListener: () => {}, + removeEventListener: () => {}, + appendChild: () => {}, + insertBefore: () => {}, + remove: () => {}, + querySelector: () => null, + querySelectorAll: (selector) => { + // Simple mock implementation + if (selector === '.episode-number') { + return [{ + textContent: '1', + dataset: { episodeStart: '1', episodeEnd: '1' }, + style: {}, + addEventListener: () => {}, + removeEventListener: () => {} + }]; + } + return []; + }, + setAttribute: () => {}, + removeAttribute: () => {}, + hasAttribute: () => false, + closest: () => null, + contains: () => false, + focus: () => {}, + blur: () => {}, + click: () => {}, + dispatchEvent: () => true, + classList: { add: () => {}, remove: () => {} }, + get parentElement() { return null; } + }; + return { ...el, ...overrides }; +}; + +// Mock DOM - create different elements based on ID +const mockElements = { + 'file-list': createMockElement({ innerHTML: '