import { beforeEach, describe, expect, it, vi } from 'vitest' import { openDesktopNotificationTarget } from './desktopNotificationNavigation' import { SCHEDULED_TAB_ID, useTabStore } from '../stores/tabStore' import { useChatStore } from '../stores/chatStore' import { useSessionStore } from '../stores/sessionStore' const initialTabState = useTabStore.getInitialState() const initialChatState = useChatStore.getInitialState() const initialSessionState = useSessionStore.getInitialState() describe('desktopNotificationNavigation', () => { beforeEach(() => { useTabStore.setState(initialTabState, true) useChatStore.setState(initialChatState, true) useSessionStore.setState(initialSessionState, true) }) it('opens and connects the session referenced by a notification target', () => { const connectToSession = vi.fn() useChatStore.setState({ connectToSession }) openDesktopNotificationTarget({ type: 'session', sessionId: 'session-1', title: 'Build fix', }) expect(useTabStore.getState().tabs).toEqual([ { sessionId: 'session-1', title: 'Build fix', type: 'session', status: 'idle' }, ]) expect(useTabStore.getState().activeTabId).toBe('session-1') expect(connectToSession).toHaveBeenCalledWith('session-1') }) it('uses the known session title when the notification omits one', () => { const connectToSession = vi.fn() useSessionStore.setState({ sessions: [{ id: 'session-2', title: 'Known Session', createdAt: '2026-05-06T00:00:00.000Z', modifiedAt: '2026-05-06T00:00:00.000Z', messageCount: 1, projectPath: '/workspace/project', workDir: '/workspace/project', workDirExists: true, }], }) useChatStore.setState({ connectToSession }) openDesktopNotificationTarget({ type: 'session', sessionId: 'session-2' }) expect(useTabStore.getState().tabs[0]).toMatchObject({ sessionId: 'session-2', title: 'Known Session', type: 'session', }) expect(connectToSession).toHaveBeenCalledWith('session-2') }) it('opens the scheduled tasks tab for scheduled notification targets', () => { const connectToSession = vi.fn() useChatStore.setState({ connectToSession }) openDesktopNotificationTarget({ type: 'scheduled' }) expect(useTabStore.getState().tabs).toEqual([ { sessionId: SCHEDULED_TAB_ID, title: 'Scheduled Tasks', type: 'scheduled', status: 'idle' }, ]) expect(useTabStore.getState().activeTabId).toBe(SCHEDULED_TAB_ID) expect(connectToSession).not.toHaveBeenCalled() }) })