// src/mocks/server.js import { HttpResponse, JsonBodyType, http } from 'msw' import { setupServer } from 'msw/node' import { BASE_URL, handlers } from './handlers' export const server = setupServer(...handlers) export default class MockServer { static get(url: string, mockedResponse: JsonBodyType, mockedStatus: number = 200, options = {}) { request('get', url, mockedResponse, mockedStatus, options) } static post(url: string, mockedResponse: JsonBodyType, mockedStatus: number = 200, options = {}) { request('post', url, mockedResponse, mockedStatus, options) } static put(url: string, mockedResponse: JsonBodyType, mockedStatus: number = 200, options = {}) { request('put', url, mockedResponse, mockedStatus, options) } static patch( url: string, mockedResponse: JsonBodyType, mockedStatus: number = 200, options = {} ) { request('patch', url, mockedResponse, mockedStatus, options) } static delete( url: string, mockedResponse?: JsonBodyType, mockedStatus: number = 200, options = {} ) { request('delete', url, mockedResponse, mockedStatus, options) } static server() { return server } } function request( method: 'get' | 'post' | 'delete' | 'patch' | 'put', url: string, mockedResponse: JsonBodyType, mockedStatus: number = 200, options = {} ) { let requestUrl = url if (requestUrl.startsWith('/')) { requestUrl = BASE_URL + url } else if (!url.startsWith('http')) { requestUrl = `${BASE_URL}/${url}` } server.use( http[method]( requestUrl, () => { return HttpResponse.json(mockedResponse, { status: mockedStatus }) }, options ) ) }