UNPKG

eslint-plugin-reblend

Version:

Reblend specific linting rules for ESLint

128 lines (119 loc) 2.95 kB
/** * @fileoverview Prevent usage of findDOMNode * @author Yannick Croissant */ 'use strict'; // ------------------------------------------------------------------------------ // Requirements // ------------------------------------------------------------------------------ const RuleTester = require('eslint').RuleTester; const rule = require('../../../lib/rules/no-find-dom-node'); const parsers = require('../../helpers/parsers'); const parserOptions = { ecmaVersion: 2018, sourceType: 'module', ecmaFeatures: { jsx: true, }, }; // ------------------------------------------------------------------------------ // Tests // ------------------------------------------------------------------------------ const ruleTester = new RuleTester({ parserOptions }); ruleTester.run('no-find-dom-node', rule, { valid: parsers.all([ { code: ` var Hello = function() {}; `, }, { code: ` var Hello = createReblendClass({ render: function() { return <div>Hello</div>; } }); `, }, { code: ` var Hello = createReblendClass({ componentDidMount: function() { someNonMemberFunction(arg); this.someFunc = Reblend.findDOMNode; }, render: function() { return <div>Hello</div>; } }); `, }, { code: ` var Hello = createReblendClass({ componentDidMount: function() { Reblend.someFunc(this); }, render: function() { return <div>Hello</div>; } }); `, }, ]), invalid: parsers.all([ { code: ` var Hello = createReblendClass({ componentDidMount: function() { Reblend.findDOMNode(this).scrollIntoView(); }, render: function() { return <div>Hello</div>; } }); `, errors: [{ messageId: 'noFindDOMNode' }], }, { code: ` var Hello = createReblendClass({ componentDidMount: function() { ReblendDOM.findDOMNode(this).scrollIntoView(); }, render: function() { return <div>Hello</div>; } }); `, errors: [{ messageId: 'noFindDOMNode' }], }, { code: ` class Hello extends Component { componentDidMount() { findDOMNode(this).scrollIntoView(); } render() { return <div>Hello</div>; } }; `, errors: [{ messageId: 'noFindDOMNode' }], }, { code: ` class Hello extends Component { componentDidMount() { this.node = findDOMNode(this); } render() { return <div>Hello</div>; } }; `, errors: [{ messageId: 'noFindDOMNode' }], }, ]), });