1
1
import React from 'react' ;
2
- import { mount , ReactWrapper } from './util/wrapper ' ;
2
+ import { render , fireEvent } from '@testing-library/react ' ;
3
3
import InputNumber , { InputNumberProps } from '../src' ;
4
+ import KeyCode from 'rc-util/lib/KeyCode' ;
4
5
5
6
jest . mock ( '../src/utils/supportUtil' ) ;
6
7
const { supportBigInt } = require ( '../src/utils/supportUtil' ) ;
@@ -17,109 +18,78 @@ describe('InputNumber.Click', () => {
17
18
function testInputNumber (
18
19
name : string ,
19
20
props : Partial < InputNumberProps > ,
20
- operate : ( wrapper : ReactWrapper ) => void ,
21
+ selector : string ,
21
22
changedValue : string | number ,
22
23
stepType : 'up' | 'down' ,
23
24
) {
24
25
it ( name , ( ) => {
25
26
const onChange = jest . fn ( ) ;
26
27
const onStep = jest . fn ( ) ;
27
- const wrapper = mount ( < InputNumber onChange = { onChange } onStep = { onStep } { ...props } /> ) ;
28
- operate ( wrapper ) ;
28
+ const { container, unmount } = render (
29
+ < InputNumber onChange = { onChange } onStep = { onStep } { ...props } /> ,
30
+ ) ;
31
+ fireEvent . focus ( container . querySelector ( 'input' ) ) ;
32
+ fireEvent . mouseDown ( container . querySelector ( selector ) ) ;
33
+ fireEvent . mouseUp ( container . querySelector ( selector ) ) ;
34
+ fireEvent . click ( container . querySelector ( selector ) ) ;
35
+ expect ( onChange ) . toHaveBeenCalledTimes ( 1 ) ;
29
36
expect ( onChange ) . toHaveBeenCalledWith ( changedValue ) ;
30
37
expect ( onStep ) . toHaveBeenCalledWith ( changedValue , { offset : 1 , type : stepType } ) ;
31
-
32
- wrapper . unmount ( ) ;
38
+ unmount ( ) ;
33
39
} ) ;
34
40
}
35
41
36
42
describe ( 'basic work' , ( ) => {
37
- testInputNumber (
38
- 'up button' ,
39
- { defaultValue : 10 } ,
40
- wrapper => wrapper . find ( '.rc-input-number-handler-up' ) . simulate ( 'mouseDown' ) ,
41
- 11 ,
42
- 'up' ,
43
- ) ;
43
+ testInputNumber ( 'up button' , { defaultValue : 10 } , '.rc-input-number-handler-up' , 11 , 'up' ) ;
44
44
45
- testInputNumber (
46
- 'down button' ,
47
- { value : 10 } ,
48
- wrapper => wrapper . find ( '.rc-input-number-handler-down' ) . simulate ( 'mouseDown' ) ,
49
- 9 ,
50
- 'down' ,
51
- ) ;
45
+ testInputNumber ( 'down button' , { value : 10 } , '.rc-input-number-handler-down' , 9 , 'down' ) ;
52
46
} ) ;
53
47
54
48
describe ( 'empty input' , ( ) => {
55
- testInputNumber (
56
- 'up button' ,
57
- { } ,
58
- wrapper => wrapper . find ( '.rc-input-number-handler-up' ) . simulate ( 'mouseDown' ) ,
59
- 1 ,
60
- 'up' ,
61
- ) ;
49
+ testInputNumber ( 'up button' , { } , '.rc-input-number-handler-up' , 1 , 'up' ) ;
62
50
63
- testInputNumber (
64
- 'down button' ,
65
- { } ,
66
- wrapper => wrapper . find ( '.rc-input-number-handler-down' ) . simulate ( 'mouseDown' ) ,
67
- - 1 ,
68
- 'down' ,
69
- ) ;
51
+ testInputNumber ( 'down button' , { } , '.rc-input-number-handler-down' , - 1 , 'down' ) ;
70
52
} ) ;
71
53
72
54
describe ( 'empty with min & max' , ( ) => {
73
- testInputNumber (
74
- 'up button' ,
75
- { min : 6 , max : 10 } ,
76
- wrapper => wrapper . find ( '.rc-input-number-handler-up' ) . simulate ( 'mouseDown' ) ,
77
- 6 ,
78
- 'up' ,
79
- ) ;
55
+ testInputNumber ( 'up button' , { min : 6 , max : 10 } , '.rc-input-number-handler-up' , 6 , 'up' ) ;
80
56
81
- testInputNumber (
82
- 'down button' ,
83
- { min : 6 , max : 10 } ,
84
- wrapper => wrapper . find ( '.rc-input-number-handler-down' ) . simulate ( 'mouseDown' ) ,
85
- 6 ,
86
- 'down' ,
87
- ) ;
57
+ testInputNumber ( 'down button' , { min : 6 , max : 10 } , '.rc-input-number-handler-down' , 6 , 'down' ) ;
88
58
} ) ;
89
59
90
60
describe ( 'null with min & max' , ( ) => {
91
61
testInputNumber (
92
62
'up button' ,
93
63
{ value : null , min : 6 , max : 10 } ,
94
- wrapper => wrapper . find ( '.rc-input-number-handler-up' ) . simulate ( 'mouseDown' ) ,
64
+ '.rc-input-number-handler-up' ,
95
65
6 ,
96
66
'up' ,
97
67
) ;
98
68
99
69
testInputNumber (
100
70
'down button' ,
101
71
{ value : null , min : 6 , max : 10 } ,
102
- wrapper => wrapper . find ( '.rc-input-number-handler-down' ) . simulate ( 'mouseDown' ) ,
72
+ '.rc-input-number-handler-down' ,
103
73
6 ,
104
74
'down' ,
105
75
) ;
106
76
} ) ;
107
77
108
78
describe ( 'disabled' , ( ) => {
109
79
it ( 'none' , ( ) => {
110
- const wrapper = mount ( < InputNumber value = { 5 } min = { 3 } max = { 9 } /> ) ;
111
- expect ( wrapper . exists ( '.rc-input-number-handler-up-disabled' ) ) . toBeFalsy ( ) ;
112
- expect ( wrapper . exists ( '.rc-input-number-handler-down-disabled' ) ) . toBeFalsy ( ) ;
80
+ const { container } = render ( < InputNumber value = { 5 } min = { 3 } max = { 9 } /> ) ;
81
+ expect ( container . querySelector ( '.rc-input-number-handler-up-disabled' ) ) . toBeFalsy ( ) ;
82
+ expect ( container . querySelector ( '.rc-input-number-handler-down-disabled' ) ) . toBeFalsy ( ) ;
113
83
} ) ;
114
84
115
85
it ( 'min' , ( ) => {
116
- const wrapper = mount ( < InputNumber value = { 3 } min = { 3 } max = { 9 } /> ) ;
117
- expect ( wrapper . exists ( '.rc-input-number-handler-down-disabled' ) ) . toBeTruthy ( ) ;
86
+ const { container } = render ( < InputNumber value = { 3 } min = { 3 } max = { 9 } /> ) ;
87
+ expect ( container . querySelector ( '.rc-input-number-handler-down-disabled' ) ) . toBeTruthy ( ) ;
118
88
} ) ;
119
89
120
90
it ( 'max' , ( ) => {
121
- const wrapper = mount ( < InputNumber value = { 9 } min = { 3 } max = { 9 } /> ) ;
122
- expect ( wrapper . exists ( '.rc-input-number-handler-up-disabled' ) ) . toBeTruthy ( ) ;
91
+ const { container } = render ( < InputNumber value = { 9 } min = { 3 } max = { 9 } /> ) ;
92
+ expect ( container . querySelector ( '.rc-input-number-handler-up-disabled' ) ) . toBeTruthy ( ) ;
123
93
} ) ;
124
94
} ) ;
125
95
@@ -128,11 +98,11 @@ describe('InputNumber.Click', () => {
128
98
supportBigInt . mockImplementation ( ( ) => false ) ;
129
99
130
100
const onChange = jest . fn ( ) ;
131
- const wrapper = mount ( < InputNumber defaultValue = { 1e24 } onChange = { onChange } /> ) ;
132
- wrapper . find ( '.rc-input-number-handler-up' ) . simulate ( 'mouseDown' ) ;
101
+ const { container } = render ( < InputNumber defaultValue = { 1e24 } onChange = { onChange } /> ) ;
102
+ fireEvent . mouseDown ( container . querySelector ( '.rc-input-number-handler-up' ) ) ;
133
103
expect ( onChange ) . toHaveBeenCalledWith ( Number . MAX_SAFE_INTEGER ) ;
134
104
135
- wrapper . find ( '.rc-input-number-handler-down' ) . simulate ( 'mouseDown' ) ;
105
+ fireEvent . mouseDown ( container . querySelector ( '.rc-input-number-handler-down' ) ) ;
136
106
expect ( onChange ) . toHaveBeenCalledWith ( Number . MAX_SAFE_INTEGER - 1 ) ;
137
107
138
108
supportBigInt . mockRestore ( ) ;
@@ -142,58 +112,65 @@ describe('InputNumber.Click', () => {
142
112
supportBigInt . mockImplementation ( ( ) => false ) ;
143
113
144
114
const onChange = jest . fn ( ) ;
145
- const wrapper = mount ( < InputNumber defaultValue = { - 1e25 } onChange = { onChange } /> ) ;
146
- wrapper . find ( '.rc-input-number-handler-down' ) . simulate ( 'mouseDown' ) ;
115
+ const { container } = render ( < InputNumber defaultValue = { - 1e25 } onChange = { onChange } /> ) ;
116
+ fireEvent . mouseDown ( container . querySelector ( '.rc-input-number-handler-down' ) ) ;
147
117
expect ( onChange ) . toHaveBeenCalledWith ( Number . MIN_SAFE_INTEGER ) ;
148
118
149
- wrapper . find ( '.rc-input-number-handler-up' ) . simulate ( 'mouseDown' ) ;
119
+ fireEvent . mouseDown ( container . querySelector ( '.rc-input-number-handler-up' ) ) ;
150
120
expect ( onChange ) . toHaveBeenCalledWith ( Number . MIN_SAFE_INTEGER + 1 ) ;
151
121
152
122
supportBigInt . mockRestore ( ) ;
153
123
} ) ;
154
124
155
125
it ( 'no limit max safe when BigInt support' , ( ) => {
156
126
const onChange = jest . fn ( ) ;
157
- const wrapper = mount ( < InputNumber stringMode defaultValue = { 1e24 } onChange = { onChange } /> ) ;
158
- wrapper . find ( '.rc-input-number-handler-up' ) . simulate ( 'mouseDown' ) ;
127
+ const { container } = render (
128
+ < InputNumber stringMode defaultValue = { 1e24 } onChange = { onChange } /> ,
129
+ ) ;
130
+ fireEvent . mouseDown ( container . querySelector ( '.rc-input-number-handler-up' ) ) ;
159
131
expect ( onChange ) . toHaveBeenCalledWith ( '999999999999999983222785' ) ;
160
132
} ) ;
161
133
162
134
it ( 'no limit min safe when BigInt support' , ( ) => {
163
135
const onChange = jest . fn ( ) ;
164
- const wrapper = mount ( < InputNumber stringMode defaultValue = { - 1e25 } onChange = { onChange } /> ) ;
165
- wrapper . find ( '.rc-input-number-handler-down' ) . simulate ( 'mouseDown' ) ;
136
+ const { container } = render (
137
+ < InputNumber stringMode defaultValue = { - 1e25 } onChange = { onChange } /> ,
138
+ ) ;
139
+ fireEvent . mouseDown ( container . querySelector ( '.rc-input-number-handler-down' ) ) ;
166
140
expect ( onChange ) . toHaveBeenCalledWith ( '-10000000000000000905969665' ) ;
167
141
} ) ;
168
142
} ) ;
169
143
170
144
it ( 'focus input when click up/down button' , ( ) => {
171
145
const onFocus = jest . fn ( ) ;
172
146
const onBlur = jest . fn ( ) ;
173
- const wrapper = mount ( < InputNumber onFocus = { onFocus } onBlur = { onBlur } /> , {
174
- attachTo : document . body ,
175
- } ) ;
176
-
177
- wrapper . find ( '.rc-input-number-handler-up' ) . simulate ( 'mouseDown' ) ;
178
- expect ( wrapper . exists ( '.rc-input-number-focused' ) ) . toBeTruthy ( ) ;
179
- expect ( onFocus ) . toHaveBeenCalled ( ) ;
180
-
181
- wrapper . blurInput ( ) ;
147
+ const { container } = render ( < InputNumber onFocus = { onFocus } onBlur = { onBlur } /> ) ;
148
+ fireEvent . mouseDown ( container . querySelector ( '.rc-input-number-handler-up' ) ) ;
149
+ setTimeout ( ( ) => {
150
+ expect ( input ) . toHaveFocus ( )
151
+ expect ( onFocus ) . toHaveBeenCalled ( ) ;
152
+ expect ( container . querySelector ( '.rc-input-number-focused' ) ) . toBeTruthy ( ) ;
153
+ done ( )
154
+ } , 500 /* however long my debounce is */ )
155
+
156
+ fireEvent . blur ( container . querySelector ( 'input' ) ) ;
182
157
expect ( onBlur ) . toHaveBeenCalled ( ) ;
183
- expect ( wrapper . exists ( '.rc-input-number-focused' ) ) . toBeFalsy ( ) ;
158
+ expect ( container . querySelector ( '.rc-input-number-focused' ) ) . toBe ( null ) ;
184
159
} ) ;
185
160
186
161
it ( 'click down button with pressing shift key' , ( ) => {
187
162
const onChange = jest . fn ( ) ;
188
163
const onStep = jest . fn ( ) ;
189
- const wrapper = mount (
164
+ const { container } = render (
190
165
< InputNumber onChange = { onChange } onStep = { onStep } step = { 0.01 } value = { 1.2 } /> ,
191
166
) ;
192
-
193
- wrapper
194
- . find ( '.rc-input-number-handler-down' )
195
- . simulate ( 'keyDown' , { shiftKey : true } )
196
- . simulate ( 'mouseDown' ) ;
167
+ fireEvent . keyDown ( container . querySelector ( 'input' ) , {
168
+ shiftKey : true ,
169
+ which : KeyCode . DOWN ,
170
+ key : 'ArrowDown' ,
171
+ code : 'ArrowDown' ,
172
+ keyCode : KeyCode . DOWN ,
173
+ } ) ;
197
174
198
175
expect ( onChange ) . toHaveBeenCalledWith ( 1.1 ) ;
199
176
expect ( onStep ) . toHaveBeenCalledWith ( 1.1 , { offset : '0.1' , type : 'down' } ) ;
@@ -202,15 +179,17 @@ describe('InputNumber.Click', () => {
202
179
it ( 'click up button with pressing shift key' , ( ) => {
203
180
const onChange = jest . fn ( ) ;
204
181
const onStep = jest . fn ( ) ;
205
- const wrapper = mount (
182
+ const { container } = render (
206
183
< InputNumber onChange = { onChange } onStep = { onStep } step = { 0.01 } value = { 1.2 } /> ,
207
184
) ;
208
185
209
- wrapper
210
- . find ( '.rc-input-number-handler-up' )
211
- . simulate ( 'keyDown' , { shiftKey : true } )
212
- . simulate ( 'mouseDown' ) ;
213
-
186
+ fireEvent . keyDown ( container . querySelector ( 'input' ) , {
187
+ shiftKey : true ,
188
+ which : KeyCode . UP ,
189
+ key : 'ArrowUp' ,
190
+ code : 'ArrowUp' ,
191
+ keyCode : KeyCode . UP ,
192
+ } ) ;
214
193
expect ( onChange ) . toHaveBeenCalledWith ( 1.3 ) ;
215
194
expect ( onStep ) . toHaveBeenCalledWith ( 1.3 , { offset : '0.1' , type : 'up' } ) ;
216
195
} ) ;
0 commit comments