import { Page } from '@playwright/test' import { mockAuthResponse, mockCurrentUser, mockLectures, mockUserStats } from '../../mocks/fixtures' export async function mockApi(page: Page, options?: { authenticated?: boolean }) { const authenticated = options?.authenticated ?? false await page.route('**/api/v1/auth/refresh', async (route) => { if (!authenticated) { await route.fulfill({ status: 401, contentType: 'application/json', body: JSON.stringify({ message: 'Unauthorized' }), }) return } await route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify(mockAuthResponse), }) }) await page.route('**/api/v1/auth/me', async (route) => { if (!authenticated) { await route.fulfill({ status: 401, contentType: 'application/json', body: JSON.stringify({ message: 'Unauthorized' }), }) return } await route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify(mockCurrentUser), }) }) await page.route('**/api/v1/users/me/stats', async (route) => { if (!authenticated) { await route.fulfill({ status: 401, contentType: 'application/json', body: JSON.stringify({ message: 'Unauthorized' }), }) return } await route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify(mockUserStats), }) }) await page.route('**/api/v1/lectures/*/enroll', async (route) => { await route.fulfill({ status: 204 }) }) await page.route(/\/api\/v1\/lectures(\?.*)?$/, async (route) => { if (route.request().method() !== 'GET') { await route.continue() return } await route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ items: mockLectures }), }) }) }