twenty/tools/eslint-rules/rules/no-navigate-prefer-link.spec.ts
gitstart-twenty bb7d94a455
Create ESLint rule to discourage usage of navigate() and prefer Link (#5642)
### Description
Create ESLint rule to discourage usage of navigate() and prefer Link


### Refs
#5468 

### Demo

![Capture-2024-05-29-112852](https://github.com/twentyhq/twenty/assets/140154534/28378c09-86bb-49d3-9e9a-49aa1c07ad11)

![Capture-2024-05-29-112843](https://github.com/twentyhq/twenty/assets/140154534/2c05ea92-e19b-49ae-acb9-07f6ec9182ab)

Fixes #5468

---------

Co-authored-by: gitstart-twenty <gitstart-twenty@users.noreply.github.com>
Co-authored-by: v1b3m <vibenjamin6@gmail.com>
Co-authored-by: Matheus <matheus_benini@hotmail.com>
Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
2024-06-04 17:04:57 +02:00

60 lines
1.1 KiB
TypeScript

import { TSESLint } from '@typescript-eslint/utils';
import { rule, RULE_NAME } from './no-navigate-prefer-link';
const ruleTester = new TSESLint.RuleTester({
parser: require.resolve('@typescript-eslint/parser'),
});
ruleTester.run(RULE_NAME, rule, {
valid: [
{
code: 'if(someVar) { navigate("/"); }',
},
{
code: '<Link to="/"><Button>Click me</Button></Link>',
parserOptions: {
ecmaFeatures: {
jsx: true,
},
},
},
{
code: '<Button onClick={() =>{ navigate("/"); doSomething(); }} />',
parserOptions: {
ecmaFeatures: {
jsx: true,
},
},
},
],
invalid: [
{
code: '<Button onClick={() => navigate("/")} />',
errors: [
{
messageId: 'preferLink',
},
],
parserOptions: {
ecmaFeatures: {
jsx: true,
},
},
},
{
code: '<Button onClick={() => { navigate("/");} } />',
errors: [
{
messageId: 'preferLink',
},
],
parserOptions: {
ecmaFeatures: {
jsx: true,
},
},
},
],
});