import { Router } from '../lib/entities/Router';
import { Page } from '../lib/entities/Page';
import { delay } from './tools';

describe('onVKWebAppChangeFragment', () => {
  beforeEach(() => {
    window.history.replaceState({}, '', '/#');
  });

  it('after event isFirstPage is true', async (done) => {
    const USER_PAGE = '/user/:id([0-9]+)';
    const r = new Router(
      {
        '/': new Page('main', 'main'),
        [USER_PAGE]: new Page('user', 'main'),
        '/info': new Page('info', 'main'),
        '/create': new Page('create', 'main'),
        '/done': new Page('done', 'main'),
      },
      null
    );

    r.start();

    expect(r.getCurrentLocation().isFirstPage()).toBeTruthy();

    r.pushPage('/info');

    expect(r.getCurrentLocation().getPageId()).toBe('/info');
    expect(r.getCurrentLocation().isFirstPage()).toBeFalsy();

    r.onVKWebAppChangeFragment('user/12');

    await delay();
    expect(r.getCurrentLocation().isFirstPage()).toBeTruthy();
    expect(r.getCurrentLocation().getPageId()).toBe(USER_PAGE);
    expect(r.getCurrentLocation().getParams()).toMatchObject({
      id: '12',
    });

    done();
  });
});
