diff --git a/__tests__/index.spec.js b/__tests__/index.spec.js index 5719863..43b6079 100644 --- a/__tests__/index.spec.js +++ b/__tests__/index.spec.js @@ -50,6 +50,11 @@ describe('UrlPrettifier getPrettyUrl', (): void => { expect(router.getPrettyUrl('unknownPage', {id: 1})) .toEqual({href: '/unknownPage?id=1'}); }); + + it('should return href and prefetch equal to false if the route does not exist', (): void => { + expect(router.getPrettyUrl('unknownPage', {id: 1, preventPrefetchIfNoRoute: true})) + .toEqual({href: '/unknownPage?id=1', prefetch: false}); + }); }); describe('UrlPrettifier getPrettyUrlPatterns (DEPRECATED)', (): void => { diff --git a/src/index.js b/src/index.js index cb3b681..cdcc963 100644 --- a/src/index.js +++ b/src/index.js @@ -36,11 +36,12 @@ export default class UrlPrettifier { ; } - getPrettyUrl(pageName: T, params: ParamType): RouteLinkParamsType { + getPrettyUrl(pageName: T, {preventPrefetchIfNoRoute = false, ...params}: {preventPrefetchIfNoRoute: boolean, params: ParamType}): RouteLinkParamsType { const route: ?RouteType = this.routes.filter((currentRoute: RouteType): boolean => currentRoute.page === pageName)[0]; return { href: `/${pageName}${this.paramsToQueryString(params)}`, + ...(preventPrefetchIfNoRoute && !route && {prefetch: false}), ...(route && route.prettyUrl ? {as: typeof route.prettyUrl === 'string' ? route.prettyUrl : route.prettyUrl(params)} : {}