@@ -9,7 +9,7 @@ vi.mock("@/components/ui", () => ({
99 Slider : ( { value, onValueChange, "data-testid" : dataTestId , disabled } : any ) => (
1010 < input
1111 type = "range"
12- value = { value [ 0 ] }
12+ value = { value ?. [ 0 ] ?? 0 }
1313 onChange = { ( e ) => onValueChange ( [ parseFloat ( e . target . value ) ] ) }
1414 data-testid = { dataTestId }
1515 disabled = { disabled }
@@ -106,8 +106,9 @@ describe("ContextManagementSettings", () => {
106106 const checkbox = screen . getByTestId ( "include-diagnostic-messages-checkbox" )
107107 expect ( checkbox . querySelector ( "input" ) ) . not . toBeChecked ( )
108108
109- // Slider should not be rendered when diagnostics are disabled
110- expect ( screen . queryByTestId ( "max-diagnostic-messages-slider" ) ) . not . toBeInTheDocument ( )
109+ // Slider should still be rendered when diagnostics are disabled
110+ expect ( screen . getByTestId ( "max-diagnostic-messages-slider" ) ) . toBeInTheDocument ( )
111+ expect ( screen . getByText ( "50" ) ) . toBeInTheDocument ( )
111112 } )
112113
113114 it ( "calls setCachedStateField when include diagnostic messages checkbox is toggled" , async ( ) => {
@@ -134,15 +135,15 @@ describe("ContextManagementSettings", () => {
134135 } )
135136 } )
136137
137- it ( "hides slider when include diagnostic messages is unchecked" , ( ) => {
138+ it ( "keeps slider visible when include diagnostic messages is unchecked" , ( ) => {
138139 const { rerender } = render ( < ContextManagementSettings { ...defaultProps } includeDiagnosticMessages = { true } /> )
139140
140141 const slider = screen . getByTestId ( "max-diagnostic-messages-slider" )
141142 expect ( slider ) . toBeInTheDocument ( )
142143
143- // Update to disabled
144+ // Update to disabled - slider should still be visible
144145 rerender ( < ContextManagementSettings { ...defaultProps } includeDiagnosticMessages = { false } /> )
145- expect ( screen . queryByTestId ( "max-diagnostic-messages-slider" ) ) . not . toBeInTheDocument ( )
146+ expect ( screen . getByTestId ( "max-diagnostic-messages-slider" ) ) . toBeInTheDocument ( )
146147 } )
147148
148149 it ( "displays correct max diagnostic messages value" , ( ) => {
@@ -167,4 +168,110 @@ describe("ContextManagementSettings", () => {
167168 expect ( screen . getByTestId ( "show-rooignored-files-checkbox" ) ) . toBeInTheDocument ( )
168169 expect ( screen . getByTestId ( "auto-condense-context-checkbox" ) ) . toBeInTheDocument ( )
169170 } )
171+
172+ describe ( "Edge cases for maxDiagnosticMessages" , ( ) => {
173+ it ( "handles zero value correctly" , async ( ) => {
174+ const setCachedStateField = vi . fn ( )
175+ render (
176+ < ContextManagementSettings
177+ { ...defaultProps }
178+ maxDiagnosticMessages = { 0 }
179+ setCachedStateField = { setCachedStateField }
180+ /> ,
181+ )
182+
183+ expect ( screen . getByText ( "0" ) ) . toBeInTheDocument ( )
184+
185+ const slider = screen . getByTestId ( "max-diagnostic-messages-slider" )
186+ expect ( slider ) . toHaveValue ( "0" )
187+ } )
188+
189+ it ( "handles negative values by displaying them" , async ( ) => {
190+ const setCachedStateField = vi . fn ( )
191+ render (
192+ < ContextManagementSettings
193+ { ...defaultProps }
194+ maxDiagnosticMessages = { - 10 }
195+ setCachedStateField = { setCachedStateField }
196+ /> ,
197+ )
198+
199+ // Component displays the actual negative value in the text span
200+ expect ( screen . getByText ( "-10" ) ) . toBeInTheDocument ( )
201+
202+ // Note: The actual slider behavior with negative values depends on the implementation
203+ // In this case, we're just verifying the component renders without errors
204+ } )
205+
206+ it ( "handles very large numbers by capping at maximum" , async ( ) => {
207+ const setCachedStateField = vi . fn ( )
208+ const largeNumber = 1000
209+ render (
210+ < ContextManagementSettings
211+ { ...defaultProps }
212+ maxDiagnosticMessages = { largeNumber }
213+ setCachedStateField = { setCachedStateField }
214+ /> ,
215+ )
216+
217+ // Should display the actual value even if it exceeds slider max
218+ expect ( screen . getByText ( largeNumber . toString ( ) ) ) . toBeInTheDocument ( )
219+
220+ // Slider value would be capped at max (100)
221+ const slider = screen . getByTestId ( "max-diagnostic-messages-slider" )
222+ expect ( slider ) . toHaveValue ( "100" )
223+ } )
224+
225+ it ( "enforces maximum value constraint" , async ( ) => {
226+ const setCachedStateField = vi . fn ( )
227+ render ( < ContextManagementSettings { ...defaultProps } setCachedStateField = { setCachedStateField } /> )
228+
229+ const slider = screen . getByTestId ( "max-diagnostic-messages-slider" )
230+
231+ // Test that setting value above 100 gets capped
232+ fireEvent . change ( slider , { target : { value : "150" } } )
233+
234+ await waitFor ( ( ) => {
235+ // Should be capped at 100 (the slider's max)
236+ expect ( setCachedStateField ) . toHaveBeenCalledWith ( "maxDiagnosticMessages" , 100 )
237+ } )
238+ } )
239+
240+ it ( "handles boundary value at minimum (0)" , async ( ) => {
241+ const setCachedStateField = vi . fn ( )
242+ render ( < ContextManagementSettings { ...defaultProps } setCachedStateField = { setCachedStateField } /> )
243+
244+ const slider = screen . getByTestId ( "max-diagnostic-messages-slider" )
245+ fireEvent . change ( slider , { target : { value : "0" } } )
246+
247+ await waitFor ( ( ) => {
248+ expect ( setCachedStateField ) . toHaveBeenCalledWith ( "maxDiagnosticMessages" , 0 )
249+ } )
250+ } )
251+
252+ it ( "handles boundary value at maximum (100)" , async ( ) => {
253+ const setCachedStateField = vi . fn ( )
254+ render ( < ContextManagementSettings { ...defaultProps } setCachedStateField = { setCachedStateField } /> )
255+
256+ const slider = screen . getByTestId ( "max-diagnostic-messages-slider" )
257+ fireEvent . change ( slider , { target : { value : "100" } } )
258+
259+ await waitFor ( ( ) => {
260+ expect ( setCachedStateField ) . toHaveBeenCalledWith ( "maxDiagnosticMessages" , 100 )
261+ } )
262+ } )
263+
264+ it ( "handles decimal values by parsing as float" , async ( ) => {
265+ const setCachedStateField = vi . fn ( )
266+ render ( < ContextManagementSettings { ...defaultProps } setCachedStateField = { setCachedStateField } /> )
267+
268+ const slider = screen . getByTestId ( "max-diagnostic-messages-slider" )
269+ fireEvent . change ( slider , { target : { value : "50.7" } } )
270+
271+ await waitFor ( ( ) => {
272+ // The mock slider component parses as float
273+ expect ( setCachedStateField ) . toHaveBeenCalledWith ( "maxDiagnosticMessages" , 50.7 )
274+ } )
275+ } )
276+ } )
170277} )
0 commit comments