gitlab-org--gitlab-foss/spec/frontend/ide/ide_router_extension_spec.js

48 lines
1.3 KiB
JavaScript

import VueRouter from 'vue-router';
import IdeRouter from '~/ide/ide_router_extension';
jest.mock('vue-router');
describe('IDE overrides of VueRouter', () => {
const paths = (branch) => [
`${branch}`,
`/${branch}`,
`/${branch}/-/`,
`/edit/${branch}`,
`/edit/${branch}/-/`,
`/blob/${branch}`,
`/blob/${branch}/-/`,
`/blob/${branch}/-/src/merge_requests/2`,
`/blob/${branch}/-/src/blob/`,
`/tree/${branch}/-/src/blob/`,
`/tree/${branch}/-/src/tree/`,
];
let router;
beforeEach(() => {
VueRouter.mockClear();
router = new IdeRouter({
mode: 'history',
});
});
it.each`
path | expected
${'#-test'} | ${'%23-test'}
${'#test'} | ${'%23test'}
${'test#'} | ${'test%23'}
${'test-#'} | ${'test-%23'}
${'test-#-hash'} | ${'test-%23-hash'}
${'test/hash#123'} | ${'test/hash%23123'}
`('finds project path when route is $path', ({ path, expected }) => {
paths(path).forEach((route) => {
const expectedPath = route.replace(path, expected);
router.push(route);
expect(VueRouter.prototype.push).toHaveBeenCalledWith(expectedPath, undefined, undefined);
router.resolve(route);
expect(VueRouter.prototype.resolve).toHaveBeenCalledWith(expectedPath, undefined, undefined);
});
});
});