Path: blob/main/tests/src/rules/no-anonymous-default-export.js
829 views
import { test, SYNTAX_CASES } from '../utils';12import { RuleTester } from 'eslint';34const ruleTester = new RuleTester();5const rule = require('rules/no-anonymous-default-export');67ruleTester.run('no-anonymous-default-export', rule, {8valid: [9// Exports with identifiers are valid10test({ code: 'const foo = 123\nexport default foo' }),11test({ code: 'export default function foo() {}' }),12test({ code: 'export default class MyClass {}' }),1314// Allow each forbidden type with appropriate option15test({ code: 'export default []', options: [{ allowArray: true }] }),16test({ code: 'export default () => {}', options: [{ allowArrowFunction: true }] }),17test({ code: 'export default class {}', options: [{ allowAnonymousClass: true }] }),18test({ code: 'export default function() {}', options: [{ allowAnonymousFunction: true }] }),19test({ code: 'export default 123', options: [{ allowLiteral: true }] }),20test({ code: 'export default \'foo\'', options: [{ allowLiteral: true }] }),21test({ code: 'export default `foo`', options: [{ allowLiteral: true }] }),22test({ code: 'export default {}', options: [{ allowObject: true }] }),23test({ code: 'export default foo(bar)', options: [{ allowCallExpression: true }] }),2425// Allow forbidden types with multiple options26test({ code: 'export default 123', options: [{ allowLiteral: true, allowObject: true }] }),27test({ code: 'export default {}', options: [{ allowLiteral: true, allowObject: true }] }),2829// Sanity check unrelated export syntaxes30test({ code: 'export * from \'foo\'' }),31test({ code: 'const foo = 123\nexport { foo }' }),32test({ code: 'const foo = 123\nexport { foo as default }' }),3334// Allow call expressions by default for backwards compatibility35test({ code: 'export default foo(bar)' }),3637...SYNTAX_CASES,38],3940invalid: [41test({ code: 'export default []', errors: [{ message: 'Assign array to a variable before exporting as module default' }] }),42test({ code: 'export default () => {}', errors: [{ message: 'Assign arrow function to a variable before exporting as module default' }] }),43test({ code: 'export default class {}', errors: [{ message: 'Unexpected default export of anonymous class' }] }),44test({ code: 'export default function() {}', errors: [{ message: 'Unexpected default export of anonymous function' }] }),45test({ code: 'export default 123', errors: [{ message: 'Assign literal to a variable before exporting as module default' }] }),46test({ code: 'export default \'foo\'', errors: [{ message: 'Assign literal to a variable before exporting as module default' }] }),47test({ code: 'export default `foo`', errors: [{ message: 'Assign literal to a variable before exporting as module default' }] }),48test({ code: 'export default {}', errors: [{ message: 'Assign object to a variable before exporting as module default' }] }),49test({ code: 'export default foo(bar)', options: [{ allowCallExpression: false }], errors: [{ message: 'Assign call result to a variable before exporting as module default' }] }),5051// Test failure with non-covering exception52test({ code: 'export default 123', options: [{ allowObject: true }], errors: [{ message: 'Assign literal to a variable before exporting as module default' }] }),53],54});555657