File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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+ } ) ;
You can’t perform that action at this time.
0 commit comments