1
1
import { render , fireEvent } from '@testing-library/react' ;
2
+ import sinon from 'sinon' ;
3
+ import { expect } from 'chai' ;
4
+
2
5
import Anchor from '../src/Anchor' ;
3
6
4
7
describe ( 'Anchor' , ( ) => {
5
8
it ( 'renders an anchor tag' , ( ) => {
6
9
const { container } = render ( < Anchor data-testid = "anchor" /> ) ;
7
10
8
- container . firstChild . tagName . should . equal ( 'A' ) ;
11
+ container . firstElementChild ! . tagName . should . equal ( 'A' ) ;
9
12
} ) ;
10
13
11
14
it ( 'forwards provided href' , ( ) => {
12
15
const { container } = render ( < Anchor href = "http://google.com" /> ) ;
13
16
14
- container . firstChild . getAttribute ( 'href' ) . should . equal ( 'http://google.com' ) ;
17
+ container
18
+ . firstElementChild ! . getAttribute ( 'href' ) !
19
+ . should . equal ( 'http://google.com' ) ;
15
20
} ) ;
16
21
17
- // xit ('ensures that an href is provided', () => {
18
- // mount (<Anchor />)
19
- // .getDOMNode()
20
- // .hasAttribute ('href').should.be.true ;
21
- // });
22
+ it ( 'ensures that a href is a hash if none provided' , ( ) => {
23
+ const { container } = render ( < Anchor /> ) ;
24
+
25
+ container . firstElementChild ! . getAttribute ( 'href' ) ! . should . equal ( '#' ) ;
26
+ } ) ;
22
27
23
28
it ( 'forwards onClick handler' , ( ) => {
24
29
const handleClick = sinon . spy ( ) ;
25
30
26
31
const { container } = render ( < Anchor onClick = { handleClick } /> ) ;
27
32
28
- fireEvent . click ( container . firstChild ) ;
33
+ fireEvent . click ( container . firstChild ! ) ;
29
34
30
35
handleClick . should . have . been . calledOnce ;
31
36
} ) ;
@@ -35,7 +40,7 @@ describe('Anchor', () => {
35
40
36
41
const { container } = render ( < Anchor onClick = { handleClick } /> ) ;
37
42
38
- fireEvent . keyDown ( container . firstChild , { key : ' ' } ) ;
43
+ fireEvent . keyDown ( container . firstChild ! , { key : ' ' } ) ;
39
44
40
45
handleClick . should . have . been . calledOnce ;
41
46
} ) ;
@@ -47,7 +52,7 @@ describe('Anchor', () => {
47
52
< Anchor href = "http://google.com" onKeyDown = { onKeyDownSpy } /> ,
48
53
) ;
49
54
50
- fireEvent . keyDown ( container . firstChild , { key : ' ' } ) ;
55
+ fireEvent . keyDown ( container . firstChild ! , { key : ' ' } ) ;
51
56
52
57
onKeyDownSpy . should . have . been . calledOnce ;
53
58
} ) ;
@@ -57,11 +62,11 @@ describe('Anchor', () => {
57
62
58
63
const { container, rerender } = render ( < Anchor onClick = { handleClick } /> ) ;
59
64
60
- fireEvent . click ( container . firstChild ) ;
65
+ fireEvent . click ( container . firstChild ! ) ;
61
66
62
67
rerender ( < Anchor onClick = { handleClick } href = "#" /> ) ;
63
68
64
- fireEvent . click ( container . firstChild ) ;
69
+ fireEvent . click ( container . firstChild ! ) ;
65
70
66
71
expect ( handleClick ) . to . have . been . calledTwice ;
67
72
expect ( handleClick . getCall ( 0 ) . args [ 0 ] . isDefaultPrevented ( ) ) . to . be . true ;
@@ -72,7 +77,8 @@ describe('Anchor', () => {
72
77
const handleClick = sinon . spy ( ) ;
73
78
74
79
fireEvent . click (
75
- render ( < Anchor href = "#foo" onClick = { handleClick } /> ) . container . firstChild ,
80
+ render ( < Anchor href = "#foo" onClick = { handleClick } /> ) . container
81
+ . firstChild ! ,
76
82
) ;
77
83
78
84
expect ( handleClick ) . to . have . been . calledOnce ;
@@ -101,7 +107,7 @@ describe('Anchor', () => {
101
107
expect (
102
108
render (
103
109
< Anchor href = "http://google.com" /> ,
104
- ) . container . firstChild . hasAttribute ( 'role' ) ,
110
+ ) . container . firstElementChild ! . hasAttribute ( 'role' ) ,
105
111
) . to . be . false ;
106
112
} ) ;
107
113
} ) ;
0 commit comments