eslint-plugin/tests/lib/rules/no-package-imports.js

90 lines
2.6 KiB
JavaScript

/**
* @fileoverview Fix relative and absolute imports to invalid locations
* @author @gosticks
*/
"use strict";
//------------------------------------------------------------------------------
// Requirements
//------------------------------------------------------------------------------
var rule = require("../../../lib/rules/no-package-imports"),
RuleTester = require("eslint").RuleTester;
//------------------------------------------------------------------------------
// Tests
//------------------------------------------------------------------------------
const incorrectImport = { messageId: "incorrectImport" };
const options = [
{
options: [
{
invalidPrefix: "packages",
invalidSuffix: "src",
monorepoRoot: "@monorepo",
},
],
},
];
var ruleTester = new RuleTester();
ruleTester.run("no-package-imports", rule, {
valid: [
{
code: 'import Button from "@monorepo/components/Button"',
parserOptions: { ecmaVersion: 6, sourceType: "module" },
options,
},
],
invalid: [
{
code: 'import { Button } from "../../packages/components/src/Button"',
output: 'import { Button } from "@monorepo/components/Button"',
parserOptions: { ecmaVersion: 6, sourceType: "module" },
options,
errors: [incorrectImport],
},
{
code:
'import { Button } from "../../packages/components-combined/src/Button"',
output: 'import { Button } from "@monorepo/components-combined/Button"',
parserOptions: { ecmaVersion: 6, sourceType: "module" },
options,
errors: [incorrectImport],
},
{
code: 'import Button from "../../packages/components/src/Button"',
output: 'import Button from "@testprefix/components/somepath/Button"',
parserOptions: { ecmaVersion: 6, sourceType: "module" },
options: [
{
options: [
{
invalidPrefix: "packages",
invalidSuffix: "src",
template: "@testprefix/$1/somepath$2",
},
],
},
],
errors: [incorrectImport],
},
{
code: 'import Button from "../../../packages/components/src/Button"',
output: 'import Button from "@monorepo/components/Button"',
parserOptions: { ecmaVersion: 6, sourceType: "module" },
options,
errors: [incorrectImport],
},
{
code: 'import Button from "packages/components/src/Button"',
output: 'import Button from "@monorepo/components/Button"',
parserOptions: { ecmaVersion: 6, sourceType: "module" },
options,
errors: [incorrectImport],
},
],
});