Path: blob/main/tests/src/rules/no-default-export.js
829 views
import { test, testVersion } from '../utils';12import { RuleTester } from 'eslint';34const ruleTester = new RuleTester();5const rule = require('rules/no-default-export');67ruleTester.run('no-default-export', rule, {8valid: [9test({10code: `11export const foo = 'foo';12export const bar = 'bar';13`,14}),15test({16code: `17export const foo = 'foo';18export function bar() {};19`,20}),21test({22code: `export const foo = 'foo';`,23}),24test({25code: `26const foo = 'foo';27export { foo };28`,29}),30test({31code: `let foo, bar; export { foo, bar }`,32}),33test({34code: `export const { foo, bar } = item;`,35}),36test({37code: `export const { foo, bar: baz } = item;`,38}),39test({40code: `export const { foo: { bar, baz } } = item;`,41}),42test({43code: `44let item;45export const foo = item;46export { item };47`,48}),49test({50code: `export * from './foo';`,51}),52test({53code: `export const { foo } = { foo: "bar" };`,54}),55test({56code: `export const { foo: { bar } } = { foo: { bar: "baz" } };`,57}),58test({59code: 'export { a, b } from "foo.js"',60parser: require.resolve('babel-eslint'),61}),6263// no exports at all64test({65code: `import * as foo from './foo';`,66}),67test({68code: `import foo from './foo';`,69}),70test({71code: `import {default as foo} from './foo';`,72}),7374test({75code: `export type UserId = number;`,76parser: require.resolve('babel-eslint'),77}),78test({79code: 'export foo from "foo.js"',80parser: require.resolve('babel-eslint'),81}),82test({83code: `export Memory, { MemoryValue } from './Memory'`,84parser: require.resolve('babel-eslint'),85}),86],87invalid: [].concat(88testVersion('> 2', () => ({89code: 'export default function bar() {};',90errors: [91{92type: 'ExportDefaultDeclaration',93message: 'Prefer named exports.',94line: 1,95column: 8,96},97],98})),99testVersion('> 2', () => ({100code: `101export const foo = 'foo';102export default bar;`,103errors: [104{105type: 'ExportDefaultDeclaration',106message: 'Prefer named exports.',107line: 3,108column: 16,109},110],111})),112testVersion('> 2', () => ({113code: 'export default class Bar {};',114errors: [115{116type: 'ExportDefaultDeclaration',117message: 'Prefer named exports.',118line: 1,119column: 8,120},121],122})),123testVersion('> 2', () => ({124code: 'export default function() {};',125errors: [126{127type: 'ExportDefaultDeclaration',128message: 'Prefer named exports.',129line: 1,130column: 8,131},132],133})),134testVersion('> 2', () => ({135code: 'export default class {};',136errors: [137{138type: 'ExportDefaultDeclaration',139message: 'Prefer named exports.',140line: 1,141column: 8,142},143],144})),145test({146code: 'let foo; export { foo as default }',147errors: [148{149type: 'ExportNamedDeclaration',150message: 'Do not alias `foo` as `default`. Just export `foo` itself instead.',151},152],153}),154test({155code: 'export default from "foo.js"',156parser: require.resolve('babel-eslint'),157errors: [158{159type: 'ExportNamedDeclaration',160message: 'Prefer named exports.',161},162],163}),164),165});166167168