import { randomUUID } from 'node:crypto'; import { CalendarChannelSyncStage, ConnectedAccountProvider, } from 'twenty-shared/types'; import { microsoftCalendarEvent } from 'test/integration/microsoft/mocks/microsoft-calendar-event.util'; import { setupMicrosoftMock } from 'test/integration/microsoft/mocks/setup-microsoft-mock.util'; import { connectMessagingAccount } from 'test/integration/utils/connect-messaging-account.util'; import { findImportedCalendarEventTitles } from 'test/integration/utils/find-imported-records.util'; import { queryCalendarChannel } from 'test/integration/utils/query-messaging.util'; import { runCalendarChannelEventsImport } from 'test/integration/utils/run-calendar-channel-events-import.util'; import { runCalendarChannelListFetch } from 'test/integration/utils/run-calendar-channel-list-fetch.util'; const HANDLE = 'microsoft-calendar-events-import@apple.dev'; describe('Microsoft calendar events import (integration)', () => { const microsoft = setupMicrosoftMock({ handle: HANDLE }); let channel: Awaited>; beforeAll(async () => { channel = await connectMessagingAccount({ provider: ConnectedAccountProvider.MICROSOFT, handle: HANDLE, }); }, 60000); afterAll(async () => { await channel?.cleanup().catch(() => undefined); }); it('imports calendar events through the real delta-fetch and import pipeline', async () => { const eventTitle = `Calendar event ${randomUUID()}`; microsoft.serveCalendarEvents([ microsoftCalendarEvent({ subject: eventTitle }), ]); await runCalendarChannelListFetch(channel.calendarChannelId); const channelState = await queryCalendarChannel(channel); expect(channelState.syncStage).toBe( CalendarChannelSyncStage.CALENDAR_EVENTS_IMPORT_PENDING, ); await runCalendarChannelEventsImport(channel.calendarChannelId); expect(await findImportedCalendarEventTitles([eventTitle])).toEqual([ eventTitle, ]); }, 60000); it('imports a newly created event through the delta-token continuation', async () => { const newEventTitle = `Calendar event ${randomUUID()}`; microsoft.serveCalendarEvents( [microsoftCalendarEvent({ subject: newEventTitle })], { deltaToken: 'mock-calendar-delta-token-2' }, ); await runCalendarChannelListFetch(channel.calendarChannelId); const channelState = await queryCalendarChannel(channel); expect(channelState.syncStage).toBe( CalendarChannelSyncStage.CALENDAR_EVENTS_IMPORT_PENDING, ); await runCalendarChannelEventsImport(channel.calendarChannelId); expect(await findImportedCalendarEventTitles([newEventTitle])).toEqual([ newEventTitle, ]); }, 60000); });