@@ -19,14 +19,29 @@ import * as React from 'react'
19
19
import TopBar from '../../components/TopBar/TopBar'
20
20
import { render , screen } from '@testing-library/react'
21
21
import userEvent from '@testing-library/user-event'
22
+ import { CustomThemeProvider } from '../../contexts/ThemeContext'
22
23
23
24
const user = userEvent . setup ( )
24
25
26
+ beforeEach ( ( ) => {
27
+ Object . defineProperty ( window , 'matchMedia' , {
28
+ writable : true ,
29
+ value : jest . fn ( ) . mockImplementation ( ( ) => ( {
30
+ matches : false ,
31
+ addEventListener : jest . fn ( ) ,
32
+ removeEventListener : jest . fn ( )
33
+ } ) )
34
+ } )
35
+ } )
36
+
25
37
it ( 'renders basic information' , ( ) => {
26
38
const subheaderText = 'Hello, world!'
27
39
const handleClick = jest . fn ( )
28
- render ( < TopBar subheader = { subheaderText } drawerOpen
29
- toggleDrawer = { handleClick } /> )
40
+ render (
41
+ < CustomThemeProvider >
42
+ < TopBar subheader = { subheaderText } drawerOpen toggleDrawer = { handleClick } />
43
+ </ CustomThemeProvider >
44
+ )
30
45
expect ( screen . getByText ( 'Selenium Grid' ) ) . toBeInTheDocument ( )
31
46
expect ( screen . getByRole ( 'img' ) ) . toHaveAttribute ( 'alt' , 'Selenium Grid Logo' )
32
47
expect ( screen . getByText ( subheaderText ) ) . toBeInTheDocument ( )
@@ -35,27 +50,40 @@ it('renders basic information', () => {
35
50
it ( 'can toggle drawer if error flag is not set and the drawer is open' ,
36
51
async ( ) => {
37
52
const handleClick = jest . fn ( )
38
- render ( < TopBar subheader = "4.0.0" drawerOpen toggleDrawer = { handleClick } /> )
39
- const button = screen . getByRole ( 'button' )
40
- expect ( button . getAttribute ( 'aria-label' ) ) . toBe ( 'close drawer' )
41
- await user . click ( button )
53
+ render (
54
+ < CustomThemeProvider >
55
+ < TopBar subheader = "4.0.0" drawerOpen toggleDrawer = { handleClick } />
56
+ </ CustomThemeProvider >
57
+ )
58
+ const drawerButton = screen . getByLabelText ( 'close drawer' )
59
+ expect ( drawerButton . getAttribute ( 'aria-label' ) ) . toBe ( 'close drawer' )
60
+ await user . click ( drawerButton )
42
61
expect ( handleClick ) . toHaveBeenCalledTimes ( 1 )
43
62
} )
44
63
45
64
it ( 'can toggle drawer if error flag is not set and the drawer is closed' ,
46
65
async ( ) => {
47
66
const handleClick = jest . fn ( )
48
- render ( < TopBar subheader = "4.0.0" toggleDrawer = { handleClick } /> )
49
- const button = screen . getByRole ( 'button' )
50
- expect ( button . getAttribute ( 'aria-label' ) ) . toBe ( 'open drawer' )
51
- await user . click ( button )
67
+ render (
68
+ < CustomThemeProvider >
69
+ < TopBar subheader = "4.0.0" toggleDrawer = { handleClick } />
70
+ </ CustomThemeProvider >
71
+ )
72
+ const drawerButton = screen . getByLabelText ( 'open drawer' )
73
+ expect ( drawerButton . getAttribute ( 'aria-label' ) ) . toBe ( 'open drawer' )
74
+ await user . click ( drawerButton )
52
75
expect ( handleClick ) . toHaveBeenCalledTimes ( 1 )
53
76
} )
54
77
55
78
it ( 'should not toggle drawer if error flag is set' , async ( ) => {
56
79
const handleClick = jest . fn ( )
57
- render ( < TopBar subheader = "4.0.0" error toggleDrawer = { handleClick } /> )
58
- expect ( screen . queryByRole ( 'button' ) ) . not . toBeInTheDocument ( )
80
+ render (
81
+ < CustomThemeProvider >
82
+ < TopBar subheader = "4.0.0" error toggleDrawer = { handleClick } />
83
+ </ CustomThemeProvider >
84
+ )
85
+ expect ( screen . queryByLabelText ( 'close drawer' ) ) . not . toBeInTheDocument ( )
86
+ expect ( screen . queryByLabelText ( 'open drawer' ) ) . not . toBeInTheDocument ( )
59
87
const link = screen . getByRole ( 'link' )
60
88
expect ( link . getAttribute ( 'href' ) ) . toBe ( '#help' )
61
89
await user . click ( link )
0 commit comments