import { afterEach, describe, expect, it } from 'vitest' import { applyColorScheme, DARK_QUERY } from '../../src/app/theme' import { fakeMedia } from '../helpers' afterEach(() => { document.documentElement.classList.remove('dark') }) describe('applyColorScheme (A6: system preference only)', () => { it('sets .dark from prefers-color-scheme and follows changes until unsubscribed', () => { const media = fakeMedia({ [DARK_QUERY]: true }) const stop = applyColorScheme() expect(document.documentElement.classList.contains('dark')).toBe(true) expect(media.listeners(DARK_QUERY)).toBe(1) media.change(DARK_QUERY, false) expect(document.documentElement.classList.contains('dark')).toBe(false) media.change(DARK_QUERY, true) expect(document.documentElement.classList.contains('dark')).toBe(true) stop() expect(media.listeners(DARK_QUERY)).toBe(0) media.change(DARK_QUERY, false) expect(document.documentElement.classList.contains('dark')).toBe(true) }) it('stays light without matchMedia', () => { document.documentElement.classList.add('dark') const win = { document } as unknown as Window const stop = applyColorScheme(win) expect(document.documentElement.classList.contains('dark')).toBe(false) expect(stop()).toBeUndefined() }) })