From 8804c5e338b19ef27eeea37d47cf567415a62353 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 20 Sep 2020 14:49:46 +0200 Subject: [PATCH] core-api/routing: only require args in link call if routeRef has params --- packages/core-api/src/routing/RouteRef.ts | 8 ++++---- packages/core-api/src/routing/RouteRefRegistry.test.ts | 10 ++++------ 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/packages/core-api/src/routing/RouteRef.ts b/packages/core-api/src/routing/RouteRef.ts index 5e7a4294d9..c8b0855de7 100644 --- a/packages/core-api/src/routing/RouteRef.ts +++ b/packages/core-api/src/routing/RouteRef.ts @@ -27,7 +27,7 @@ type SubRouteConfig = { path: string; }; -export class SubRouteRef +export class SubRouteRef implements ReferencedRoute { constructor( private readonly parent: ConcreteRoute, @@ -38,11 +38,11 @@ export class SubRouteRef return this; } - link(params: T): ConcreteRoute { + link(...args: Args): ConcreteRoute { return { [routeReference]: this, [resolveRoute]: (path: string) => { - const ownPart = generatePath(this.config.path, params); + const ownPart = generatePath(this.config.path, args[0] ?? {}); const parentPart = this.parent[resolveRoute](path); return parentPart + ownPart; }, @@ -66,7 +66,7 @@ export class AbsoluteRouteRef implements ConcreteRoute { return this.config.title; } - createSubRoute( + createSubRoute( config: SubRouteConfig, ) { return new SubRouteRef(this, config); diff --git a/packages/core-api/src/routing/RouteRefRegistry.test.ts b/packages/core-api/src/routing/RouteRefRegistry.test.ts index 91d730de40..fa1ef584f1 100644 --- a/packages/core-api/src/routing/RouteRefRegistry.test.ts +++ b/packages/core-api/src/routing/RouteRefRegistry.test.ts @@ -75,12 +75,10 @@ describe('RouteRefRegistry', () => { expect(registry.resolveRoute([], [ref1])).toBe('/1'); expect(registry.resolveRoute([], [ref2])).toBe('/2'); - expect(registry.resolveRoute([], [ref2a.link({}), ref1])).toBe('/2/a/1'); - expect(registry.resolveRoute([], [ref2a.link({}), ref2])).toBe('/2/a/2'); - expect(registry.resolveRoute([ref2a.link({})], [ref2])).toBe('/2/a/2'); - expect(registry.resolveRoute([ref2a.link({}), ref1], [ref2])).toBe( - '/2/a/2', - ); + expect(registry.resolveRoute([], [ref2a.link(), ref1])).toBe('/2/a/1'); + expect(registry.resolveRoute([], [ref2a.link(), ref2])).toBe('/2/a/2'); + expect(registry.resolveRoute([ref2a.link()], [ref2])).toBe('/2/a/2'); + expect(registry.resolveRoute([ref2a.link(), ref1], [ref2])).toBe('/2/a/2'); expect(registry.resolveRoute([], [ref2b.link({ id: 'abc' }), ref1])).toBe( '/2/b/abc/1', );