eslint-plugin-file-export-name
Version:
ESLint plugin to enforce matching file names with default export names.
115 lines (113 loc) • 2.96 kB
JavaScript
const { RuleTester } = require("eslint");
const rule = require("../src/index.cjs").rules["match-file-export-name"];
const ruleTester = new RuleTester({
parserOptions: { ecmaVersion: 2015, sourceType: "module" }
});
ruleTester.run("match-file-export-name", rule, {
valid: [
{
code: "export default MyComponent",
filename: "MyComponent.js",
options: [{ cases: ["pascal"] }]
},
{
code: "export default myFunction",
filename: "myFunction.js",
options: [{ cases: ["camel"] }]
},
{
code: "export default my_function",
filename: "my_function.js",
options: [{ cases: ["snake"] }]
},
{
code: "export default myComponent",
filename: "my-component.js",
options: [{ cases: ["camel", "kebab"] }]
},
{
code: "export default Whatever",
filename: "index.js" // index 파일은 무시됨
},
{
code: "export default IgnoreThis",
filename: "special.js",
options: [{ cases: ["pascal"], ignore: ["special\\.js"] }]
},
{
code: "export default CustomName",
filename: "anything.js",
options: [{ pattern: "^Custom.*$" }]
},
{
code: "export default MyTsComponent",
filename: "MyTsComponent.tsx",
options: [{ cases: ["pascal"], extensions: [".tsx"] }]
},
{
code: "export default MyComponent",
filename: "my-component.jsx",
options: [{ cases: ["pascal", "kebab"], extensions: [".jsx"] }]
},
{
code: "export default myFunction",
filename: "my_function.js",
options: [{ cases: ["camel", "snake"] }]
},
{
code: "export default CustomHandler",
filename: "any-name.js",
options: [{ pattern: "^Custom.*$", cases: ["pascal"] }]
}
],
invalid: [
{
code: "export default wrongName",
filename: "rightName.js",
options: [{ cases: ["camel"] }],
errors: [{
messageId: "mismatch",
data: {
exportName: "wrongName",
fileName: "rightName"
}
}]
},
{
code: "export default WrongCase",
filename: "wrong-case.js",
options: [{ cases: ["kebab"] }],
errors: [{
messageId: "mismatch",
data: {
exportName: "WrongCase",
fileName: "wrong-case"
}
}]
},
{
code: "export default wrongComponent",
filename: "WrongComponent.tsx",
options: [{ cases: ["pascal"], extensions: [".tsx"] }],
errors: [{
messageId: "mismatch",
data: {
exportName: "wrongComponent",
fileName: "WrongComponent"
}
}]
},
{
code: "export default NotCustomName",
filename: "anything.js",
options: [{ pattern: "^Custom.*$" }],
errors: [{
messageId: "mismatch",
data: {
exportName: "NotCustomName",
fileName: "anything"
}
}]
}
]
});