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>
This commit is contained in:
gitstart-twenty
2024-06-04 11:04:57 -04:00
committed by GitHub
parent 234e062232
commit bb7d94a455
18 changed files with 317 additions and 132 deletions

View File

@ -0,0 +1,59 @@
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,
},
},
},
],
});