@@ -16,6 +16,24 @@ describe( 'Link', () => {
1616 expect ( ref . current ) . toBeInstanceOf ( HTMLAnchorElement ) ;
1717 } ) ;
1818
19+ it ( 'calls onClick when clicked' , async ( ) => {
20+ const user = userEvent . setup ( ) ;
21+ const onClick = jest . fn (
22+ ( event : React . MouseEvent < HTMLAnchorElement > ) =>
23+ event . preventDefault ( )
24+ ) ;
25+
26+ render (
27+ < Link href = "/page" onClick = { onClick } >
28+ Go to page
29+ </ Link >
30+ ) ;
31+
32+ await user . click ( screen . getByRole ( 'link' , { name : 'Go to page' } ) ) ;
33+
34+ expect ( onClick ) . toHaveBeenCalledTimes ( 1 ) ;
35+ } ) ;
36+
1937 describe ( 'openInNewTab' , ( ) => {
2038 it ( 'sets target="_blank" when true' , ( ) => {
2139 render (
@@ -49,45 +67,5 @@ describe( 'Link', () => {
4967 screen . getByLabelText ( '(opens in a new tab)' )
5068 ) . toBeInTheDocument ( ) ;
5169 } ) ;
52-
53- it ( 'prevents default for internal anchor links' , async ( ) => {
54- const user = userEvent . setup ( ) ;
55- const onClick = jest . fn ( ) ;
56-
57- render (
58- < Link href = "#section" openInNewTab onClick = { onClick } >
59- Jump
60- </ Link >
61- ) ;
62-
63- await user . click ( screen . getByRole ( 'link' ) ) ;
64-
65- expect ( onClick ) . toHaveBeenCalledTimes ( 1 ) ;
66- expect ( onClick . mock . calls [ 0 ] [ 0 ] . defaultPrevented ) . toBe (
67- true
68- ) ;
69- } ) ;
70-
71- it ( 'does not prevent default for external links' , async ( ) => {
72- const user = userEvent . setup ( ) ;
73- const onClick = jest . fn ( ) ;
74-
75- render (
76- < Link
77- href = "https://example.com"
78- openInNewTab
79- onClick = { onClick }
80- >
81- External
82- </ Link >
83- ) ;
84-
85- await user . click ( screen . getByRole ( 'link' ) ) ;
86-
87- expect ( onClick ) . toHaveBeenCalledTimes ( 1 ) ;
88- expect ( onClick . mock . calls [ 0 ] [ 0 ] . defaultPrevented ) . toBe (
89- false
90- ) ;
91- } ) ;
9270 } ) ;
9371} ) ;
0 commit comments