daynitejs
Version:
A lightweight JavaScript library for toggling light and dark themes.
37 lines (31 loc) • 1.15 kB
JavaScript
/**
* Unit tests for system preference utilities.
*/
import { getSystemTheme } from '../src/utils/system.js';
describe('System Utils', () => {
let originalMatchMedia;
beforeEach(() => {
originalMatchMedia = window.matchMedia;
window.matchMedia = jest.fn();
});
afterEach(() => {
window.matchMedia = originalMatchMedia;
});
test('getSystemTheme returns dark when prefers-color-scheme is dark', () => {
jest.setTimeout(10000);
window.matchMedia.mockReturnValue({ matches: true });
expect(getSystemTheme()).toBe('dark');
expect(window.matchMedia).toHaveBeenCalledWith('(prefers-color-scheme: dark)');
});
test('getSystemTheme returns light when prefers-color-scheme is light', () => {
jest.setTimeout(10000);
window.matchMedia.mockReturnValue({ matches: false });
expect(getSystemTheme()).toBe('light');
expect(window.matchMedia).toHaveBeenCalledWith('(prefers-color-scheme: dark)');
});
test('getSystemTheme returns light when matchMedia is unavailable', () => {
jest.setTimeout(10000);
window.matchMedia = undefined;
expect(getSystemTheme()).toBe('light');
});
});