@@ -51,18 +51,31 @@ describe('CodeInputField', () => {
5151 expect ( wrapper . find ( 'input' ) ) . toHaveLength ( 4 ) ;
5252 } ) ;
5353
54- test ( 'simulates onChange events' , ( ) => {
54+ test ( 'simulates onKeydown events' , ( ) => {
5555 const onChange = jest . fn ( ) ;
5656 const wrapper = mount ( < CodeInputField onChange = { onChange } fields = { 3 } value = "123" type = "number" /> ) ;
5757 const element = wrapper . find ( 'input' ) . at ( 0 ) ;
5858 element . simulate ( 'change' ) ;
59- element . simulate ( 'keydown' , { keyCode : 8 } ) ;
59+ element . simulate ( 'keydown' , { keyCode : 8 } ) ; // "backspace"
6060 element . simulate ( 'keydown' , { keyCode : 13 } ) ;
6161 element . simulate ( 'keydown' , { keyCode : 65 } ) ; // "a"
6262 element . simulate ( 'keydown' , { keyCode : 69 } ) ; // "e"
6363 expect ( wrapper . state ( ) . value ) . toEqual ( '23' ) ;
6464 } ) ;
6565
66+ test ( 'simulates onKeydown events; start at 2nd input' , ( ) => {
67+ const onChange = jest . fn ( ) ;
68+ const wrapper = mount ( < CodeInputField onChange = { onChange } fields = { 3 } value = "123" type = "number" /> ) ;
69+ const element = wrapper . find ( 'input' ) . at ( 1 ) ;
70+ element . simulate ( 'change' ) ;
71+ element . simulate ( 'keydown' , { keyCode : 8 } ) ; // "backspace"
72+ element . simulate ( 'keydown' , { keyCode : 13 } ) ;
73+ element . simulate ( 'keydown' , { keyCode : 65 } ) ; // "a"
74+ element . simulate ( 'keydown' , { keyCode : 69 } ) ; // "e"
75+ expect ( wrapper . state ( ) . value ) . toEqual ( '13' ) ;
76+ expect ( wrapper . find ( 'input' ) . at ( 0 ) . instance ( ) ) . toEqual ( document . activeElement ) ;
77+ } ) ;
78+
6679 test ( 'simulates onChange from paste type=text' , ( ) => {
6780 const onChange = jest . fn ( ) ;
6881 const wrapper = mount ( < CodeInputField onChange = { onChange } fields = { 6 } type = "text" /> ) ;
@@ -180,4 +193,31 @@ describe('CodeInputField', () => {
180193 element . simulate ( 'blur' ) ;
181194 expect ( element . instance ( ) ) . toEqual ( document . activeElement ) ;
182195 } ) ;
196+
197+ test ( 'should block characters that are in filter; default' , ( ) => {
198+ const wrapper = mount ( < CodeInputField fields = { 6 } type = "text" filterChars = { [ '1' , '2' , '3' , '4' , '5' , '6' ] } /> ) ;
199+ const element = wrapper . find ( 'input' ) . at ( 0 ) ;
200+ const target = element . instance ( ) ;
201+ target . value = 'ab12cd3e4f56' ;
202+ element . simulate ( 'change' , { target } ) ;
203+ expect ( wrapper . state ( ) . value ) . toEqual ( "abcdef" ) ;
204+ } ) ;
205+
206+ test ( 'should block characters that are in filter; flag set to false' , ( ) => {
207+ const wrapper = mount ( < CodeInputField fields = { 6 } type = "text" filterChars = { [ '1' , '2' , '3' , '4' , '5' , '6' ] } filterCharsIsWhitelist = { false } /> ) ;
208+ const element = wrapper . find ( 'input' ) . at ( 0 ) ;
209+ const target = element . instance ( ) ;
210+ target . value = 'ab12cd3e4f56' ;
211+ element . simulate ( 'change' , { target } ) ;
212+ expect ( wrapper . state ( ) . value ) . toEqual ( "abcdef" ) ;
213+ } ) ;
214+
215+ test ( 'should only allow characters that are in filter; flag set to true' , ( ) => {
216+ const wrapper = mount ( < CodeInputField fields = { 6 } type = "text" filterChars = { [ '1' , '2' , '3' , '4' , '5' , '6' ] } filterCharsIsWhitelist /> ) ;
217+ const element = wrapper . find ( 'input' ) . at ( 0 ) ;
218+ const target = element . instance ( ) ;
219+ target . value = 'ab12cd3e4f56' ;
220+ element . simulate ( 'change' , { target } ) ;
221+ expect ( wrapper . state ( ) . value ) . toEqual ( "123456" ) ;
222+ } ) ;
183223} ) ;
0 commit comments