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