123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- /**
- * @fileoverview Tests for no-redundant-should-component-update
- */
- 'use strict';
- // -----------------------------------------------------------------------------
- // Requirements
- // -----------------------------------------------------------------------------
- const rule = require('../../../lib/rules/no-redundant-should-component-update');
- const RuleTester = require('eslint').RuleTester;
- const parserOptions = {
- ecmaVersion: 2018,
- ecmaFeatures: {
- jsx: true
- }
- };
- function errorMessage(node) {
- return `${node} does not need shouldComponentUpdate when extending React.PureComponent.`;
- }
- // -----------------------------------------------------------------------------
- // Tests
- // -----------------------------------------------------------------------------
- const ruleTester = new RuleTester();
- ruleTester.run('no-redundant-should-component-update', rule, {
- valid: [
- {
- code: `
- class Foo extends React.Component {
- shouldComponentUpdate() {
- return true;
- }
- }
- `,
- parserOptions: parserOptions
- },
- {
- code: `
- class Foo extends React.Component {
- shouldComponentUpdate = () => {
- return true;
- }
- }
- `,
- parser: 'babel-eslint',
- parserOptions: parserOptions
- },
- {
- code: `
- class Foo extends React.Component {
- shouldComponentUpdate() {
- return true;
- }
- }
- `,
- parserOptions: parserOptions
- },
- {
- code: `
- function Foo() {
- return class Bar extends React.Component {
- shouldComponentUpdate() {
- return true;
- }
- };
- }
- `,
- parserOptions: parserOptions
- }
- ],
- invalid: [
- {
- code: `
- class Foo extends React.PureComponent {
- shouldComponentUpdate() {
- return true;
- }
- }
- `,
- errors: [{message: errorMessage('Foo')}],
- parserOptions: parserOptions
- },
- {
- code: `
- class Foo extends PureComponent {
- shouldComponentUpdate() {
- return true;
- }
- }
- `,
- errors: [{message: errorMessage('Foo')}],
- parserOptions: parserOptions
- },
- {
- code: `
- class Foo extends React.PureComponent {
- shouldComponentUpdate = () => {
- return true;
- }
- }
- `,
- errors: [{message: errorMessage('Foo')}],
- parser: 'babel-eslint',
- parserOptions: parserOptions
- },
- {
- code: `
- function Foo() {
- return class Bar extends React.PureComponent {
- shouldComponentUpdate() {
- return true;
- }
- };
- }
- `,
- errors: [{message: errorMessage('Bar')}],
- parserOptions: parserOptions
- },
- {
- code: `
- function Foo() {
- return class Bar extends PureComponent {
- shouldComponentUpdate() {
- return true;
- }
- };
- }
- `,
- errors: [{message: errorMessage('Bar')}],
- parserOptions: parserOptions
- },
- {
- code: `
- var Foo = class extends PureComponent {
- shouldComponentUpdate() {
- return true;
- }
- }
- `,
- errors: [{message: errorMessage('Foo')}],
- parserOptions: parserOptions
- }
- ]
- });
|