eslint-plugin-reblend
Version:
Reblend specific linting rules for ESLint
128 lines (119 loc) • 2.95 kB
JavaScript
/**
* @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' }],
},
]),
});