import { describe, it, expect, beforeEach } from 'vitest'; import { DOM, getNavElements, getMainElements } from '../assets/js/modules/dom.js'; describe('DOM Module', () => { beforeEach(() => { // Setup basic HTML structure document.body.innerHTML = `
Avatar

ZaneDev

Tagline

`; }); describe('DOM utility', () => { it('should cache and retrieve elements', () => { const avatar = DOM.get('.avatar'); expect(avatar).toBeTruthy(); expect(avatar.textContent).toBe('Avatar'); // Should return cached version on second call const avatarAgain = DOM.get('.avatar'); expect(avatarAgain).toBe(avatar); }); it('should get all elements matching selector', () => { const buttons = DOM.getAll('.nav-button'); expect(buttons).toHaveLength(2); }); it('should clear cache', () => { DOM.get('.avatar'); expect(Object.keys(DOM.cache).length).toBeGreaterThan(0); DOM.clearCache(); expect(Object.keys(DOM.cache).length).toBe(0); }); }); describe('getMainElements', () => { it('should return main UI elements', () => { const elements = getMainElements(); expect(elements.avatar).toBeTruthy(); expect(elements.brandName).toBeTruthy(); expect(elements.tagline).toBeTruthy(); }); }); describe('getNavElements', () => { it('should return navigation elements', () => { // Add required elements for navigation document.body.innerHTML += `
`; const elements = getNavElements(); expect(elements.navButtons).toBeTruthy(); expect(elements.navButtons.length).toBeGreaterThan(0); }); }); });