mirror of
https://github.com/nimbold/Firelink.git
synced 2026-08-09 18:59:36 +00:00
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
import * as ipc from '../ipc';
|
|
import { updateDockBadge } from './dockBadge';
|
|
|
|
vi.mock('../ipc', () => ({
|
|
invokeCommand: vi.fn()
|
|
}));
|
|
|
|
describe('dock badge synchronization', () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
vi.mocked(ipc.invokeCommand).mockImplementation(async command => (
|
|
command === 'begin_dock_badge_session' ? 1 : undefined
|
|
));
|
|
});
|
|
|
|
it('attaches increasing generations to concurrent updates', async () => {
|
|
await Promise.all([updateDockBadge(3), updateDockBadge(0)]);
|
|
|
|
const calls = vi.mocked(ipc.invokeCommand).mock.calls;
|
|
expect(calls).toHaveLength(3);
|
|
expect(calls[0]).toEqual(['begin_dock_badge_session']);
|
|
const badgeCalls = calls.slice(1);
|
|
expect(badgeCalls[0]).toEqual([
|
|
'update_dock_badge',
|
|
{ count: 3, generation: expect.any(Number), session: 1 }
|
|
]);
|
|
expect(badgeCalls[1]).toEqual([
|
|
'update_dock_badge',
|
|
{ count: 0, generation: expect.any(Number), session: 1 }
|
|
]);
|
|
const firstBadgeArgs = badgeCalls[0][1] as { generation: number };
|
|
const secondBadgeArgs = badgeCalls[1][1] as { generation: number };
|
|
expect(secondBadgeArgs.generation).toBe(firstBadgeArgs.generation + 1);
|
|
});
|
|
});
|