@@ -4819,4 +4819,68 @@ describe("DatePicker", () => {
48194819 } ) ;
48204820 } ) ;
48214821 } ) ;
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+ } ) ;
48224886} ) ;
0 commit comments