import { describe, it, expect, vi, beforeEach } from 'vitest'; vi.mock('$env/dynamic/private', () => ({ env: { BACKEND_URL: 'http://localhost:8080' } })); const mockDelete = vi.fn(); const mockPatch = vi.fn(); vi.mock('$lib/server/api', () => ({ apiClient: () => ({ DELETE: mockDelete, PATCH: mockPatch }) })); const USER_UUID = '22222222-2222-2222-2222-222222222222'; describe('members server routes', () => { let DELETE: any; let PATCH: any; beforeEach(async () => { mockDelete.mockReset(); mockPatch.mockReset(); vi.resetModules(); const mod = await import('./+server'); DELETE = mod.DELETE; PATCH = mod.PATCH; }); it('DELETE proxies to backend and returns 204', async () => { mockDelete.mockResolvedValue({ response: { status: 204 } }); const event = { fetch: vi.fn(), params: { userId: USER_UUID }, request: { json: vi.fn() } } as any; const res = await DELETE(event); expect(res.status).toBe(204); }); it('PATCH proxies to backend and returns member response', async () => { mockPatch.mockResolvedValue({ data: { status: 'success', data: { userId: USER_UUID, displayName: 'Tom', role: 'planner', joinedAt: '' } }, response: { status: 200 } }); const event = { fetch: vi.fn(), params: { userId: USER_UUID }, request: { json: async () => ({ role: 'planner' }) } } as any; const res = await PATCH(event); expect(res.status).toBe(200); }); });