import { describe, it, afterEach, expect, $, click, sleep, closeAll } from './runner.js'; import { state } from '../../js/modules/state.js'; describe('Toolbar: Filter Toggles', () => { afterEach(() => closeAll()); it('hide-done toggles state and active class', async () => { const before = state.hideDone; click('#hide-done'); await sleep(100); expect(state.hideDone).toBe(!before); expect($('#hide-done').classList.contains('active')).toBe(!before); // Reset click('#hide-done'); await sleep(50); }); it('hide-termine toggles state and active class', async () => { const before = state.hideTermine; click('#hide-termine'); await sleep(100); expect(state.hideTermine).toBe(!before); expect($('#hide-termine').classList.contains('active')).toBe(!before); click('#hide-termine'); await sleep(50); }); it('hide-tagged toggles state and active class', async () => { const before = state.hideTagged; click('#hide-tagged'); await sleep(100); expect(state.hideTagged).toBe(!before); expect($('#hide-tagged').classList.contains('active')).toBe(!before); click('#hide-tagged'); await sleep(50); }); it('superview toggles state and active class', async () => { const before = state.superView; click('#superview-toggle'); await sleep(100); expect(state.superView).toBe(!before); expect($('#superview-toggle').classList.contains('active')).toBe(!before); click('#superview-toggle'); await sleep(50); }); it('sort cycles through modes', async () => { const modes = ['manual', 'newest', 'oldest', 'alpha', 'tag']; const before = state.sortMode; click('#sort-toggle'); await sleep(100); const after = state.sortMode; const idx = modes.indexOf(before); expect(after).toBe(modes[(idx + 1) % modes.length]); // Reset back while (state.sortMode !== before) { click('#sort-toggle'); await sleep(50); } }); }); describe('Toolbar: Superview Rendering', () => { afterEach(async () => { if (state.superView) { click('#superview-toggle'); await sleep(100); } await closeAll(); }); it('superview renders list items', async () => { if (state.superView) { click('#superview-toggle'); await sleep(100); } click('#superview-toggle'); await sleep(200); const items = document.querySelectorAll('.superview-item'); expect(items.length).toBeGreaterThan(-1); }); });