Path: blob/main/tests/src/rules/exports-last.js
829 views
import { test } from '../utils';12import { RuleTester } from 'eslint';3import rule from 'rules/exports-last';45const ruleTester = new RuleTester();67const error = type => ({8message: 'Export statements should appear at the end of the file',9type,10});1112ruleTester.run('exports-last', rule, {13valid: [14// Empty file15test({16code: '// comment',17}),18test({19// No exports20code: `21const foo = 'bar'22const bar = 'baz'23`,24}),25test({26code: `27const foo = 'bar'28export {foo}29`,30}),31test({32code: `33const foo = 'bar'34export default foo35`,36}),37// Only exports38test({39code: `40export default foo41export const bar = true42`,43}),44test({45code: `46const foo = 'bar'47export default foo48export const bar = true49`,50}),51// Multiline export52test({53code: `54const foo = 'bar'55export default function bar () {56const very = 'multiline'57}58export const baz = true59`,60}),61// Many exports62test({63code: `64const foo = 'bar'65export default foo66export const so = 'many'67export const exports = ':)'68export const i = 'cant'69export const even = 'count'70export const how = 'many'71`,72}),73// Export all74test({75code: `76export * from './foo'77`,78}),79],80invalid: [81// Default export before variable declaration82test({83code: `84export default 'bar'85const bar = true86`,87errors: [error('ExportDefaultDeclaration')],88}),89// Named export before variable declaration90test({91code: `92export const foo = 'bar'93const bar = true94`,95errors: [error('ExportNamedDeclaration')],96}),97// Export all before variable declaration98test({99code: `100export * from './foo'101const bar = true102`,103errors: [error('ExportAllDeclaration')],104}),105// Many exports arround variable declaration106test({107code: `108export default 'such foo many bar'109export const so = 'many'110const foo = 'bar'111export const exports = ':)'112export const i = 'cant'113export const even = 'count'114export const how = 'many'115`,116errors: [117error('ExportDefaultDeclaration'),118error('ExportNamedDeclaration'),119],120}),121],122});123124125