/
examples.js
109 lines (98 loc) · 4.58 KB
/
examples.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import PropTypes from 'prop-types';
import PropTypesMatcher from '../index';
describe('examples', () => {
beforeEach(() => jasmine.addMatchers(PropTypesMatcher));
describe('toBePropType', () => {
describe('primitve checking', () => {
it('PropType.string', () => {
const str = 'hello world';
expect(str).toBePropType(PropTypes.string);
expect(str).not.toBePropType(PropTypes.number);
expect(str).not.toBePropType(PropTypes.array);
expect(str).not.toBePropType(PropTypes.object);
expect(str).not.toBePropType(PropTypes.bool);
expect(str).not.toBePropType(PropTypes.symbol);
});
it('PropType.array', () => {
expect([]).toBePropType(PropTypes.array);
expect([]).not.toBePropType(PropTypes.number);
expect([]).not.toBePropType(PropTypes.string);
expect([]).not.toBePropType(PropTypes.object);
expect([]).not.toBePropType(PropTypes.bool);
expect([]).not.toBePropType(PropTypes.symbol);
});
it('PropType.number', () => {
expect(100).toBePropType(PropTypes.number);
expect(100).not.toBePropType(PropTypes.array);
expect(100).not.toBePropType(PropTypes.string);
expect(100).not.toBePropType(PropTypes.object);
expect(100).not.toBePropType(PropTypes.bool);
expect(100).not.toBePropType(PropTypes.symbol);
});
it('PropType.object', () => {
expect({}).toBePropType(PropTypes.object);
expect({}).not.toBePropType(PropTypes.number);
expect({}).not.toBePropType(PropTypes.string);
expect({}).not.toBePropType(PropTypes.array);
expect({}).not.toBePropType(PropTypes.bool);
expect({}).not.toBePropType(PropTypes.symbol);
});
it('PropType.bool', () => {
[true, false].forEach((bool) => {
expect(bool).toBePropType(PropTypes.bool);
expect(bool).not.toBePropType(PropTypes.number);
expect(bool).not.toBePropType(PropTypes.string);
expect(bool).not.toBePropType(PropTypes.array);
expect(bool).not.toBePropType(PropTypes.object);
expect(bool).not.toBePropType(PropTypes.symbol);
});
});
it('PropType.symbol', () => {
expect(Symbol()).toBePropType(PropTypes.symbol);
expect(Symbol()).not.toBePropType(PropTypes.number);
expect(Symbol()).not.toBePropType(PropTypes.string);
expect(Symbol()).not.toBePropType(PropTypes.array);
expect(Symbol()).not.toBePropType(PropTypes.bool);
expect(Symbol()).not.toBePropType(PropTypes.object);
});
});
it('arrayOf', () => {
const arrayOfNumbers = PropTypes.arrayOf(PropTypes.number);
expect([0,1,2,3,4,5]).toBePropType(arrayOfNumbers);
expect(['0', '1', '2', '3', '4', '5']).not.toBePropType(arrayOfNumbers);
});
it('objectOf', () => {
const objectOfStrings = PropTypes.objectOf(PropTypes.string);
expect({ 0: 'hello', 1: 'world' }).toBePropType(objectOfStrings);
expect({ 0: 2, 1: 'hello' }).not.toBePropType(objectOfStrings);
});
it('shape', () => {
const shapePropType = PropTypes.shape({
id: PropTypes.string.isRequired,
count: PropTypes.number,
});
expect({ id: '0987', count: 123 }).toBePropType(shapePropType);
expect({ count: 123 }).not.toBePropType(shapePropType);
expect({ id: '0987', count: [] }).not.toBePropType(shapePropType);
});
});
describe('toBeValidPropTypes', () => {
it('checking props against propTypes', () => {
const props = {
id: '0987',
count: 30,
children: ['312312', '323432'],
tag: Symbol('test'),
isLive: true,
data: {},
};
const propTypes = {
id: PropTypes.string.isRequired,
count: PropTypes.number,
children: PropTypes.arrayOf(PropTypes.string),
tag: PropTypes.symbol,
isLive: PropTypes.bool,
};
});
});
});