@@ -4819,4 +4819,68 @@ describe("DatePicker", () => {
4819
4819
} ) ;
4820
4820
} ) ;
4821
4821
} ) ;
4822
+
4823
+ describe ( "onChangeRaw - selectionMeta" , ( ) => {
4824
+ it ( "should include selectionMeta as a second param to the onChangeRaw when user selected a date to provide extra meta about the selected date element" , ( ) => {
4825
+ const selectedDate = newDate ( "2025-11-05" ) ;
4826
+ const onChangeRawSpy = jest . fn ( ) ;
4827
+ const { container } = render (
4828
+ < DatePicker
4829
+ dateFormat = "MM/dd/yyyy"
4830
+ selected = { selectedDate }
4831
+ onChangeRaw = { onChangeRawSpy }
4832
+ /> ,
4833
+ ) ;
4834
+ expect ( onChangeRawSpy ) . not . toHaveBeenCalled ( ) ;
4835
+
4836
+ const input = safeQuerySelector ( container , "input" ) ;
4837
+ fireEvent . focus ( input ) ;
4838
+
4839
+ const day = safeQuerySelector ( container , ".react-datepicker__day--002" ) ;
4840
+ fireEvent . click ( day ) ;
4841
+
4842
+ expect ( onChangeRawSpy ) . toHaveBeenCalledTimes ( 1 ) ;
4843
+ const params = onChangeRawSpy . mock . calls [ 0 ] ;
4844
+ expect ( params . length ) . toBe ( 2 ) ;
4845
+
4846
+ const eventObject = params [ 0 ] ;
4847
+ expect ( typeof eventObject ) . toBe ( "object" ) ;
4848
+
4849
+ const selectionMeta = params [ 1 ] ;
4850
+ expect ( typeof selectionMeta ) . toBe ( "object" ) ;
4851
+ expect ( selectionMeta ) . toHaveProperty ( "date" ) ;
4852
+ expect ( selectionMeta ) . toHaveProperty ( "formattedDate" ) ;
4853
+ expect ( selectionMeta . formattedDate ) . toBe ( "11/02/2025" ) ;
4854
+ expect ( selectionMeta . date ) . toBeInstanceOf ( Date ) ;
4855
+ } ) ;
4856
+
4857
+ it ( "should not include selectionMeta as a second param to the onChangeRaw when user updated date using date input" , ( ) => {
4858
+ const selectedDate = newDate ( "2025-11-05" ) ;
4859
+ const onChangeRawSpy = jest . fn ( ) ;
4860
+ const { container } = render (
4861
+ < DatePicker
4862
+ dateFormat = "MM/dd/yyyy"
4863
+ selected = { selectedDate }
4864
+ onChangeRaw = { onChangeRawSpy }
4865
+ /> ,
4866
+ ) ;
4867
+ expect ( onChangeRawSpy ) . not . toHaveBeenCalled ( ) ;
4868
+
4869
+ const input = safeQuerySelector ( container , "input" ) ;
4870
+ const inputValue = "11/02/2025" ;
4871
+ fireEvent . change ( input , {
4872
+ target : {
4873
+ value : inputValue ,
4874
+ } ,
4875
+ } ) ;
4876
+ expect ( onChangeRawSpy ) . toHaveBeenCalledTimes ( 1 ) ;
4877
+
4878
+ const params = onChangeRawSpy . mock . calls [ 0 ] ;
4879
+ expect ( params . length ) . toBe ( 1 ) ;
4880
+
4881
+ const eventObject = params [ 0 ] ;
4882
+ expect ( typeof eventObject ) . toBe ( "object" ) ;
4883
+ expect ( eventObject . target ?. value ) . toBe ( inputValue ) ;
4884
+ } ) ;
4885
+ } ) ;
4822
4886
} ) ;
0 commit comments