@exlinep/router
Version:
Router for VKUI
56 lines (43 loc) • 1.52 kB
text/typescript
import { History } from './History';
import { Route } from './Route';
import { State, stateFromLocation } from './State';
import { Page } from './Page';
import { cleanup } from '@testing-library/react';
function getRoute() {
return new Route(new Page('main', 'main'), '/', {});
}
function getState(): State {
return stateFromLocation(0);
}
describe('History', () => {
afterEach(() => {
cleanup();
window.history.replaceState({}, '', '/#');
});
it('check', () => {
const h = new History();
expect(h.getCurrentIndex()).toEqual(0);
expect(h.getLength()).toEqual(0);
h.push( getRoute(), getState() );
expect(h.getCurrentIndex()).toEqual(0);
expect(h.getLength()).toEqual(1);
h.push( getRoute(), getState() );
expect(h.getCurrentIndex()).toEqual(1);
expect(h.getLength()).toEqual(2);
h.push( getRoute(), getState() );
expect(h.getCurrentIndex()).toEqual(2);
expect(h.getLength()).toEqual(3);
h.replace( getRoute(), getState() );
expect(h.getCurrentIndex()).toEqual(2);
expect(h.getLength()).toEqual(3);
h.push( getRoute(), getState() );
expect(h.getCurrentIndex()).toEqual(3);
expect(h.getLength()).toEqual(4);
h.setCurrentIndex(h.getCurrentIndex() - 2);
expect(h.getCurrentIndex()).toEqual(1);
expect(h.getLength()).toEqual(4);
h.push( getRoute(), getState() );
expect(h.getCurrentIndex()).toEqual(2);
expect(h.getLength()).toEqual(3);
});
});