You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.9 KiB
TypeScript
64 lines
1.9 KiB
TypeScript
// SPDX-FileCopyrightText: © 2017 EteSync Authors
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import { RouteResolver } from './routes';
|
|
|
|
const routes = {
|
|
home: '',
|
|
post: {
|
|
_base: 'post',
|
|
_id: {
|
|
_base: ':postId',
|
|
comment: 'comment/:commentId',
|
|
revision: 'history/:revisionId/:someOtherVar/test',
|
|
},
|
|
},
|
|
};
|
|
|
|
const routeResolver = new RouteResolver(routes);
|
|
|
|
it('translating routes', () => {
|
|
// Working basic resolves
|
|
expect(routeResolver.getRoute('home')).toBe('/');
|
|
expect(routeResolver.getRoute('post')).toBe('/post');
|
|
expect(routeResolver.getRoute('post._id')).toBe('/post/:postId');
|
|
expect(routeResolver.getRoute('post._id.comment')).toBe('/post/:postId/comment/:commentId');
|
|
|
|
// Working translation resolves
|
|
expect(routeResolver.getRoute('home')).toBe('/');
|
|
expect(routeResolver.getRoute('post')).toBe('/post');
|
|
expect(routeResolver.getRoute('post._id', { postId: 3 })).toBe('/post/3');
|
|
expect(routeResolver.getRoute('post._id.comment',
|
|
{ postId: 3, commentId: 5 })).toBe('/post/3/comment/5');
|
|
expect(routeResolver.getRoute('post._id.revision',
|
|
{ postId: 3, revisionId: 5, someOtherVar: 'a' })).toBe('/post/3/history/5/a/test');
|
|
|
|
// Failing basic resolves
|
|
expect(() => {
|
|
routeResolver.getRoute('bad');
|
|
}).toThrow();
|
|
expect(() => {
|
|
routeResolver.getRoute('home.bad');
|
|
}).toThrow();
|
|
expect(() => {
|
|
routeResolver.getRoute('post._id.bad');
|
|
}).toThrow();
|
|
|
|
// Failing translations
|
|
expect(() => {
|
|
routeResolver.getRoute('home', { test: 4 });
|
|
}).toThrow();
|
|
expect(() => {
|
|
routeResolver.getRoute('post._id', { test: 4 });
|
|
}).toThrow();
|
|
expect(() => {
|
|
routeResolver.getRoute('post._id', { postId: 3, test: 4 });
|
|
}).toThrow();
|
|
expect(() => {
|
|
routeResolver.getRoute('post._id.comment', { postId: 3, commentId: 5, test: 4 });
|
|
}).toThrow();
|
|
expect(() => {
|
|
routeResolver.getRoute('post._id.comment', { postId: 3 });
|
|
}).toThrow();
|
|
});
|