rsnext/test/eslint-plugin-next/no-typos.test.js
kaykdm 3b2732bc36
[ESLint] add no-typos rule to eslint (#26650)
* add no-typos rule to eslint

* return early when function name is correct

* Handle null decl.type

* update check

Co-authored-by: JJ Kasper <jj@jjsweb.site>
2021-07-24 22:22:19 -05:00

131 lines
3.1 KiB
JavaScript

const rule = require('@next/eslint-plugin-next/lib/rules/no-typos')
const RuleTester = require('eslint').RuleTester
RuleTester.setDefaultConfig({
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module',
ecmaFeatures: {
modules: true,
jsx: true,
},
},
})
var ruleTester = new RuleTester()
ruleTester.run('no-typos', rule, {
valid: [
`
export default function Page() {
return <div></div>;
}
export const getStaticPaths = async () => {};
export const getStaticProps = async () => {};
`,
`
export default function Page() {
return <div></div>;
}
export const getServerSideProps = async () => {};
`,
`
export default function Page() {
return <div></div>;
}
export async function getStaticPaths() {};
export async function getStaticProps() {};
`,
`
export default function Page() {
return <div></div>;
}
export async function getServerSideProps() {};
`,
// detect only typo that is one operation away from the correct one
`
export default function Page() {
return <div></div>;
}
export async function getServerSidePropsss() {};
`,
`
export default function Page() {
return <div></div>;
}
export async function getstatisPath() {};
`,
],
invalid: [
{
code: `
export default function Page() {
return <div></div>;
}
export const getStaticpaths = async () => {};
export const getStaticProps = async () => {};
`,
filename: 'pages/index.js',
errors: [
{
message: 'getStaticpaths may be a typo. Did you mean getStaticPaths?',
type: 'ExportNamedDeclaration',
},
],
},
{
code: `
export default function Page() {
return <div></div>;
}
export async function getStaticPathss(){};
export async function getStaticPropss(){};
`,
filename: 'pages/index.js',
errors: [
{
message:
'getStaticPathss may be a typo. Did you mean getStaticPaths?',
type: 'ExportNamedDeclaration',
},
{
message:
'getStaticPropss may be a typo. Did you mean getStaticProps?',
type: 'ExportNamedDeclaration',
},
],
},
{
code: `
export default function Page() {
return <div></div>;
}
export async function getServurSideProps(){};
`,
filename: 'pages/index.js',
errors: [
{
message:
'getServurSideProps may be a typo. Did you mean getServerSideProps?',
type: 'ExportNamedDeclaration',
},
],
},
{
code: `
export default function Page() {
return <div></div>;
}
export const getServurSideProps = () => {};
`,
filename: 'pages/index.js',
errors: [
{
message:
'getServurSideProps may be a typo. Did you mean getServerSideProps?',
type: 'ExportNamedDeclaration',
},
],
},
],
})