Skip to content

Commit 7b921d0

Browse files
committed
feat(menu): no updates available auto-hide
Signed-off-by: Adam Setch <[email protected]>
1 parent 811ac42 commit 7b921d0

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

src/main/updater.test.ts

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)