73
*/
74
describe('ReactMultiChildText', () => {
75
it('should correctly handle all possible children for render and update', () => {
76
- spyOnDev(console, 'error');
77
- // prettier-ignore
78
- testAllPermutations([
79
- // basic values
80
- undefined, [],
81
- null, [],
82
- false, [],
83
- true, [],
84
- 0, '0',
85
- 1.2, '1.2',
86
- '', '',
87
- 'foo', 'foo',
88
-
89
- [], [],
90
- [undefined], [],
91
- [null], [],
92
- [false], [],
93
- [true], [],
94
- [0], ['0'],
95
- [1.2], ['1.2'],
96
- [''], [''],
97
- ['foo'], ['foo'],
98
- [<div />], [<div />],
99
-
100
- // two adjacent values
101
- [true, 0], ['0'],
102
- [0, 0], ['0', '0'],
103
- [1.2, 0], ['1.2', '0'],
104
- [0, ''], ['0', ''],
105
- ['foo', 0], ['foo', '0'],
106
- [0, <div />], ['0', <div />],
107
-
108
- [true, 1.2], ['1.2'],
109
- [1.2, 0], ['1.2', '0'],
110
- [1.2, 1.2], ['1.2', '1.2'],
111
- [1.2, ''], ['1.2', ''],
112
- ['foo', 1.2], ['foo', '1.2'],
113
- [1.2, <div />], ['1.2', <div />],
114
-
115
- [true, ''], [''],
116
- ['', 0], ['', '0'],
117
- [1.2, ''], ['1.2', ''],
118
- ['', ''], ['', ''],
119
- ['foo', ''], ['foo', ''],
120
- ['', <div />], ['', <div />],
121
-
122
- [true, 'foo'], ['foo'],
123
- ['foo', 0], ['foo', '0'],
124
- [1.2, 'foo'], ['1.2', 'foo'],
125
- ['foo', ''], ['foo', ''],
126
- ['foo', 'foo'], ['foo', 'foo'],
127
- ['foo', <div />], ['foo', <div />],
128
-
129
- // values separated by an element
130
- [true, <div />, true], [<div />],
131
- [1.2, <div />, 1.2], ['1.2', <div />, '1.2'],
132
- ['', <div />, ''], ['', <div />, ''],
133
- ['foo', <div />, 'foo'], ['foo', <div />, 'foo'],
134
-
135
- [true, 1.2, <div />, '', 'foo'], ['1.2', <div />, '', 'foo'],
136
- [1.2, '', <div />, 'foo', true], ['1.2', '', <div />, 'foo'],
137
- ['', 'foo', <div />, true, 1.2], ['', 'foo', <div />, '1.2'],
138
-
139
- [true, 1.2, '', <div />, 'foo', true, 1.2], ['1.2', '', <div />, 'foo', '1.2'],
140
- ['', 'foo', true, <div />, 1.2, '', 'foo'], ['', 'foo', <div />, '1.2', '', 'foo'],
141
-
142
- // values inside arrays
143
- [[true], [true]], [],
144
- [[1.2], [1.2]], ['1.2', '1.2'],
145
- [[''], ['']], ['', ''],
146
- [['foo'], ['foo']], ['foo', 'foo'],
147
- [[<div />], [<div />]], [<div />, <div />],
148
-
149
- [[true, 1.2, <div />], '', 'foo'], ['1.2', <div />, '', 'foo'],
150
- [1.2, '', [<div />, 'foo', true]], ['1.2', '', <div />, 'foo'],
151
- ['', ['foo', <div />, true], 1.2], ['', 'foo', <div />, '1.2'],
152
-
153
- [true, [1.2, '', <div />, 'foo'], true, 1.2], ['1.2', '', <div />, 'foo', '1.2'],
154
- ['', 'foo', [true, <div />, 1.2, ''], 'foo'], ['', 'foo', <div />, '1.2', '', 'foo'],
155
-
156
- // values inside elements
157
- [<div>{true}{1.2}{<div />}</div>, '', 'foo'], [<div />, '', 'foo'],
158
- [1.2, '', <div>{<div />}{'foo'}{true}</div>], ['1.2', '', <div />],
159
- ['', <div>{'foo'}{<div />}{true}</div>, 1.2], ['', <div />, '1.2'],
160
-
161
- [true, <div>{1.2}{''}{<div />}{'foo'}</div>, true, 1.2], [<div />, '1.2'],
162
- ['', 'foo', <div>{true}{<div />}{1.2}{''}</div>, 'foo'], ['', 'foo', <div />, 'foo'],
76
+ expect(() => {
77
+ // prettier-ignore
78
+ testAllPermutations([
79
+ // basic values
80
+ undefined, [],
81
+ null, [],
82
+ false, [],
83
+ true, [],
84
+ 0, '0',
85
+ 1.2, '1.2',
86
+ '', '',
87
+ 'foo', 'foo',
88
+
89
+ [], [],
90
+ [undefined], [],
91
+ [null], [],
92
+ [false], [],
93
+ [true], [],
94
+ [0], ['0'],
95
+ [1.2], ['1.2'],
96
+ [''], [''],
97
+ ['foo'], ['foo'],
98
+ [<div />], [<div />],
99
+
100
+ // two adjacent values
101
+ [true, 0], ['0'],
102
+ [0, 0], ['0', '0'],
103
+ [1.2, 0], ['1.2', '0'],
104
+ [0, ''], ['0', ''],
105
+ ['foo', 0], ['foo', '0'],
106
+ [0, <div />], ['0', <div />],
107
+
108
+ [true, 1.2], ['1.2'],
109
+ [1.2, 0], ['1.2', '0'],
110
+ [1.2, 1.2], ['1.2', '1.2'],
111
+ [1.2, ''], ['1.2', ''],
112
+ ['foo', 1.2], ['foo', '1.2'],
113
+ [1.2, <div />], ['1.2', <div />],
114
+
115
+ [true, ''], [''],
116
+ ['', 0], ['', '0'],
117
+ [1.2, ''], ['1.2', ''],
118
+ ['', ''], ['', ''],
119
+ ['foo', ''], ['foo', ''],
120
+ ['', <div />], ['', <div />],
121
+
122
+ [true, 'foo'], ['foo'],
123
+ ['foo', 0], ['foo', '0'],
124
+ [1.2, 'foo'], ['1.2', 'foo'],
125
+ ['foo', ''], ['foo', ''],
126
+ ['foo', 'foo'], ['foo', 'foo'],
127
+ ['foo', <div />], ['foo', <div />],
128
+
129
+ // values separated by an element
130
+ [true, <div />, true], [<div />],
131
+ [1.2, <div />, 1.2], ['1.2', <div />, '1.2'],
132
+ ['', <div />, ''], ['', <div />, ''],
133
+ ['foo', <div />, 'foo'], ['foo', <div />, 'foo'],
134
+
135
+ [true, 1.2, <div />, '', 'foo'], ['1.2', <div />, '', 'foo'],
136
+ [1.2, '', <div />, 'foo', true], ['1.2', '', <div />, 'foo'],
137
+ ['', 'foo', <div />, true, 1.2], ['', 'foo', <div />, '1.2'],
138
+
139
+ [true, 1.2, '', <div />, 'foo', true, 1.2], ['1.2', '', <div />, 'foo', '1.2'],
140
+ ['', 'foo', true, <div />, 1.2, '', 'foo'], ['', 'foo', <div />, '1.2', '', 'foo'],
141
+
142
+ // values inside arrays
143
+ [[true], [true]], [],
144
+ [[1.2], [1.2]], ['1.2', '1.2'],
145
+ [[''], ['']], ['', ''],
146
+ [['foo'], ['foo']], ['foo', 'foo'],
147
+ [[<div />], [<div />]], [<div />, <div />],
148
+
149
+ [[true, 1.2, <div />], '', 'foo'], ['1.2', <div />, '', 'foo'],
150
+ [1.2, '', [<div />, 'foo', true]], ['1.2', '', <div />, 'foo'],
151
+ ['', ['foo', <div />, true], 1.2], ['', 'foo', <div />, '1.2'],
152
+
153
+ [true, [1.2, '', <div />, 'foo'], true, 1.2], ['1.2', '', <div />, 'foo', '1.2'],
154
+ ['', 'foo', [true, <div />, 1.2, ''], 'foo'], ['', 'foo', <div />, '1.2', '', 'foo'],
155
+
156
+ // values inside elements
157
+ [<div>{true}{1.2}{<div />}</div>, '', 'foo'], [<div />, '', 'foo'],
158
+ [1.2, '', <div>{<div />}{'foo'}{true}</div>], ['1.2', '', <div />],
159
+ ['', <div>{'foo'}{<div />}{true}</div>, 1.2], ['', <div />, '1.2'],
160
+
161
+ [true, <div>{1.2}{''}{<div />}{'foo'}</div>, true, 1.2], [<div />, '1.2'],
162
+ ['', 'foo', <div>{true}{<div />}{1.2}{''}</div>, 'foo'], ['', 'foo', <div />, 'foo'],
163
+ ]);
164
+ }).toWarnDev([
165
+ 'Warning: Each child in an array or iterator should have a unique "key" prop.',
166
+ 'Warning: Each child in an array or iterator should have a unique "key" prop.',
167
]);
164
-
165
- if (__DEV__) {
166
- expect(console.error.calls.count()).toBe(2);
167
- expect(console.error.calls.argsFor(0)[0]).toContain(
168
- 'Warning: Each child in an array or iterator should have a unique "key" prop.',
169
- );
170
- expect(console.error.calls.argsFor(1)[0]).toContain(
171
- 'Warning: Each child in an array or iterator should have a unique "key" prop.',
172
- );
173
- }
168
});
169
170
it('should throw if rendering both HTML and children', () => {