@@ -4,42 +4,40 @@ import {render} from './helpers/test-utils'
4
4
describe ( '.toHaveErrorMessage' , ( ) => {
5
5
test ( 'resolves for object with correct aria-errormessage reference' , ( ) => {
6
6
const { queryByTestId} = render ( `
7
- <div id="errormessage">The errormessage</div >
8
- <div data-testid="invalid" aria-errormessage="errormessage " aria-invalid="true"></div >
9
- <div data-testid="implicitly_invalid " aria-errormessage="errormessage" aria-invalid></div >
7
+ <label for="startTime"> Please enter a start time for the meeting: </label >
8
+ <input data-testid="startTime" type="text" aria-errormessage="msgID " aria-invalid="true" value="11:30 PM" >
9
+ <span id="msgID " aria-live="assertive" style="visibility:visible"> Invalid time: the time must be between 9:00 AM and 5:00 PM </span >
10
10
` )
11
11
12
- // element with aria-invalid="true"
13
- expect ( queryByTestId ( 'invalid' ) ) . toHaveErrorMessage ( 'The errormessage' )
14
- expect ( queryByTestId ( 'invalid' ) ) . toHaveErrorMessage (
15
- expect . stringContaining ( 'The' ) ,
16
- )
17
- expect ( queryByTestId ( 'invalid' ) ) . toHaveErrorMessage ( / T h e / )
18
- expect ( queryByTestId ( 'invalid' ) ) . toHaveErrorMessage (
19
- expect . stringMatching ( / T h e / ) ,
20
- )
21
- expect ( queryByTestId ( 'invalid' ) ) . toHaveErrorMessage ( / e r r o r m e s s a g e / )
22
- expect ( queryByTestId ( 'invalid' ) ) . not . toHaveErrorMessage ( 'Something else' )
23
- expect ( queryByTestId ( 'invalid' ) ) . not . toHaveErrorMessage ( 'The' )
12
+ const timeInput = queryByTestId ( 'startTime' )
24
13
25
- // element with aria-invalid attribute
26
- expect ( queryByTestId ( 'implicitly_invalid' ) ) . toHaveErrorMessage (
27
- 'The errormessage' ,
28
- )
29
- expect ( queryByTestId ( 'implicitly_invalid' ) ) . toHaveErrorMessage (
30
- expect . stringContaining ( 'The' ) ,
31
- )
32
- expect ( queryByTestId ( 'implicitly_invalid' ) ) . toHaveErrorMessage ( / T h e / )
33
- expect ( queryByTestId ( 'implicitly_invalid' ) ) . toHaveErrorMessage (
34
- expect . stringMatching ( / T h e / ) ,
35
- )
36
- expect ( queryByTestId ( 'implicitly_invalid' ) ) . toHaveErrorMessage (
37
- / e r r o r m e s s a g e / ,
14
+ expect ( timeInput ) . toHaveErrorMessage (
15
+ 'Invalid time: the time must be between 9:00 AM and 5:00 PM' ,
38
16
)
39
- expect ( queryByTestId ( 'implicitly_invalid' ) ) . not . toHaveErrorMessage (
40
- 'Something else' ,
17
+ expect ( timeInput ) . toHaveErrorMessage ( / i n v a l i d t i m e / i) // to partially match
18
+ expect ( timeInput ) . toHaveErrorMessage (
19
+ expect . stringContaining ( 'Invalid time' ) ,
20
+ ) // to partially match
21
+ expect ( timeInput ) . not . toHaveErrorMessage ( 'Pikachu!' )
22
+ } )
23
+
24
+ test ( 'works correctly on implicit invalid element' , ( ) => {
25
+ const { queryByTestId} = render ( `
26
+ <label for="startTime"> Please enter a start time for the meeting: </label>
27
+ <input data-testid="startTime" type="text" aria-errormessage="msgID" aria-invalid value="11:30 PM" >
28
+ <span id="msgID" aria-live="assertive" style="visibility:visible"> Invalid time: the time must be between 9:00 AM and 5:00 PM </span>
29
+ ` )
30
+
31
+ const timeInput = queryByTestId ( 'startTime' )
32
+
33
+ expect ( timeInput ) . toHaveErrorMessage (
34
+ 'Invalid time: the time must be between 9:00 AM and 5:00 PM' ,
41
35
)
42
- expect ( queryByTestId ( 'implicitly_invalid' ) ) . not . toHaveErrorMessage ( 'The' )
36
+ expect ( timeInput ) . toHaveErrorMessage ( / i n v a l i d t i m e / i) // to partially match
37
+ expect ( timeInput ) . toHaveErrorMessage (
38
+ expect . stringContaining ( 'Invalid time' ) ,
39
+ ) // to partially match
40
+ expect ( timeInput ) . not . toHaveErrorMessage ( 'Pikachu!' )
43
41
} )
44
42
45
43
test ( 'rejects for valid object' , ( ) => {
0 commit comments