UNPKG

react-antd-admin-panel

Version:

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

67 lines 2.18 kB
import React from 'react'; import { MainContext } from '../main/MainContext'; import { GlobalStore } from '../main/Store'; import { UserState } from '../main/UserState'; import { createMockHttp } from './createMockHttp'; /** * Create a mock Main context wrapper for testing */ export function createMockMain(options = {}) { // Create instances const store = new GlobalStore(); const userState = new UserState(); const mockHttp = createMockHttp(); // Initialize store with provided values if (options.store) { for (const [key, value] of Object.entries(options.store)) { store.set(key, value); } } // Initialize user with provided data if (options.user) { userState.set(options.user); } // Create mock navigate function with call tracking const calls = []; const mockNavigate = Object.assign((...args) => { calls.push(args); }, { mock: { calls }, mockClear: () => { calls.length = 0; }, }); // Create the main instance const config = options.config || {}; const mainInstance = { User: () => userState, Store: () => store, config: { pathToApi: config.pathToApi || '/api', defaultRoute: config.defaultRoute || '/', authRoute: config.authRoute || '/login', ...config, }, navigate: mockNavigate, canAccess: (route) => { // Check required role if (route.requiredRole && !userState.hasRole(route.requiredRole)) { return false; } // Check required permissions if (route.requiredPermissions && !userState.hasAllPermissions(route.requiredPermissions)) { return false; } return true; }, }; // Create the wrapper component const wrapper = ({ children }) => { return React.createElement(MainContext.Provider, { value: mainInstance }, children); }; return { wrapper, mockNavigate, mockHttp, mainInstance, userState, store, }; } //# sourceMappingURL=createMockMain.js.map