1
1
/* eslint-env jest */
2
2
/* eslint-disable react/no-multi-comp */
3
3
import React from 'react' ;
4
- import { shallow , mount } from 'enzyme' ;
4
+ import Enzyme , { shallow , mount } from 'enzyme' ;
5
+ import Adapter from 'enzyme-adapter-react-15' ;
5
6
import renderer from 'react-test-renderer' ;
6
7
import Tab from '../Tab' ;
7
8
import TabList from '../TabList' ;
@@ -10,6 +11,8 @@ import Tabs from '../Tabs';
10
11
import { reset as resetIdCounter } from '../../helpers/uuid' ;
11
12
import { TabListWrapper , TabWrapper , TabPanelWrapper } from './helpers/higherOrder' ;
12
13
14
+ Enzyme . configure ( { adapter : new Adapter ( ) } ) ;
15
+
13
16
function expectToMatchSnapshot ( component ) {
14
17
expect ( renderer . create ( component ) . toJSON ( ) ) . toMatchSnapshot ( ) ;
15
18
}
@@ -34,8 +37,8 @@ function createTabs(props = {}) {
34
37
}
35
38
36
39
function assertTabSelected ( wrapper , index ) {
37
- const tab = wrapper . childAt ( 0 ) . childAt ( index ) ;
38
- const panel = wrapper . childAt ( index + 1 ) ;
40
+ const tab = wrapper . find ( Tab ) . at ( index ) ;
41
+ const panel = wrapper . find ( TabPanel ) . at ( index ) ;
39
42
40
43
expect ( tab . prop ( 'selected' ) ) . toBe ( true ) ;
41
44
expect ( panel . prop ( 'selected' ) ) . toBe ( true ) ;
@@ -76,8 +79,8 @@ describe('<Tabs />', () => {
76
79
) ;
77
80
78
81
wrapper
79
- . childAt ( 0 )
80
- . childAt ( 1 )
82
+ . find ( Tab )
83
+ . at ( 1 )
81
84
. simulate ( 'click' ) ;
82
85
83
86
expect ( called . index ) . toBe ( 1 ) ;
@@ -103,60 +106,61 @@ describe('<Tabs />', () => {
103
106
test ( 'should update selectedIndex when clicked' , ( ) => {
104
107
const wrapper = mount ( createTabs ( ) ) ;
105
108
wrapper
106
- . childAt ( 0 )
107
- . childAt ( 1 )
109
+ . find ( Tab )
110
+ . at ( 1 )
108
111
. simulate ( 'click' ) ;
109
112
110
113
assertTabSelected ( wrapper , 1 ) ;
111
114
} ) ;
112
115
113
116
test ( 'should update selectedIndex when tab child is clicked' , ( ) => {
114
117
const wrapper = mount ( createTabs ( ) ) ;
115
- const tablist = wrapper . childAt ( 0 ) ;
116
- tablist
117
- . childAt ( 2 )
118
- . first ( )
118
+ wrapper
119
+ . find ( Tab )
120
+ . at ( 2 )
121
+ . childAt ( 0 )
119
122
. simulate ( 'click' ) ;
120
123
121
124
assertTabSelected ( wrapper , 2 ) ;
122
125
} ) ;
123
126
124
127
test ( 'should not change selectedIndex when clicking a disabled tab' , ( ) => {
125
128
const wrapper = mount ( createTabs ( { defaultIndex : 0 } ) ) ;
126
-
127
129
wrapper
128
- . childAt ( 0 )
129
- . childAt ( 3 )
130
+ . find ( Tab )
131
+ . at ( 3 )
130
132
. simulate ( 'click' ) ;
133
+
131
134
assertTabSelected ( wrapper , 0 ) ;
132
135
} ) ;
133
136
} ) ;
134
137
135
138
describe ( 'performance' , ( ) => {
136
139
test ( 'should only render the selected tab panel' , ( ) => {
137
140
const wrapper = mount ( createTabs ( ) ) ;
141
+ const tabPanels = wrapper . find ( TabPanel ) ;
138
142
139
- expect ( wrapper . childAt ( 1 ) . text ( ) ) . toBe ( 'Hello Foo' ) ;
140
- expect ( wrapper . childAt ( 2 ) . text ( ) ) . toBe ( '' ) ;
141
- expect ( wrapper . childAt ( 3 ) . text ( ) ) . toBe ( '' ) ;
143
+ expect ( tabPanels . at ( 0 ) . text ( ) ) . toBe ( 'Hello Foo' ) ;
144
+ expect ( tabPanels . at ( 1 ) . text ( ) ) . toBe ( '' ) ;
145
+ expect ( tabPanels . at ( 2 ) . text ( ) ) . toBe ( '' ) ;
142
146
143
147
wrapper
144
- . childAt ( 0 )
145
- . childAt ( 1 )
148
+ . find ( Tab )
149
+ . at ( 1 )
146
150
. simulate ( 'click' ) ;
147
151
148
- expect ( wrapper . childAt ( 1 ) . text ( ) ) . toBe ( '' ) ;
149
- expect ( wrapper . childAt ( 2 ) . text ( ) ) . toBe ( 'Hello Bar' ) ;
150
- expect ( wrapper . childAt ( 3 ) . text ( ) ) . toBe ( '' ) ;
152
+ expect ( tabPanels . at ( 0 ) . text ( ) ) . toBe ( '' ) ;
153
+ expect ( tabPanels . at ( 1 ) . text ( ) ) . toBe ( 'Hello Bar' ) ;
154
+ expect ( tabPanels . at ( 2 ) . text ( ) ) . toBe ( '' ) ;
151
155
152
156
wrapper
153
- . childAt ( 0 )
154
- . childAt ( 2 )
157
+ . find ( Tab )
158
+ . at ( 2 )
155
159
. simulate ( 'click' ) ;
156
160
157
- expect ( wrapper . childAt ( 1 ) . text ( ) ) . toBe ( '' ) ;
158
- expect ( wrapper . childAt ( 2 ) . text ( ) ) . toBe ( '' ) ;
159
- expect ( wrapper . childAt ( 3 ) . text ( ) ) . toBe ( 'Hello Baz' ) ;
161
+ expect ( tabPanels . at ( 0 ) . text ( ) ) . toBe ( '' ) ;
162
+ expect ( tabPanels . at ( 1 ) . text ( ) ) . toBe ( '' ) ;
163
+ expect ( tabPanels . at ( 2 ) . text ( ) ) . toBe ( 'Hello Baz' ) ;
160
164
} ) ;
161
165
162
166
test ( 'should render all tabs if forceRenderTabPanel is true' , ( ) => {
@@ -363,15 +367,14 @@ describe('<Tabs />', () => {
363
367
</ Tabs > ,
364
368
) ;
365
369
366
- const innerTabs = wrapper . childAt ( 1 ) . childAt ( 0 ) ;
367
-
368
- innerTabs
369
- . childAt ( 0 )
370
- . childAt ( 1 )
370
+ wrapper
371
+ . find ( 'Tabs.second' )
372
+ . find ( Tab )
373
+ . at ( 1 )
371
374
. simulate ( 'click' ) ;
372
375
373
376
assertTabSelected ( wrapper , 0 ) ;
374
- assertTabSelected ( innerTabs , 1 ) ;
377
+ assertTabSelected ( wrapper . find ( 'Tabs.second' ) , 1 ) ;
375
378
} ) ;
376
379
377
380
test ( 'should allow other DOM nodes' , ( ) => {
@@ -410,14 +413,14 @@ describe('<Tabs />', () => {
410
413
assertTabSelected ( wrapper , 0 ) ;
411
414
412
415
wrapper
413
- . childAt ( 0 )
414
- . childAt ( 1 )
416
+ . find ( Tab )
417
+ . at ( 1 )
415
418
. simulate ( 'click' ) ;
416
419
assertTabSelected ( wrapper , 0 ) ;
417
420
418
421
wrapper
419
- . childAt ( 0 )
420
- . childAt ( 2 )
422
+ . find ( Tab )
423
+ . at ( 2 )
421
424
. simulate ( 'click' ) ;
422
425
assertTabSelected ( wrapper , 0 ) ;
423
426
} ) ;
@@ -435,8 +438,8 @@ describe('<Tabs />', () => {
435
438
assertTabSelected ( wrapper , 0 ) ;
436
439
437
440
wrapper
438
- . childAt ( 0 )
439
- . childAt ( 1 )
441
+ . find ( Tab )
442
+ . at ( 1 )
440
443
. simulate ( 'click' ) ;
441
444
assertTabSelected ( wrapper , 1 ) ;
442
445
expect ( wasClicked ) . toBe ( true ) ;
@@ -455,8 +458,8 @@ describe('<Tabs />', () => {
455
458
assertTabSelected ( wrapper , 0 ) ;
456
459
457
460
wrapper
458
- . childAt ( 0 )
459
- . childAt ( 0 )
461
+ . find ( Tab )
462
+ . at ( 0 )
460
463
. simulate ( 'click' ) ;
461
464
assertTabSelected ( wrapper , 0 ) ;
462
465
expect ( wasClicked ) . toBe ( true ) ;
@@ -473,14 +476,14 @@ describe('<Tabs />', () => {
473
476
const wrapper = mount ( < Wrap /> ) ;
474
477
475
478
wrapper
476
- . childAt ( 0 )
477
- . childAt ( 1 )
479
+ . find ( Tab )
480
+ . at ( 1 )
478
481
. simulate ( 'click' ) ;
479
482
assertTabSelected ( wrapper , 1 ) ;
480
483
481
484
wrapper
482
- . childAt ( 0 )
483
- . childAt ( 2 )
485
+ . find ( Tab )
486
+ . at ( 2 )
484
487
. simulate ( 'click' ) ;
485
488
assertTabSelected ( wrapper , 2 ) ;
486
489
} ) ;
0 commit comments