123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- /**
- * @fileoverview Prefer es6 class instead of createClass for React Component
- * @author Dan Hamilton
- */
- 'use strict';
- // ------------------------------------------------------------------------------
- // Requirements
- // ------------------------------------------------------------------------------
- const rule = require('../../../lib/rules/prefer-es6-class');
- const RuleTester = require('eslint').RuleTester;
- const parserOptions = {
- ecmaVersion: 2018,
- sourceType: 'module',
- ecmaFeatures: {
- jsx: true
- }
- };
- require('babel-eslint');
- // ------------------------------------------------------------------------------
- // Tests
- // ------------------------------------------------------------------------------
- const ruleTester = new RuleTester({parserOptions});
- ruleTester.run('prefer-es6-class', rule, {
- valid: [{
- code: `
- class Hello extends React.Component {
- render() {
- return <div>Hello {this.props.name}</div>;
- }
- }
- Hello.displayName = 'Hello'
- `
- }, {
- code: `
- export default class Hello extends React.Component {
- render() {
- return <div>Hello {this.props.name}</div>;
- }
- }
- Hello.displayName = 'Hello'
- `
- }, {
- code: `
- var Hello = "foo";
- module.exports = {};
- `
- }, {
- code: `
- var Hello = createReactClass({
- render: function() {
- return <div>Hello {this.props.name}</div>;
- }
- });
- `,
- options: ['never']
- }, {
- code: `
- class Hello extends React.Component {
- render() {
- return <div>Hello {this.props.name}</div>;
- }
- }
- `,
- options: ['always']
- }],
- invalid: [{
- code: `
- var Hello = createReactClass({
- displayName: 'Hello',
- render: function() {
- return <div>Hello {this.props.name}</div>;
- }
- });
- `,
- errors: [{
- message: 'Component should use es6 class instead of createClass'
- }]
- }, {
- code: `
- var Hello = createReactClass({
- render: function() {
- return <div>Hello {this.props.name}</div>;
- }
- });
- `,
- options: ['always'],
- errors: [{
- message: 'Component should use es6 class instead of createClass'
- }]
- }, {
- code: `
- class Hello extends React.Component {
- render() {
- return <div>Hello {this.props.name}</div>;
- }
- }
- `,
- options: ['never'],
- errors: [{
- message: 'Component should use createClass instead of es6 class'
- }]
- }]
- });
|