/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import React, { Component, ComponentType } from 'react';
import { MemoryRouter, Route, withRouter } from 'react-router-dom';
import * as H from 'history';
export const WithMemoryRouter = (initialEntries: string[] = ['/'], initialIndex: number = 0) => (
WrappedComponent: ComponentType
) => (props: any) => (
);
export const WithRoute = (componentRoutePath = '/', onRouter = (router: any) => {}) => (
WrappedComponent: ComponentType
) => {
// Create a class component that will catch the router
// and forward it to our "onRouter()" handler.
const CatchRouter = withRouter(
class extends Component {
componentDidMount() {
const { match, location, history } = this.props;
const router = { route: { match, location }, history };
onRouter(router);
}
render() {
return ;
}
}
);
return (props: any) => (
}
/>
);
};
interface Router {
history: Partial;
route: {
location: H.Location;
};
}
export const reactRouterMock: Router = {
history: {
push: () => {},
createHref: location => location.pathname!,
location: {
pathname: '',
search: '',
state: '',
hash: '',
},
},
route: {
location: {
pathname: '',
search: '',
state: '',
hash: '',
},
},
};