@@ -104,7 +104,7 @@ describe('Dropdown', () => {
104
104
105
105
triggerButton . simulate ( 'click' )
106
106
const firstItem = wrapper . find ( `li.${ Dropdown . slotClassNames . item } ` ) . at ( 0 )
107
- firstItem . simulate ( 'click' )
107
+ firstItem . simulate ( 'click' , { nativeEvent : { stopImmediatePropagation : jest . fn ( ) } } )
108
108
109
109
expect ( onOpenChange ) . toBeCalledTimes ( 2 )
110
110
expect ( onOpenChange ) . toHaveBeenLastCalledWith (
@@ -630,7 +630,7 @@ describe('Dropdown', () => {
630
630
631
631
triggerButton . simulate ( 'click' )
632
632
const item = wrapper . find ( `li.${ Dropdown . slotClassNames . item } ` ) . at ( itemSelectedIndex )
633
- item . simulate ( 'click' )
633
+ item . simulate ( 'click' , { nativeEvent : { stopImmediatePropagation : jest . fn ( ) } } )
634
634
635
635
expect ( onSelectedChange ) . toHaveBeenCalledTimes ( 1 )
636
636
expect ( onSelectedChange ) . toHaveBeenCalledWith (
@@ -716,10 +716,10 @@ describe('Dropdown', () => {
716
716
717
717
triggerButton . simulate ( 'click' )
718
718
const firstItem = wrapper . find ( `li.${ Dropdown . slotClassNames . item } ` ) . at ( 1 )
719
- firstItem . simulate ( 'click' )
719
+ firstItem . simulate ( 'click' , { nativeEvent : { stopImmediatePropagation : jest . fn ( ) } } )
720
720
triggerButton . simulate ( 'click' )
721
721
const itemAtIndex = wrapper . find ( `li.${ Dropdown . slotClassNames . item } ` ) . at ( itemSelectedIndex )
722
- itemAtIndex . simulate ( 'click' )
722
+ itemAtIndex . simulate ( 'click' , { nativeEvent : { stopImmediatePropagation : jest . fn ( ) } } )
723
723
724
724
expect ( onSelectedChange ) . toHaveBeenCalledTimes ( 2 )
725
725
expect ( onSelectedChange ) . toHaveBeenLastCalledWith (
@@ -739,10 +739,10 @@ describe('Dropdown', () => {
739
739
740
740
triggerButton . simulate ( 'click' )
741
741
const itemAtIndex1 = wrapper . find ( `li.${ Dropdown . slotClassNames . item } ` ) . at ( 1 )
742
- itemAtIndex1 . simulate ( 'click' )
742
+ itemAtIndex1 . simulate ( 'click' , { nativeEvent : { stopImmediatePropagation : jest . fn ( ) } } )
743
743
triggerButton . simulate ( 'click' )
744
744
const itemAtIndex2 = wrapper . find ( `li.${ Dropdown . slotClassNames . item } ` ) . at ( 3 )
745
- itemAtIndex2 . simulate ( 'click' )
745
+ itemAtIndex2 . simulate ( 'click' , { nativeEvent : { stopImmediatePropagation : jest . fn ( ) } } )
746
746
747
747
expect ( onSelectedChange ) . toHaveBeenCalledTimes ( 2 )
748
748
expect ( onSelectedChange ) . toHaveBeenLastCalledWith (
@@ -763,10 +763,10 @@ describe('Dropdown', () => {
763
763
764
764
toggleIndicator . simulate ( 'click' )
765
765
let firstItem = wrapper . find ( `li.${ Dropdown . slotClassNames . item } ` ) . at ( 0 )
766
- firstItem . simulate ( 'click' )
766
+ firstItem . simulate ( 'click' , { nativeEvent : { stopImmediatePropagation : jest . fn ( ) } } )
767
767
toggleIndicator . simulate ( 'click' )
768
768
firstItem = wrapper . find ( `li.${ Dropdown . slotClassNames . item } ` ) . at ( 0 )
769
- firstItem . simulate ( 'click' )
769
+ firstItem . simulate ( 'click' , { nativeEvent : { stopImmediatePropagation : jest . fn ( ) } } )
770
770
searchInput
771
771
. simulate ( 'click' )
772
772
. simulate ( 'keydown' , { keyCode : keyboardKey . Backspace , key : 'Backspace' } )
@@ -808,7 +808,7 @@ describe('Dropdown', () => {
808
808
809
809
triggerButton . simulate ( 'click' )
810
810
const firstItem = wrapper . find ( `li.${ Dropdown . slotClassNames . item } ` ) . at ( 0 )
811
- firstItem . simulate ( 'click' )
811
+ firstItem . simulate ( 'click' , { nativeEvent : { stopImmediatePropagation : jest . fn ( ) } } )
812
812
813
813
expect ( dropdown . state ( 'a11ySelectionStatus' ) ) . toBe ( 'bla bla added' )
814
814
@@ -830,7 +830,7 @@ describe('Dropdown', () => {
830
830
831
831
triggerButton . simulate ( 'click' )
832
832
const firstItem = wrapper . find ( `li.${ Dropdown . slotClassNames . item } ` ) . at ( 0 )
833
- firstItem . simulate ( 'click' )
833
+ firstItem . simulate ( 'click' , { nativeEvent : { stopImmediatePropagation : jest . fn ( ) } } )
834
834
jest . runAllTimers ( )
835
835
const removeIcon = wrapper . find ( `span.${ DropdownSelectedItem . slotClassNames . icon } ` )
836
836
removeIcon . simulate ( 'click' )
@@ -866,7 +866,7 @@ describe('Dropdown', () => {
866
866
867
867
toggleIndicator . simulate ( 'click' )
868
868
const itemAtIndex = wrapper . find ( `li.${ Dropdown . slotClassNames . item } ` ) . at ( itemSelectedIndex )
869
- itemAtIndex . simulate ( 'click' )
869
+ itemAtIndex . simulate ( 'click' , { nativeEvent : { stopImmediatePropagation : jest . fn ( ) } } )
870
870
871
871
expect ( onSelectedChange ) . toHaveBeenCalledTimes ( 1 )
872
872
expect ( onSelectedChange ) . toHaveBeenCalledWith (
@@ -909,7 +909,7 @@ describe('Dropdown', () => {
909
909
910
910
toggleIndicator . simulate ( 'click' )
911
911
const itemAtIndex = wrapper . find ( `li.${ Dropdown . slotClassNames . item } ` ) . at ( itemSelectedIndex )
912
- itemAtIndex . simulate ( 'click' )
912
+ itemAtIndex . simulate ( 'click' , { nativeEvent : { stopImmediatePropagation : jest . fn ( ) } } )
913
913
914
914
expect ( onSelectedChange ) . toHaveBeenCalledTimes ( 1 )
915
915
expect ( onSelectedChange ) . toHaveBeenCalledWith (
@@ -1010,4 +1010,53 @@ describe('Dropdown', () => {
1010
1010
expect ( preventDefault ) . not . toBeCalled ( )
1011
1011
} )
1012
1012
} )
1013
+
1014
+ describe ( 'items' , ( ) => {
1015
+ it ( 'have onClick called when passed stop event from being propagated' , ( ) => {
1016
+ const onClick = jest . fn ( )
1017
+ const stopPropagation = jest . fn ( )
1018
+ const stopImmediatePropagation = jest . fn ( )
1019
+ const mockedEvent = { stopPropagation, nativeEvent : { stopImmediatePropagation } }
1020
+ const items = [ { header : 'Venom' , onClick } ]
1021
+ const wrapper = mountWithProvider ( < Dropdown items = { items } /> )
1022
+ const triggerButton = wrapper . find ( `button.${ Dropdown . slotClassNames . triggerButton } ` )
1023
+
1024
+ triggerButton . simulate ( 'click' )
1025
+ const firstItem = wrapper . find ( `li.${ Dropdown . slotClassNames . item } ` )
1026
+ firstItem . simulate ( 'click' , mockedEvent )
1027
+
1028
+ expect ( onClick ) . toBeCalledTimes ( 1 )
1029
+ expect ( onClick ) . toHaveBeenCalledWith (
1030
+ expect . objectContaining ( mockedEvent ) ,
1031
+ expect . objectContaining ( {
1032
+ header : 'Venom' ,
1033
+ } ) ,
1034
+ )
1035
+ expect ( stopPropagation ) . toBeCalledTimes ( 1 )
1036
+ expect ( stopImmediatePropagation ) . toBeCalledTimes ( 1 )
1037
+ } )
1038
+
1039
+ it ( 'when selected have onClick called when passed stop event from being propagated' , ( ) => {
1040
+ const onClick = jest . fn ( )
1041
+ const stopPropagation = jest . fn ( )
1042
+ const stopImmediatePropagation = jest . fn ( )
1043
+ const mockedEvent = { stopPropagation, nativeEvent : { stopImmediatePropagation } }
1044
+ const items = [ { header : 'Venom' , onClick } ]
1045
+ const wrapper = mountWithProvider ( < Dropdown items = { items } value = { items } multiple /> )
1046
+ const selectedItemHeaderAtIndex0 = wrapper
1047
+ . find ( `span.${ DropdownSelectedItem . slotClassNames . header } ` )
1048
+ . at ( 0 )
1049
+
1050
+ selectedItemHeaderAtIndex0 . simulate ( 'click' , mockedEvent )
1051
+
1052
+ expect ( onClick ) . toBeCalledTimes ( 1 )
1053
+ expect ( onClick ) . toHaveBeenCalledWith (
1054
+ expect . objectContaining ( mockedEvent ) ,
1055
+ expect . objectContaining ( {
1056
+ header : 'Venom' ,
1057
+ } ) ,
1058
+ )
1059
+ expect ( stopPropagation ) . toBeCalledTimes ( 1 )
1060
+ } )
1061
+ } )
1013
1062
} )
0 commit comments