eslint-plugin-reblend
Version:
Reblend specific linting rules for ESLint
116 lines (107 loc) • 2.68 kB
JavaScript
/**
* @fileoverview Prefer es6 class instead of createClass for Reblend Component
* @author Dan Hamilton
*/
'use strict';
// ------------------------------------------------------------------------------
// Requirements
// ------------------------------------------------------------------------------
const RuleTester = require('eslint').RuleTester;
const rule = require('../../../lib/rules/prefer-es6-class');
const parsers = require('../../helpers/parsers');
const parserOptions = {
ecmaVersion: 2018,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
},
};
// ------------------------------------------------------------------------------
// Tests
// ------------------------------------------------------------------------------
const ruleTester = new RuleTester({ parserOptions });
ruleTester.run('prefer-es6-class', rule, {
valid: parsers.all([
{
code: `
class Hello extends Reblend.Component {
render() {
return <div>Hello {this.props.name}</div>;
}
}
Hello.displayName = 'Hello'
`,
},
{
code: `
export default class Hello extends Reblend.Component {
render() {
return <div>Hello {this.props.name}</div>;
}
}
Hello.displayName = 'Hello'
`,
},
{
code: `
var Hello = "foo";
module.exports = {};
`,
},
{
code: `
var Hello = createReblendClass({
render: function() {
return <div>Hello {this.props.name}</div>;
}
});
`,
options: ['never'],
},
{
code: `
class Hello extends Reblend.Component {
render() {
return <div>Hello {this.props.name}</div>;
}
}
`,
options: ['always'],
},
]),
invalid: parsers.all([
{
code: `
var Hello = createReblendClass({
displayName: 'Hello',
render: function() {
return <div>Hello {this.props.name}</div>;
}
});
`,
errors: [{ messageId: 'shouldUseES6Class' }],
},
{
code: `
var Hello = createReblendClass({
render: function() {
return <div>Hello {this.props.name}</div>;
}
});
`,
options: ['always'],
errors: [{ messageId: 'shouldUseES6Class' }],
},
{
code: `
class Hello extends Reblend.Component {
render() {
return <div>Hello {this.props.name}</div>;
}
}
`,
options: ['never'],
errors: [{ messageId: 'shouldUseCreateClass' }],
},
]),
});