Skip to content
This repository has been archived by the owner on Sep 1, 2024. It is now read-only.

Commit

Permalink
[Tests] add additional passing tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ljharb committed Feb 13, 2019
1 parent 32114d3 commit 2ae9e71
Show file tree
Hide file tree
Showing 3 changed files with 138 additions and 0 deletions.
46 changes: 46 additions & 0 deletions __tests__/PropTypesDevelopmentReact15.js
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,12 @@ describe('PropTypesDevelopmentReact15', () => {

it('should warn for missing required values', () => {
typeCheckFailRequiredValues(PropTypes.string.isRequired);
typeCheckFailRequiredValues(PropTypes.array.isRequired);
typeCheckFailRequiredValues(PropTypes.symbol.isRequired);
typeCheckFailRequiredValues(PropTypes.number.isRequired);
typeCheckFailRequiredValues(PropTypes.bool.isRequired);
typeCheckFailRequiredValues(PropTypes.func.isRequired);
typeCheckFailRequiredValues(PropTypes.shape({}).isRequired);
});

it('should warn if called manually in development', () => {
Expand Down Expand Up @@ -803,6 +809,13 @@ describe('PropTypesDevelopmentReact15', () => {
'Invalid prop `testProp.c` of type `string` supplied to `testComponent`, ' +
'expected `number`.',
);

typeCheckFail(
PropTypes.objectOf(PropTypes.number.isRequired),
{a: 1, b: 2, c: undefined},
'Warning: Failed prop type: The prop `testProp.c` is marked as required in `testComponent`, ' +
'but its value is `undefined`.'
);
});

it('should warn with invalid complex types', () => {
Expand All @@ -817,6 +830,13 @@ describe('PropTypesDevelopmentReact15', () => {
name +
'`.',
);

typeCheckFail(
PropTypes.objectOf(PropTypes.instanceOf(Thing).isRequired),
{a: new Thing(), b: undefined},
'Warning: Failed prop type: The prop `testProp.b` is marked as required in `testComponent`, ' +
'but its value is `undefined`.'
);
});

it('should warn when passed something other than an object', () => {
Expand Down Expand Up @@ -949,6 +969,18 @@ describe('PropTypesDevelopmentReact15', () => {
'Invalid prop `testProp` of value `Symbol(green)` supplied to ' +
'`testComponent`, expected one of ["Symbol(red)","Symbol(blue)"].',
);
typeCheckFail(
PropTypes.oneOf([0, 'false']).isRequired,
undefined,
'Warning: Failed prop type: The prop `testProp` is marked as required in `testComponent`, ' +
'but its value is `undefined`.'
);
typeCheckFail(
PropTypes.oneOf([0, 'false']).isRequired,
null,
'Warning: Failed prop type: The prop `testProp` is marked as required in `testComponent`, ' +
'but its value is `null`.'
);
});

it('should not warn for valid values', () => {
Expand Down Expand Up @@ -1115,6 +1147,20 @@ describe('PropTypesDevelopmentReact15', () => {
'The prop `testProp.key` is marked as required in `testComponent`, ' +
'but its value is `undefined`.',
);

typeCheckFail(
PropTypes.shape({key: PropTypes.number.isRequired}),
{key: undefined},
'The prop `testProp.key` is marked as required in `testComponent`, ' +
'but its value is `undefined`.',
);

typeCheckFail(
PropTypes.shape({key: PropTypes.number.isRequired}),
{key: null},
'The prop `testProp.key` is marked as required in `testComponent`, ' +
'but its value is `null`.',
);
});

it('should warn for the first required type', () => {
Expand Down
46 changes: 46 additions & 0 deletions __tests__/PropTypesDevelopmentStandalone-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,12 @@ describe('PropTypesDevelopmentStandalone', () => {

it('should warn for missing required values', () => {
typeCheckFailRequiredValues(PropTypes.string.isRequired);
typeCheckFailRequiredValues(PropTypes.array.isRequired);
typeCheckFailRequiredValues(PropTypes.symbol.isRequired);
typeCheckFailRequiredValues(PropTypes.number.isRequired);
typeCheckFailRequiredValues(PropTypes.bool.isRequired);
typeCheckFailRequiredValues(PropTypes.func.isRequired);
typeCheckFailRequiredValues(PropTypes.shape({}).isRequired);
});

it('should warn if called manually in development', () => {
Expand Down Expand Up @@ -877,6 +883,13 @@ describe('PropTypesDevelopmentStandalone', () => {
'Invalid prop `testProp.c` of type `string` supplied to `testComponent`, ' +
'expected `number`.',
);

typeCheckFail(
PropTypes.objectOf(PropTypes.number.isRequired),
{a: 1, b: 2, c: undefined},
'Warning: Failed prop type: The prop `testProp.c` is marked as required in `testComponent`, ' +
'but its value is `undefined`.'
);
});

it('should warn with invalid complex types', () => {
Expand All @@ -891,6 +904,13 @@ describe('PropTypesDevelopmentStandalone', () => {
name +
'`.',
);

typeCheckFail(
PropTypes.objectOf(PropTypes.instanceOf(Thing).isRequired),
{a: new Thing(), b: undefined},
'Warning: Failed prop type: The prop `testProp.b` is marked as required in `testComponent`, ' +
'but its value is `undefined`.'
);
});

it('should warn when passed something other than an object', () => {
Expand Down Expand Up @@ -1023,6 +1043,18 @@ describe('PropTypesDevelopmentStandalone', () => {
'Invalid prop `testProp` of value `Symbol(green)` supplied to ' +
'`testComponent`, expected one of ["Symbol(red)","Symbol(blue)"].',
);
typeCheckFail(
PropTypes.oneOf([0, 'false']).isRequired,
undefined,
'Warning: Failed prop type: The prop `testProp` is marked as required in `testComponent`, ' +
'but its value is `undefined`.'
);
typeCheckFail(
PropTypes.oneOf([0, 'false']).isRequired,
null,
'Warning: Failed prop type: The prop `testProp` is marked as required in `testComponent`, ' +
'but its value is `null`.'
);
});

it('should not warn for valid values', () => {
Expand Down Expand Up @@ -1189,6 +1221,20 @@ describe('PropTypesDevelopmentStandalone', () => {
'The prop `testProp.key` is marked as required in `testComponent`, ' +
'but its value is `undefined`.',
);

typeCheckFail(
PropTypes.shape({key: PropTypes.number.isRequired}),
{key: undefined},
'The prop `testProp.key` is marked as required in `testComponent`, ' +
'but its value is `undefined`.',
);

typeCheckFail(
PropTypes.shape({key: PropTypes.number.isRequired}),
{key: null},
'The prop `testProp.key` is marked as required in `testComponent`, ' +
'but its value is `null`.',
);
});

it('should warn for the first required type', () => {
Expand Down
46 changes: 46 additions & 0 deletions __tests__/PropTypesProductionReact15-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,12 @@ describe('PropTypesProductionReact15', () => {

it('should warn for missing required values', () => {
expectNoop(PropTypes.string.isRequired);
expectNoop(PropTypes.array.isRequired);
expectNoop(PropTypes.symbol.isRequired);
expectNoop(PropTypes.number.isRequired);
expectNoop(PropTypes.bool.isRequired);
expectNoop(PropTypes.func.isRequired);
expectNoop(PropTypes.shape({}).isRequired);
});

it('should warn if called manually in development', () => {
Expand Down Expand Up @@ -606,6 +612,13 @@ describe('PropTypesProductionReact15', () => {
'Invalid prop `testProp.c` of type `string` supplied to `testComponent`, ' +
'expected `number`.',
);

expectNoop(
PropTypes.objectOf(PropTypes.number.isRequired),
{a: 1, b: 2, c: undefined},
'Warning: Failed prop type: The prop `testProp.c` is marked as required in `testComponent`, ' +
'but its value is `undefined`.'
);
});

it('should warn with invalid complex types', () => {
Expand All @@ -620,6 +633,13 @@ describe('PropTypesProductionReact15', () => {
name +
'`.',
);

expectNoop(
PropTypes.objectOf(PropTypes.instanceOf(Thing).isRequired),
{a: new Thing(), b: undefined},
'Warning: Failed prop type: The prop `testProp.b` is marked as required in `testComponent`, ' +
'but its value is `undefined`.'
);
});

it('should warn when passed something other than an object', () => {
Expand Down Expand Up @@ -734,6 +754,18 @@ describe('PropTypesProductionReact15', () => {
'Invalid prop `testProp` of value `Symbol(green)` supplied to ' +
'`testComponent`, expected one of ["Symbol(red)","Symbol(blue)"].',
);
expectNoop(
PropTypes.oneOf([0, 'false']).isRequired,
undefined,
'Warning: Failed prop type: The prop `testProp` is marked as required in `testComponent`, ' +
'but its value is `undefined`.'
);
expectNoop(
PropTypes.oneOf([0, 'false']).isRequired,
null,
'Warning: Failed prop type: The prop `testProp` is marked as required in `testComponent`, ' +
'but its value is `null`.'
);
});

it('should not warn for valid values', () => {
Expand Down Expand Up @@ -887,6 +919,20 @@ describe('PropTypesProductionReact15', () => {
'The prop `testProp.key` is marked as required in `testComponent`, ' +
'but its value is `undefined`.',
);

expectNoop(
PropTypes.shape({key: PropTypes.number.isRequired}),
{key: undefined},
'The prop `testProp.key` is marked as required in `testComponent`, ' +
'but its value is `undefined`.',
);

expectNoop(
PropTypes.shape({key: PropTypes.number.isRequired}),
{key: null},
'The prop `testProp.key` is marked as required in `testComponent`, ' +
'but its value is `null`.',
);
});

it('should warn for the first required type', () => {
Expand Down

0 comments on commit 2ae9e71

Please sign in to comment.