Skip to content

Commit 99d1a9b

Browse files
Merge pull request #19830 from MauricioFauth/ThemeColorModeToggle-event-listener-unit-test
Add unit test for ThemeColorModeToggle event listener
2 parents 77f5f79 + 16a4895 commit 99d1a9b

1 file changed

Lines changed: 31 additions & 0 deletions

File tree

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/* eslint-env node, jest */
2+
3+
import $ from 'jquery';
4+
import { ThemeColorModeToggle } from '../../../resources/js/modules/themes-manager.ts';
5+
6+
describe('ThemeColorModeToggle event listener', () => {
7+
test('toggles the color mode', () => {
8+
document.documentElement.dataset.bsTheme = 'color2';
9+
document.body.innerHTML = '<form action="https://example.com/index.php?route=/themes/set">' +
10+
'<select name="themeColorMode" id="themeColorModeToggle">' +
11+
'<option value="color0">Color0</option>' +
12+
'<option value="color1">Color1</option>' +
13+
'<option value="color2" selected>Color2</option>' +
14+
'<option value="color3">Color3</option>' +
15+
'</select></form>';
16+
17+
$.post = jest.fn().mockReturnValue({ 'done': (x: any) => x({ 'themeColorMode': 'color3' }) });
18+
19+
const themeColorModeToggle = document.getElementById('themeColorModeToggle') as HTMLSelectElement;
20+
themeColorModeToggle.addEventListener('change', ThemeColorModeToggle);
21+
themeColorModeToggle.selectedIndex = 3;
22+
themeColorModeToggle.dispatchEvent(new Event('change'));
23+
24+
expect($.post).toHaveBeenCalledWith(
25+
'https://example.com/index.php?route=/themes/set',
26+
{ 'ajax_request': '1', 'themeColorMode': 'color3' }
27+
);
28+
29+
expect(document.querySelector('html').dataset.bsTheme).toEqual('color3');
30+
});
31+
});

0 commit comments

Comments
 (0)