diff --git a/tests/lib/rules/require-default-props.js b/tests/lib/rules/require-default-props.js index 15d08bc244..409f4a6250 100644 --- a/tests/lib/rules/require-default-props.js +++ b/tests/lib/rules/require-default-props.js @@ -187,6 +187,58 @@ ruleTester.run('require-default-props', rule, { ].join('\n'), options: [{forbidDefaultForRequired: true, ignoreFunctionalComponents: true}] }, + { + code: [ + 'export function MyStatelessComponent({ foo, bar }) {', + ' return
{foo}{bar}
;', + '}', + 'MyStatelessComponent.propTypes = {', + ' foo: PropTypes.string,', + ' bar: PropTypes.string.isRequired', + '};' + ].join('\n'), + options: [{ignoreFunctionalComponents: true}], + parser: parsers.BABEL_ESLINT + }, + { + code: [ + 'export function MyStatelessComponent({ foo, bar }) {', + ' return
{foo}{bar}
;', + '}', + 'MyStatelessComponent.propTypes = {', + ' foo: PropTypes.string,', + ' bar: PropTypes.string.isRequired', + '};' + ].join('\n'), + options: [{ignoreFunctionalComponents: true}], + parser: parsers.TYPESCRIPT_ESLINT + }, + { + code: [ + 'export default function MyStatelessComponent({ foo, bar }) {', + ' return
{foo}{bar}
;', + '}', + 'MyStatelessComponent.propTypes = {', + ' foo: PropTypes.string,', + ' bar: PropTypes.string.isRequired', + '};' + ].join('\n'), + options: [{ignoreFunctionalComponents: true}], + parser: parsers.BABEL_ESLINT + }, + { + code: [ + 'export default function MyStatelessComponent({ foo, bar }) {', + ' return
{foo}{bar}
;', + '}', + 'MyStatelessComponent.propTypes = {', + ' foo: PropTypes.string,', + ' bar: PropTypes.string.isRequired', + '};' + ].join('\n'), + options: [{ignoreFunctionalComponents: true}], + parser: parsers.TYPESCRIPT_ESLINT + }, // // stateless components as function expressions @@ -208,6 +260,40 @@ ruleTester.run('require-default-props', rule, { `, options: [{ignoreFunctionalComponents: true}] }, + { + code: ` + import PropTypes from 'prop-types'; + import React from 'react'; + + export const MyComponent = function({ foo, bar }) { + return
{foo}{bar}
; + }; + + MyComponent.propTypes = { + foo: PropTypes.string, + bar: PropTypes.string.isRequired + }; + `, + options: [{ignoreFunctionalComponents: true}], + parser: parsers.BABEL_ESLINT + }, + { + code: ` + import PropTypes from 'prop-types'; + import React from 'react'; + + export const MyComponent = function({ foo, bar }) { + return
{foo}{bar}
; + }; + + MyComponent.propTypes = { + foo: PropTypes.string, + bar: PropTypes.string.isRequired + }; + `, + options: [{ignoreFunctionalComponents: true}], + parser: parsers.TYPESCRIPT_ESLINT + }, // // stateless components as arrow function expressions @@ -229,6 +315,44 @@ ruleTester.run('require-default-props', rule, { `, options: [{ignoreFunctionalComponents: true}] }, + { + code: ` + import PropTypes from 'prop-types'; + import React from 'react'; + + export const MyComponent = ({ foo, bar }) => { + return
{foo}{bar}
; + }; + + MyComponent.propTypes = { + foo: PropTypes.string, + bar: PropTypes.string.isRequired + }; + + export default MyComponent; + `, + options: [{ignoreFunctionalComponents: true}], + parser: parsers.BABEL_ESLINT + }, + { + code: ` + import PropTypes from 'prop-types'; + import React from 'react'; + + export const MyComponent = ({ foo, bar }) => { + return
{foo}{bar}
; + }; + + MyComponent.propTypes = { + foo: PropTypes.string, + bar: PropTypes.string.isRequired + }; + + export default MyComponent; + `, + options: [{ignoreFunctionalComponents: true}], + parser: parsers.TYPESCRIPT_ESLINT + }, // // createReactClass components