@@ -109,6 +109,45 @@ describe('Input.Count', () => {
109
109
expect ( setSelectionRange ) . toHaveBeenCalledWith ( 2 , 2 ) ;
110
110
} ) ;
111
111
112
+ it ( 'input using the input method should trigger onChange once' , ( ) => {
113
+ const onChange = jest . fn ( ) ;
114
+ const { container } = render ( < Input onChange = { onChange } /> ) ;
115
+ const input = container . querySelector ( 'input' ) ! ;
116
+ fireEvent . compositionStart ( input ) ;
117
+ fireEvent . compositionUpdate ( input , { data : '你' } ) ;
118
+ fireEvent . compositionEnd ( input , { data : '你好' } ) ;
119
+ fireEvent . input ( input , { target : { value : '你好' } } ) ;
120
+ expect ( onChange ) . toHaveBeenCalledTimes ( 1 ) ;
121
+ } ) ;
122
+
123
+ it ( 'using the input method to enter the cropped content should trigger onChange twice' , ( ) => {
124
+ const onChange = jest . fn ( ) ;
125
+ const onCompositionEnd = jest . fn ( ) ;
126
+ const { container } = render (
127
+ < Input
128
+ count = { {
129
+ show : true ,
130
+ max : 3 ,
131
+ exceedFormatter : ( val , { max } ) =>
132
+ getSegments ( val )
133
+ . filter ( ( seg ) => seg . index + seg . segment . length <= max )
134
+ . map ( ( seg ) => seg . segment )
135
+ . join ( '' ) ,
136
+ } }
137
+ onChange = { onChange }
138
+ onCompositionEnd = { onCompositionEnd }
139
+ /> ,
140
+ ) ;
141
+ const input = container . querySelector ( 'input' ) ! ;
142
+ fireEvent . compositionStart ( input ) ;
143
+ fireEvent . compositionUpdate ( input , { target : { value : '你' } } ) ;
144
+ fireEvent . compositionUpdate ( input , { target : { value : '你好' } } ) ;
145
+ fireEvent . compositionUpdate ( input , { target : { value : '你好世' } } ) ;
146
+ fireEvent . compositionUpdate ( input , { target : { value : '你好世界' } } ) ;
147
+ fireEvent . compositionEnd ( input , { target : { value : '你好世界' } } ) ;
148
+ expect ( input ?. value ) . toEqual ( '你好世' ) ;
149
+ } ) ;
150
+
112
151
describe ( 'cls' , ( ) => {
113
152
it ( 'raw' , ( ) => {
114
153
const { container } = render (
0 commit comments