UNPKG

react-antd-admin-panel

Version:

Modern TypeScript-first React admin panel builder with Ant Design 6

98 lines 2.6 kB
/** * createMockHttp - Mock HTTP request utility for testing * * Provides a fluent API for mocking Get/Post requests with configurable responses. * * @example * const mockHttp = createMockHttp() * .onGet('/api/users', { data: mockUsers }) * .onPost('/api/users', { data: newUser }) * .onGet('/api/error', { error: new Error('Failed') }); * * // Use in tests * await mockHttp.get('/api/users'); // Returns { data: mockUsers } */ /** * MockHttp - Chainable mock HTTP handler */ export class MockHttp { _getHandlers = new Map(); _postHandlers = new Map(); _defaultDelay = 0; constructor(config) { this._defaultDelay = config?.defaultDelay || 0; } /** * Register a mock GET response */ onGet(url, response) { this._getHandlers.set(url, response); return this; } /** * Register a mock POST response */ onPost(url, response) { this._postHandlers.set(url, response); return this; } /** * Clear all registered handlers */ clear() { this._getHandlers.clear(); this._postHandlers.clear(); return this; } /** * Get the mock GET handler function */ get = async (url, params) => { return this._handleRequest(this._getHandlers, url, params); }; /** * Get the mock POST handler function */ post = async (url, data) => { return this._handleRequest(this._postHandlers, url, data); }; /** * Internal request handler */ async _handleRequest(handlers, url, _data) { const response = handlers.get(url); if (!response) { throw new Error(`No mock handler registered for ${url}`); } const delay = response.delay ?? this._defaultDelay; if (delay > 0) { await new Promise(resolve => setTimeout(resolve, delay)); } if (response.error) { throw response.error; } return { data: response.data, status: response.status ?? 200, }; } /** * Get all registered GET handlers (for inspection in tests) */ getRegisteredGetHandlers() { return Array.from(this._getHandlers.keys()); } /** * Get all registered POST handlers (for inspection in tests) */ getRegisteredPostHandlers() { return Array.from(this._postHandlers.keys()); } } /** * Create a new MockHttp instance */ export function createMockHttp(config) { return new MockHttp(config); } //# sourceMappingURL=createMockHttp.js.map