From 98ca0915ef1f732e39384ff0e05ef59ab360a3ea Mon Sep 17 00:00:00 2001 From: Romain Lanz Date: Fri, 18 Jan 2019 23:52:35 +0100 Subject: [PATCH] feat(routing): prefix route's name via group --- src/Route/Group.js | 25 +++++++++++++++++++++++++ test/unit/route.spec.js | 7 +++++++ 2 files changed, 32 insertions(+) diff --git a/src/Route/Group.js b/src/Route/Group.js index 49391b62..1deedbb0 100644 --- a/src/Route/Group.js +++ b/src/Route/Group.js @@ -37,6 +37,31 @@ class RouteGroup extends Macroable { this._name = name } + /** + * Give a name to a group of routes. + * This will prefix all routes name. + * + * @method as + * + * @chainable + * + * @example + * ```js + * Route + * .group() + * .as('admin') + * ``` + */ + as (name) { + this._routes.forEach((route) => { + if (route.name.length > 0) { + route.name = `${name}.${route.name}` + } + }) + + return this + } + /** * Add middleware to a group of routes. * Also see @ref('Route/middleware'). diff --git a/test/unit/route.spec.js b/test/unit/route.spec.js index bcf570cf..b1c23003 100644 --- a/test/unit/route.spec.js +++ b/test/unit/route.spec.js @@ -267,6 +267,13 @@ test.group('Route | Group', () => { assert.deepEqual(group._routes, [route]) }) + test('prefix route\'s name via group', (assert) => { + const route = new Route('/', () => {}).as('test') + const group = new RouteGroup([route]) + group.as('admin') + assert.equal(route.name, 'admin.test') + }) + test('add middleware to route via group', (assert) => { const route = new Route('/', function () {}) const group = new RouteGroup([route])