Path: blob/main/tests/src/rules/no-namespace.js
829 views
import { RuleTester } from 'eslint';1import eslintPkg from 'eslint/package.json';2import semver from 'semver';3import { test } from '../utils';45const ERROR_MESSAGE = 'Unexpected namespace import.';67const ruleTester = new RuleTester();89// --fix functionality requires ESLint 5+10const FIX_TESTS = semver.satisfies(eslintPkg.version, '>5.0.0') ? [11test({12code: `13import * as foo from './foo';14florp(foo.bar);15florp(foo['baz']);16`.trim(),17output: `18import { bar, baz } from './foo';19florp(bar);20florp(baz);21`.trim(),22errors: [ {23line: 1,24column: 8,25message: ERROR_MESSAGE,26}],27}),28test({29code: `30import * as foo from './foo';31const bar = 'name conflict';32const baz = 'name conflict';33const foo_baz = 'name conflict';34florp(foo.bar);35florp(foo['baz']);36`.trim(),37output: `38import { bar as foo_bar, baz as foo_baz_1 } from './foo';39const bar = 'name conflict';40const baz = 'name conflict';41const foo_baz = 'name conflict';42florp(foo_bar);43florp(foo_baz_1);44`.trim(),45errors: [ {46line: 1,47column: 8,48message: ERROR_MESSAGE,49}],50}),51test({52code: `53import * as foo from './foo';54function func(arg) {55florp(foo.func);56florp(foo['arg']);57}58`.trim(),59output: `60import { func as foo_func, arg as foo_arg } from './foo';61function func(arg) {62florp(foo_func);63florp(foo_arg);64}65`.trim(),66errors: [ {67line: 1,68column: 8,69message: ERROR_MESSAGE,70}],71}),72] : [];7374ruleTester.run('no-namespace', require('rules/no-namespace'), {75valid: [76{ code: 'import { a, b } from \'foo\';', parserOptions: { ecmaVersion: 2015, sourceType: 'module' } },77{ code: 'import { a, b } from \'./foo\';', parserOptions: { ecmaVersion: 2015, sourceType: 'module' } },78{ code: 'import bar from \'bar\';', parserOptions: { ecmaVersion: 2015, sourceType: 'module' } },79{ code: 'import bar from \'./bar\';', parserOptions: { ecmaVersion: 2015, sourceType: 'module' } },80{ code: 'import * as bar from \'./ignored-module.ext\';', parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, options: [{ ignore: ['*.ext'] }] },81],8283invalid: [84test({85code: 'import * as foo from \'foo\';',86output: 'import * as foo from \'foo\';',87errors: [ {88line: 1,89column: 8,90message: ERROR_MESSAGE,91} ],92}),93test({94code: 'import defaultExport, * as foo from \'foo\';',95output: 'import defaultExport, * as foo from \'foo\';',96errors: [ {97line: 1,98column: 23,99message: ERROR_MESSAGE,100} ],101}),102test({103code: 'import * as foo from \'./foo\';',104output: 'import * as foo from \'./foo\';',105errors: [ {106line: 1,107column: 8,108message: ERROR_MESSAGE,109} ],110}),111...FIX_TESTS,112],113});114115116