Skip to content

Commit 7e15965

Browse files
committed
add test cases for forwardRef
1 parent 0607850 commit 7e15965

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

test.js

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,60 @@ const classComponentNested = `class Car extends React.Component {
129129
}
130130
}`;
131131

132+
const reactForwardRef = /* tsx */ `
133+
export const InternalLink = React.forwardRef<HTMLAnchorElement, InternalLinkProps>(
134+
({ variant, ...props }, ref) => (
135+
<Link
136+
data-component="InternalLink"
137+
ref={ref}
138+
className={classNames(css.link, { [css.inverse]: variant === 'inverse' })}
139+
{...props}
140+
>
141+
{props.children}
142+
</Link>
143+
),
144+
);`;
145+
146+
const reactForwardRefError = /* tsx */ `
147+
export const InternalLink = React.forwardRef<HTMLAnchorElement, InternalLinkProps>(
148+
({ variant, ...props }, ref) => (
149+
<Link
150+
ref={ref}
151+
className={classNames(css.link, { [css.inverse]: variant === 'inverse' })}
152+
{...props}
153+
>
154+
{props.children}
155+
</Link>
156+
),
157+
);`;
158+
159+
const forwardRef = /* tsx */ `
160+
export const InternalLink = forwardRef<HTMLAnchorElement, InternalLinkProps>(
161+
({ variant, ...props }, ref) => (
162+
<Link
163+
data-component="InternalLink"
164+
ref={ref}
165+
className={classNames(css.link, { [css.inverse]: variant === 'inverse' })}
166+
{...props}
167+
>
168+
{props.children}
169+
</Link>
170+
),
171+
);`;
172+
173+
const forwardRefError = /* tsx */ `
174+
export const InternalLink = forwardRef<HTMLAnchorElement, InternalLinkProps>(
175+
({ variant, ...props }, ref) => (
176+
<Link
177+
ref={ref}
178+
className={classNames(css.link, { [css.inverse]: variant === 'inverse' })}
179+
{...props}
180+
>
181+
{props.children}
182+
</Link>
183+
),
184+
);`;
185+
132186
const tests = {
133187
'data-component': {
134188
// Require the actual rule definition
@@ -174,6 +228,12 @@ const tests = {
174228
// Multiple return paths should not trigger the eslint warning
175229
code: fragmentsWontUpdate,
176230
},
231+
{
232+
code: reactForwardRef,
233+
},
234+
{
235+
code: forwardRef,
236+
},
177237
],
178238
invalid: [
179239
{
@@ -220,6 +280,20 @@ const tests = {
220280
'Component2 is missing the data-component attribute for the top-level element.',
221281
],
222282
},
283+
{
284+
code: reactForwardRefError,
285+
output: reactForwardRef,
286+
errors: [
287+
'InternalLink is missing the data-component attribute for the top-level element.',
288+
],
289+
},
290+
{
291+
code: forwardRefError,
292+
output: forwardRef,
293+
errors: [
294+
'InternalLink is missing the data-component attribute for the top-level element.',
295+
],
296+
},
223297
],
224298
},
225299
},

0 commit comments

Comments
 (0)