UNPKG

@dbs-portal/tool-mock

Version:

API mocking toolkit using MSW for DBS Portal development workflows

93 lines 2.59 kB
/** * Testing helper utilities - thin wrappers around Jest and MSW */ import { http, HttpResponse } from 'msw'; import { getGlobalTestServer } from './setup'; /** * Create a mock API handler - simple wrapper around MSW's http handlers */ export function createMockHandler(method, url, response, options = {}) { const { status = 200, delay = 0, headers = {} } = options; return http[method.toLowerCase()](url, async () => { // Apply delay if specified if (delay > 0) { await new Promise(resolve => setTimeout(resolve, delay)); } return HttpResponse.json(response, { status, headers: { 'Content-Type': 'application/json', ...headers, }, }); }); } /** * Create a mock error handler */ export function createMockErrorHandler(method, url, error, options = {}) { return createMockHandler(method, url, { success: false, error, }, { status: error.status, delay: options.delay || 0, }); } /** * Add handlers to the test server - wrapper around MSW's server.use() */ export function addTestHandlers(...handlers) { const server = getGlobalTestServer(); if (server) { server.use(...handlers); } else { throw new Error('MSW test server not available. Make sure to call setupMSWJest() or setupMSWVitest() in your test setup.'); } } /** * Reset test handlers - wrapper around MSW's server.resetHandlers() */ export function resetTestHandlers() { const server = getGlobalTestServer(); if (server) { server.resetHandlers(); } } /** * Quick utilities for common test scenarios */ export const testUtils = { /** * Create a successful API response handler */ mockSuccess: (method, url, data) => { return createMockHandler(method, url, { success: true, data, }); }, /** * Create an error API response handler */ mockError: (method, url, error) => { return createMockErrorHandler(method, url, error); }, /** * Create a delayed response handler (for testing loading states) */ mockLoading: (method, url, data, delay = 1000) => { return createMockHandler(method, url, { success: true, data, }, { delay }); }, /** * Create test data using a factory function */ createTestData: (factory, count = 1) => { return Array.from({ length: count }, factory); }, }; //# sourceMappingURL=helpers.js.map