import { Router } from '../../Router'; import { ProviderMock, type ProviderMockParams } from '../ProviderMock'; export type CreateRouterMockParams = ProviderMockParams; type RouterMock = TRouter & { /** * Ожидает завершения навигации * @example * ```ts * const routerMock = createRouterMockFactory(realRouter); * * routerMock.navigate('/home'); * * await routerMock.waitNavigation(); * * expect(routerMock.location.pathname).toBe('/home'); * ``` */ waitNavigation: () => Promise; /** * @private * Внутреннее поле для использования внутри пакета */ _providerMock: ProviderMock; }; /** * Создает фабрику для создания моковых роутеров * @example * ```ts * const realRouter = new Router(new ReactRouterProvider(), { * home: Router.defineRoute({ * pattern: '/home', * }), * }); * * const createRouterMock = createRouterMockFactory(realRouter); * * ... * * it('Происходит переход на главную страницу после submit', () => { * const routerMock = createRouterMock({ * initialLocation: { * pathname: '/', * }, * }); * * const sut = createStore(routerMock); * * sut.submit(); * * // Навигация - асинхронная операция * await mobx.waitFor(() => sut.location.pathname === '/home'); * * expect(sut.location.pathname).toBe('/home'); * }); * ``` */ export declare const createRouterMockFactory: >(realRouter: TRouter) => (params: CreateRouterMockParams) => RouterMock; export {};