@@ -183,6 +183,66 @@ describe('main/updater.ts', () => {
183183 ) . toHaveBeenCalledWith ( false ) ;
184184 } ) ;
185185
186+ it ( 'auto-hides "No updates available" after configured timeout' , async ( ) => {
187+ jest . useFakeTimers ( ) ;
188+ try {
189+ await updater . start ( ) ;
190+ (
191+ menuBuilder . setNoUpdateAvailableMenuVisibility as jest . Mock
192+ ) . mockClear ( ) ;
193+
194+ emit ( 'update-not-available' ) ;
195+ // Immediately shows the message
196+ expect (
197+ menuBuilder . setNoUpdateAvailableMenuVisibility ,
198+ ) . toHaveBeenCalledWith ( true ) ;
199+
200+ // Then hides it after the configured timeout
201+ jest . advanceTimersByTime ( APPLICATION . UPDATE_NOT_AVAILABLE_DISPLAY_MS ) ;
202+ expect (
203+ menuBuilder . setNoUpdateAvailableMenuVisibility ,
204+ ) . toHaveBeenLastCalledWith ( false ) ;
205+ } finally {
206+ jest . useRealTimers ( ) ;
207+ }
208+ } ) ;
209+
210+ it ( 'clears pending hide timer when a new check starts' , async ( ) => {
211+ jest . useFakeTimers ( ) ;
212+ try {
213+ await updater . start ( ) ;
214+ (
215+ menuBuilder . setNoUpdateAvailableMenuVisibility as jest . Mock
216+ ) . mockClear ( ) ;
217+
218+ emit ( 'update-not-available' ) ;
219+ // Message shown
220+ expect (
221+ menuBuilder . setNoUpdateAvailableMenuVisibility ,
222+ ) . toHaveBeenCalledWith ( true ) ;
223+
224+ // New check should hide immediately and clear pending timeout
225+ emit ( 'checking-for-update' ) ;
226+ expect (
227+ menuBuilder . setNoUpdateAvailableMenuVisibility ,
228+ ) . toHaveBeenLastCalledWith ( false ) ;
229+
230+ const callsBefore = (
231+ menuBuilder . setNoUpdateAvailableMenuVisibility as jest . Mock
232+ ) . mock . calls . length ;
233+ jest . advanceTimersByTime (
234+ APPLICATION . UPDATE_NOT_AVAILABLE_DISPLAY_MS * 2 ,
235+ ) ;
236+ // No additional hide call due to cleared timeout
237+ expect (
238+ ( menuBuilder . setNoUpdateAvailableMenuVisibility as jest . Mock ) . mock
239+ . calls . length ,
240+ ) . toBe ( callsBefore ) ;
241+ } finally {
242+ jest . useRealTimers ( ) ;
243+ }
244+ } ) ;
245+
186246 it ( 'handles update-cancelled (reset state)' , async ( ) => {
187247 await updater . start ( ) ;
188248 emit ( 'update-cancelled' ) ;
0 commit comments