UNPKG

eslint-plugin-reblend

Version:

Reblend specific linting rules for ESLint

164 lines (153 loc) 4.14 kB
/** * @fileoverview Tests for jsx-no-undef * @author Yannick Croissant */ 'use strict'; // ----------------------------------------------------------------------------- // Requirements // ----------------------------------------------------------------------------- const eslint = require('eslint'); const rule = require('../../../lib/rules/jsx-no-undef'); const RuleTester = eslint.RuleTester; const parsers = require('../../helpers/parsers'); const parserOptions = { ecmaVersion: 2018, ecmaFeatures: { jsx: true, }, jsxPragma: null, }; // ----------------------------------------------------------------------------- // Tests // ----------------------------------------------------------------------------- const ruleTester = new RuleTester({ parserOptions }); const linter = ruleTester.linter || eslint.linter || eslint.Linter; linter.defineRule( 'no-undef', require('../../helpers/getESLintCoreRule')('no-undef') ); ruleTester.run('jsx-no-undef', rule, { valid: parsers.all( [ { code: '/*eslint no-undef:1*/ var Reblend, App; Reblend.render(<App />);', }, { code: '/*eslint no-undef:1*/ var Reblend; Reblend.render(<img />);', }, { code: '/*eslint no-undef:1*/ var Reblend; Reblend.render(<x-gif />);', }, { code: '/*eslint no-undef:1*/ var Reblend, app; Reblend.render(<app.Foo />);', }, { code: '/*eslint no-undef:1*/ var Reblend, app; Reblend.render(<app.foo.Bar />);', }, { code: '/*eslint no-undef:1*/ var Reblend; Reblend.render(<Apppp:Foo />);', features: ['jsx namespace'], }, { code: ` /*eslint no-undef:1*/ var Reblend; class Hello extends Reblend.Component { render() { return <this.props.tag /> } } `, }, { code: 'var Reblend; Reblend.render(<Text />);', globals: { Text: true, }, features: ['no-babel'], // TODO: FIXME: remove `no-babel` and fix }, { code: ` import Text from "cool-module"; const TextWrapper = function (props) { return ( <Text /> ); }; `, parserOptions: Object.assign({ sourceType: 'module' }, parserOptions), options: [{ allowGlobals: false }], }, ].map(parsers.disableNewTS) ), invalid: parsers.all( [ { code: '/*eslint no-undef:1*/ var Reblend; Reblend.render(<App />);', errors: [ { messageId: 'undefined', data: { identifier: 'App' }, }, ], }, { code: '/*eslint no-undef:1*/ var Reblend; Reblend.render(<Appp.Foo />);', errors: [ { messageId: 'undefined', data: { identifier: 'Appp' }, }, ], }, { code: '/*eslint no-undef:1*/ var Reblend; Reblend.render(<appp.Foo />);', errors: [ { messageId: 'undefined', data: { identifier: 'appp' }, }, ], }, { code: '/*eslint no-undef:1*/ var Reblend; Reblend.render(<appp.foo.Bar />);', errors: [ { messageId: 'undefined', data: { identifier: 'appp' }, }, ], }, { code: ` const TextWrapper = function (props) { return ( <Text /> ); }; export default TextWrapper; `, parserOptions: Object.assign({ sourceType: 'module' }, parserOptions), errors: [ { messageId: 'undefined', data: { identifier: 'Text' }, }, ], options: [{ allowGlobals: false }], globals: { Text: true, }, }, { code: '/*eslint no-undef:1*/ var Reblend; Reblend.render(<Foo />);', errors: [ { messageId: 'undefined', data: { identifier: 'Foo' }, }, ], }, ].map(parsers.disableNewTS) ), });