1
1
import React from 'react' ;
2
+ import { act } from 'react-dom/test-utils' ;
2
3
import Overflow from '../src' ;
3
4
import { mount } from './wrapper' ;
4
5
@@ -39,17 +40,27 @@ describe('Overflow.Responsive', () => {
39
40
wrapper . initSize ( 100 , 20 ) ; // [0][1][2][3][4][+2](5)(6)
40
41
expect ( wrapper . findItems ( ) ) . toHaveLength ( 6 ) ;
41
42
[ true , true , true , true , false , false ] . forEach ( ( display , i ) => {
42
- expect (
43
- wrapper
44
- . findItems ( )
45
- . at ( i )
46
- . props ( ) . display ,
47
- ) . toBe ( display ) ;
43
+ expect ( wrapper . findItems ( ) . at ( i ) . props ( ) . display ) . toBe ( display ) ;
48
44
} ) ;
49
45
expect ( wrapper . findRest ( ) ) . toHaveLength ( 1 ) ;
50
46
expect ( wrapper . findRest ( ) . text ( ) ) . toEqual ( '+ 2 ...' ) ;
51
47
} ) ;
52
48
49
+ it ( 'only one' , ( ) => {
50
+ const wrapper = mount (
51
+ < Overflow < ItemType >
52
+ data = { getData ( 1 ) }
53
+ itemKey = "key"
54
+ renderItem = { renderItem }
55
+ maxCount = "responsive"
56
+ /> ,
57
+ ) ;
58
+ wrapper . initSize ( 100 , 20 ) ;
59
+
60
+ expect ( wrapper . findItems ( ) ) . toHaveLength ( 1 ) ;
61
+ expect ( wrapper . findRest ( ) . props ( ) . display ) . toBeFalsy ( ) ;
62
+ } ) ;
63
+
53
64
it ( 'remove to clean up' , ( ) => {
54
65
const data = getData ( 6 ) ;
55
66
@@ -63,19 +74,35 @@ describe('Overflow.Responsive', () => {
63
74
) ;
64
75
wrapper . initSize ( 100 , 20 ) ;
65
76
66
- // Remove one
77
+ // Remove one (Just fit the container width)
67
78
const newData = [ ...data ] ;
68
79
newData . splice ( 1 , 1 ) ;
69
80
wrapper . setProps ( { data : newData } ) ;
81
+ wrapper . update ( ) ;
70
82
71
83
expect ( wrapper . findItems ( ) ) . toHaveLength ( 5 ) ;
72
- expect ( wrapper . findRest ( ) . text ( ) ) . toEqual ( '+ 1 ...' ) ;
84
+ expect ( wrapper . findRest ( ) . props ( ) . display ) . toBeFalsy ( ) ;
85
+
86
+ // Remove one (More place for container)
87
+ const restData = [ ...newData ] ;
88
+ restData . splice ( 1 , 2 ) ;
89
+ restData . push ( {
90
+ label : 'Additional' ,
91
+ key : 'additional' ,
92
+ } ) ;
93
+ wrapper . setProps ( { data : restData } ) ;
94
+ wrapper . update ( ) ;
95
+
96
+ expect ( wrapper . findItems ( ) ) . toHaveLength ( 4 ) ;
97
+ expect ( wrapper . findRest ( ) . props ( ) . display ) . toBeFalsy ( ) ;
73
98
} ) ;
74
99
75
100
it ( 'none to overflow' , ( ) => {
101
+ const data = getData ( 5 ) ;
102
+
76
103
const wrapper = mount (
77
104
< Overflow < ItemType >
78
- data = { getData ( 5 ) }
105
+ data = { data }
79
106
itemKey = "key"
80
107
renderItem = { renderItem }
81
108
maxCount = "responsive"
@@ -85,5 +112,44 @@ describe('Overflow.Responsive', () => {
85
112
wrapper . initSize ( 100 , 20 ) ;
86
113
expect ( wrapper . findItems ( ) ) . toHaveLength ( 5 ) ;
87
114
expect ( wrapper . findRest ( ) . props ( ) . display ) . toBeFalsy ( ) ;
115
+
116
+ // Add one
117
+ const newData : ItemType [ ] = [
118
+ {
119
+ label : 'Additional' ,
120
+ key : 'additional' ,
121
+ } ,
122
+ ...data ,
123
+ ] ;
124
+ wrapper . setProps ( { data : newData } ) ;
125
+ wrapper . update ( ) ;
126
+
127
+ // Currently resize observer not trigger, rest node is not ready
128
+ expect ( wrapper . findItems ( ) ) . toHaveLength ( 6 ) ;
129
+ expect ( wrapper . findRest ( ) . props ( ) . display ) . toBeFalsy ( ) ;
130
+
131
+ // Trigger resize, node ready
132
+ wrapper . triggerItemResize ( 0 , 20 ) ;
133
+ expect ( wrapper . findItems ( ) ) . toHaveLength ( 6 ) ;
134
+ expect ( wrapper . findRest ( ) . props ( ) . display ) . toBeTruthy ( ) ;
135
+ } ) ;
136
+
137
+ it ( 'unmount no error' , ( ) => {
138
+ const wrapper = mount (
139
+ < Overflow < ItemType >
140
+ data = { getData ( 1 ) }
141
+ itemKey = "key"
142
+ renderItem = { renderItem }
143
+ maxCount = "responsive"
144
+ /> ,
145
+ ) ;
146
+
147
+ wrapper . initSize ( 100 , 20 ) ;
148
+
149
+ wrapper . unmount ( ) ;
150
+
151
+ act ( ( ) => {
152
+ jest . runAllTimers ( ) ;
153
+ } ) ;
88
154
} ) ;
89
155
} ) ;
0 commit comments