phpmyadmin/tests/javascript/modules/themes-manager.test.ts
Maurício Meneghini Fauth 16a48957ad
Add unit test for ThemeColorModeToggle event listener
Signed-off-by: Maurício Meneghini Fauth <mauricio@mfauth.net>
2025-08-28 16:17:49 -03:00

32 lines
1.4 KiB
TypeScript

/* eslint-env node, jest */
import $ from 'jquery';
import { ThemeColorModeToggle } from '../../../resources/js/modules/themes-manager.ts';
describe('ThemeColorModeToggle event listener', () => {
test('toggles the color mode', () => {
document.documentElement.dataset.bsTheme = 'color2';
document.body.innerHTML = '<form action="https://example.com/index.php?route=/themes/set">' +
'<select name="themeColorMode" id="themeColorModeToggle">' +
'<option value="color0">Color0</option>' +
'<option value="color1">Color1</option>' +
'<option value="color2" selected>Color2</option>' +
'<option value="color3">Color3</option>' +
'</select></form>';
$.post = jest.fn().mockReturnValue({ 'done': (x: any) => x({ 'themeColorMode': 'color3' }) });
const themeColorModeToggle = document.getElementById('themeColorModeToggle') as HTMLSelectElement;
themeColorModeToggle.addEventListener('change', ThemeColorModeToggle);
themeColorModeToggle.selectedIndex = 3;
themeColorModeToggle.dispatchEvent(new Event('change'));
expect($.post).toHaveBeenCalledWith(
'https://example.com/index.php?route=/themes/set',
{ 'ajax_request': '1', 'themeColorMode': 'color3' }
);
expect(document.querySelector('html').dataset.bsTheme).toEqual('color3');
});
});