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 = `
`;
});
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);
});
});
});