Chore: add some basic validation tests for our eslint rules (#75284)

* add some basic validation tests for our eslint rules

* add 1 more valid case
This commit is contained in:
Ashley Harrison 2023-09-22 13:03:21 +01:00 committed by GitHub
parent c70623fb85
commit 06d89e1929
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 110 additions and 1 deletions

View File

@ -10,9 +10,13 @@
"url": "http://github.com/grafana/grafana.git", "url": "http://github.com/grafana/grafana.git",
"directory": "packages/grafana-eslint-rules" "directory": "packages/grafana-eslint-rules"
}, },
"dependencies": {
"@typescript-eslint/utils": "^5.46.1"
},
"devDependencies": { "devDependencies": {
"@typescript-eslint/types": "^5.46.1", "@typescript-eslint/types": "^5.46.1",
"@typescript-eslint/utils": "^5.46.1" "eslint": "8.44.0",
"tslib": "2.6.0"
}, },
"private": true "private": true
} }

View File

@ -0,0 +1,47 @@
import { RuleTester } from 'eslint';
import noAriaLabelE2ESelector from '../rules/no-aria-label-e2e-selectors.cjs';
RuleTester.setDefaultConfig({
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
},
},
});
const ruleTester = new RuleTester();
ruleTester.run('eslint no-aria-label-e2e-selector', noAriaLabelE2ESelector, {
valid: [
{
code: `<div aria-label="foo" />`,
},
{
code: `<div aria-label={"foo"} />`,
},
{
code: `
import { someOtherImport } from './some-other-location';
<div aria-label={someOtherImport} />
`,
},
],
invalid: [
{
code: `
import { selectors } from '@grafana/e2e-selectors';
<div aria-label={selectors.pages.AddDashboard.addNewPanel} />
`,
errors: [
{
message: 'Use data-testid for E2E selectors instead of aria-label',
},
],
},
],
});

View File

@ -0,0 +1,56 @@
import { RuleTester } from 'eslint';
import noBorderRadiusLiteral from '../rules/no-border-radius-literal.cjs';
RuleTester.setDefaultConfig({
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
},
},
});
const ruleTester = new RuleTester();
ruleTester.run('eslint no-border-radius-literal', noBorderRadiusLiteral, {
valid: [
{
code: `css({ borderRadius: theme.shape.radius.default })`,
},
{
code: `css({ borderRadius: theme.shape.radius.circle })`,
},
{
code: `css({ borderRadius: theme.shape.radius.pill })`,
},
],
invalid: [
{
code: `css({ borderRadius: '2px' })`,
errors: [
{
message: 'Prefer using theme.shape.radius tokens instead of literal values.',
},
],
},
{
code: `css({ lineHeight: 1 }, { borderRadius: '2px' })`,
errors: [
{
message: 'Prefer using theme.shape.radius tokens instead of literal values.',
},
],
},
{
code: `css([{ lineHeight: 1 }, { borderRadius: '2px' }])`,
errors: [
{
message: 'Prefer using theme.shape.radius tokens instead of literal values.',
},
],
},
],
});

View File

@ -3819,6 +3819,8 @@ __metadata:
dependencies: dependencies:
"@typescript-eslint/types": ^5.46.1 "@typescript-eslint/types": ^5.46.1
"@typescript-eslint/utils": ^5.46.1 "@typescript-eslint/utils": ^5.46.1
eslint: 8.44.0
tslib: 2.6.0
languageName: unknown languageName: unknown
linkType: soft linkType: soft