eslint-plugin-hooks-logic-order
Version:
Allows component-code's logical blocks keep in defined order
286 lines (254 loc) • 7.58 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const eslint_1 = require("eslint");
const hooks_on_top_1 = __importDefault(require("./hooks-on-top"));
const tester = new eslint_1.RuleTester({
parser: require.resolve("@typescript-eslint/parser"),
parserOptions: { ecmaVersion: 2015, jsx: true },
});
tester.run("hooks-on-top", hooks_on_top_1.default, {
valid: [
{
filename: "valid.tsx",
options: [
{
order: ["hook2var", "var", "hook", "func", "others"],
},
],
code: `
const DailyReports = () => {
const stores = useStore();
const dateNow = 123;
useEffect(() => {
//
}, []);
const onChangeTab = (type) => {
setReportsType(type);
};
return 1;
};
`,
},
{
filename: "valid.tsx",
options: [
{
order: ["hook2var", "var", "hook", "func", "others"],
},
],
code: `
const DailyReports = () => {
return 1;
};
`,
},
{
filename: "valid.tsx",
options: [
{
order: ["hook2var", "var", "hook", "func", "others"],
},
],
code: `
const DailyReports = () => {
const stores = useStore();
return 1;
};
`,
},
{
filename: "valid.tsx",
options: [
{
order: ["hook2var", "var", "hook", "func", "others"],
},
],
code: `
const DailyReports = () => {
const stores = useStore();
const stores = useStore();
const stores = useStore();
const stores = useStore();
const stores = useStore();
const stores = useStore();
const dateNow = 123;
return 1;
};
`,
},
{
filename: "valid.tsx",
options: [
{
order: ["hook2var", "var", "hook", "func", "others"],
},
],
code: `
const DailyReports = () => {
const stores = useStore();
const stores = useStore();
const stores = useStore();
const stores = useStore();
const stores = useStore();
const stores = useStore();
const dateNow = 123;
useEffect(() => {
//
}, []);
return 1;
};
`,
},
],
invalid: [
{
filename: "invalid.tsx",
options: [
{
order: ["hook2var", "var", "hook", "func", "others"],
},
],
code: `
const DailyReports = () => {
const stores = useStore();
const dateNow = 123;
useEffect(() => {
//
}, []);
const onChangeTab = (type) => {
setReportsType(type);
};
const dateNow = 123;
return 1;
};
`,
errors: [{ message: `Wrong logic block order in component! Check your .eslintrc rules for correct block order` }],
},
{
filename: "invalid.tsx",
options: [
{
order: ["hook2var", "var", "hook", "func", "others"],
},
],
code: `
const DailyReports = () => {
const stores = useStore();
const dateNow = 123;
const onChangeTab = (type) => {
setReportsType(type);
};
useEffect(() => {
//
}, []);
return 1;
};
`,
errors: [{ message: `Wrong logic block order in component! Check your .eslintrc rules for correct block order` }],
},
{
filename: "invalid.tsx",
options: [
{
order: ["hook2var", "var", "hook", "func", "others"],
},
],
code: `
const DailyReports = () => {
const stores = useStore();
const dateNow = 123;
const onChangeTab = (type) => {
setReportsType(type);
};
return 2;
useEffect(() => {
//
}, []);
return 1;
};
`,
errors: [{ message: `Wrong logic block order in component! Check your .eslintrc rules for correct block order` }],
},
{
filename: "invalid.tsx",
options: [
{
order: ["hook2var", "var", "hook", "func", "others"],
},
],
code: `
const DailyReports = () => {
const stores = useStore();
const dateNow = 123;
const onChangeTab = (type) => {
setReportsType(type);
};
const dateNow = 123;
useEffect(() => {
//
}, []);
const dateNow = 123;
return 1;
};
`,
errors: [{ message: `Wrong logic block order in component! Check your .eslintrc rules for correct block order` }],
},
{
filename: "invalid.tsx",
options: [
{
order: ["hook2var", "var", "hook", "func", "others"],
},
],
code: `
const DailyReports = () => {
const stores = useStore();
const stores = useStore();
const stores = useStore();
const stores = useStore();
const stores = useStore();
const stores = useStore();
const stores = useStore();
const stores = useStore();
const dateNow = 123;
const onChangeTab = (type) => {
setReportsType(type);
};
const dateNow = 123;
useEffect(() => {
//
}, []);
const dateNow = 123;
const stores = useStore();
const stores = useStore();
const stores = useStore();
const stores = useStore();
useEffect(() => {
//
}, []);
useEffect(() => {
//
}, []);
useEffect(() => {
//
}, []);
useEffect(() => {
//
}, []);
return 1;
};
`,
errors: [
{ message: `Wrong logic block order in component! Check your .eslintrc rules for correct block order` },
{ message: `Wrong logic block order in component! Check your .eslintrc rules for correct block order` },
{ message: `Wrong logic block order in component! Check your .eslintrc rules for correct block order` },
{ message: `Wrong logic block order in component! Check your .eslintrc rules for correct block order` },
{ message: `Wrong logic block order in component! Check your .eslintrc rules for correct block order` },
],
},
],
});
//# sourceMappingURL=hooks-on-top.test.js.map