import * as eventThunks from '@/features/Calendars/services' import EventUpdateModal from '@/features/Events/EventUpdateModal' import { act, fireEvent, screen, waitFor } from '@testing-library/react' import { renderWithProviders } from '../../utils/Renderwithproviders' describe('Event Full Display — delegated calendar move', () => { const mockOnClose = jest.fn() beforeEach(() => { jest.clearAllMocks() }) const testDate = new Date('2025-01-15T10:00:00.000Z') const testEndDate = new Date('2025-01-15T11:00:00.000Z') const baseUserState = { user: { userData: { sub: 'test', email: 'test@test.com', sid: 'aiYbWZSk2g0F+LrQeD7Dg4QcUMR8R/zTZdZBiA7N6Ro', openpaasId: 'user1' }, organiserData: { cn: 'test', cal_address: 'test@test.com' } } } const preloadedDelegatedCals = { ...baseUserState, calendars: { pending: false, list: { 'user1/cal1': { id: 'user1/cal1', name: 'Calendar One', color: '#FF0000', events: { event1: { uid: 'event1', title: 'Test Event', calId: 'user1/cal1', start: testDate.toISOString(), end: testEndDate.toISOString(), organizer: { cn: 'test', cal_address: 'test@test.com' }, attendee: [{ cn: 'test', cal_address: 'test@test.com' }], URL: '/calendar/user1/cal1/event1.ics' } }, link: '/calendar/user1/cal1.json' }, 'user2/cal2': { id: 'user2/cal2', name: 'Delegated Calendar', color: '#00FF00', delegated: true, access: { write: true }, owner: { emails: ['delegate@test.com'], name: 'Delegate User' }, events: {}, link: '/calendar/user2/cal2.json' } } } } it('calls deleteEventAsync and putEventAsync — and NOT moveEventAsync — when moving to a delegated calendar', async () => { const spyPut = jest .spyOn(eventThunks, 'putEventAsync') .mockImplementation(payload => { const promise = Promise.resolve(payload) ;(promise as any).unwrap = () => promise return () => promise as any }) const spyDelete = jest .spyOn(eventThunks, 'deleteEventAsync') .mockImplementation(payload => { const promise = Promise.resolve(payload) ;(promise as any).unwrap = () => promise return () => promise as any }) const spyMove = jest .spyOn(eventThunks, 'moveEventAsync') .mockImplementation(payload => { const promise = Promise.resolve(payload) ;(promise as any).unwrap = () => promise return () => promise as any }) await act(async () => renderWithProviders( , preloadedDelegatedCals ) ) fireEvent.click(screen.getByRole('button', { name: 'common.moreOptions' })) const calendarSelect = screen.getByLabelText('event.form.calendar') await act(async () => fireEvent.mouseDown(calendarSelect)) const option = await screen.findByText('Delegated Calendar') fireEvent.click(option) await act(async () => { fireEvent.click(screen.getByRole('button', { name: 'actions.save' })) }) await waitFor( () => { expect(spyPut).toHaveBeenCalled() }, { timeout: 3000 } ) await waitFor( () => { expect(spyDelete).toHaveBeenCalled() }, { timeout: 3000 } ) expect(spyMove).not.toHaveBeenCalled() }) })