@@ -637,4 +637,122 @@ describe('test Collect Element class', () => {
637637 expect ( collectElement . getInternalState ( ) . isValid ) . toBe ( true ) ;
638638 } ) ;
639639 } ) ;
640+
641+ it ( 'test error messages for elements without label in COLLECT container' , ( ) => {
642+ const pinElement = new CollectElement (
643+ {
644+ table : 'cards' ,
645+ column : 'pin' ,
646+ type : ElementType . PIN ,
647+ containerType : ContainerType . COLLECT ,
648+ } ,
649+ { required : false } ,
650+ context
651+ ) ;
652+
653+ pinElement . onChangeElement ( '12' ) ; // Invalid PIN (less than 4 digits)
654+ expect ( pinElement . getInternalState ( ) . isValid ) . toBe ( false ) ;
655+ expect ( pinElement . getErrorText ( ) ) . toBe ( DEFAULT_COLLECT_ELEMENT_ERROR_TEXT ) ; // Should be "Invalid value"
656+
657+ const cvvElement = new CollectElement (
658+ {
659+ table : 'cards' ,
660+ column : 'cvv' ,
661+ type : ElementType . CVV ,
662+ containerType : ContainerType . COLLECT ,
663+ } ,
664+ { required : false } ,
665+ context
666+ ) ;
667+
668+ cvvElement . onChangeElement ( '12' ) ; // Invalid CVV
669+ expect ( cvvElement . getInternalState ( ) . isValid ) . toBe ( false ) ;
670+ expect ( cvvElement . getErrorText ( ) ) . toBe ( DEFAULT_COLLECT_ELEMENT_ERROR_TEXT ) ; // Should be "Invalid value"
671+ } ) ;
672+
673+ it ( 'test error messages for elements without label in COMPOSABLE container' , ( ) => {
674+ // Test PIN element without label in COMPOSABLE container
675+ const pinElement = new CollectElement (
676+ {
677+ table : 'cards' ,
678+ column : 'pin' ,
679+ type : ElementType . PIN ,
680+ containerType : ContainerType . COMPOSABLE ,
681+ } ,
682+ { required : false } ,
683+ context
684+ ) ;
685+
686+ pinElement . onChangeElement ( '12' ) ; // Invalid PIN (less than 4 digits)
687+ expect ( pinElement . getInternalState ( ) . isValid ) . toBe ( false ) ;
688+ expect ( pinElement . getErrorText ( ) ) . toBe ( 'Invalid pin' ) ; // Should be element-specific error
689+
690+ const cvvElement = new CollectElement (
691+ {
692+ table : 'cards' ,
693+ column : 'cvv' ,
694+ type : ElementType . CVV ,
695+ containerType : ContainerType . COMPOSABLE ,
696+ } ,
697+ { required : false } ,
698+ context
699+ ) ;
700+
701+ cvvElement . onChangeElement ( '12' ) ; // Invalid CVV
702+ expect ( cvvElement . getInternalState ( ) . isValid ) . toBe ( false ) ;
703+ expect ( cvvElement . getErrorText ( ) ) . toBe ( 'Invalid cvv' ) ; // Should be element-specific error
704+ } ) ;
705+
706+ it ( 'test error messages for elements with label' , ( ) => {
707+ // Test PIN element with label
708+ const pinElement = new CollectElement (
709+ {
710+ table : 'cards' ,
711+ column : 'pin' ,
712+ type : ElementType . PIN ,
713+ label : 'PIN' ,
714+ containerType : ContainerType . COLLECT ,
715+ } ,
716+ { required : false } ,
717+ context
718+ ) ;
719+
720+ pinElement . onChangeElement ( '12' ) ; // Invalid PIN
721+ expect ( pinElement . getInternalState ( ) . isValid ) . toBe ( false ) ;
722+ expect ( pinElement . getErrorText ( ) ) . toBe ( 'Invalid PIN' ) ; // Should use label
723+
724+ // Test required field with label when empty
725+ const requiredElement = new CollectElement (
726+ {
727+ table : 'cards' ,
728+ column : 'cvv' ,
729+ type : ElementType . CVV ,
730+ label : 'CVV' ,
731+ containerType : ContainerType . COLLECT ,
732+ } ,
733+ { required : true } ,
734+ context
735+ ) ;
736+
737+ requiredElement . onChangeElement ( '' ) ; // Empty required field
738+ expect ( requiredElement . getInternalState ( ) . isValid ) . toBe ( false ) ;
739+ expect ( requiredElement . getErrorText ( ) ) . toBe ( 'CVV is required' ) ; // Should use label with "is required"
740+ } ) ;
741+
742+ it ( 'test error messages for empty required fields without label' , ( ) => {
743+ const element = new CollectElement (
744+ {
745+ table : 'cards' ,
746+ column : 'pin' ,
747+ type : ElementType . PIN ,
748+ containerType : ContainerType . COLLECT ,
749+ } ,
750+ { required : true } ,
751+ context
752+ ) ;
753+
754+ element . onChangeElement ( '' ) ; // Empty required field
755+ expect ( element . getInternalState ( ) . isValid ) . toBe ( false ) ;
756+ expect ( element . getErrorText ( ) ) . toBe ( 'Field is required' ) ; // Should be generic required message
757+ } ) ;
640758} ) ;
0 commit comments