From f7a90694bdb315633a42a55a139ed80ada4d493a Mon Sep 17 00:00:00 2001 From: Tobias Peters Date: Tue, 23 Jun 2015 21:37:57 +0200 Subject: [PATCH] unit test and adjustments for using optional parameter with a trailing slash --- index.js | 2 +- test/optional-parameter-test.js | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index e4c9aec..05a3656 100644 --- a/index.js +++ b/index.js @@ -102,7 +102,7 @@ function insertParameters(route, obj) { // massage optional parameter return str - .replace(/\(\/\)(\/|$)/g, '$1') + .replace(/\(\/\)/g, '') .replace(/[)(]/g, ''); } diff --git a/test/optional-parameter-test.js b/test/optional-parameter-test.js index 6b1054b..c8e1b4d 100644 --- a/test/optional-parameter-test.js +++ b/test/optional-parameter-test.js @@ -22,3 +22,14 @@ test('surrounded optional parameter', function(t) { t.end(); }); + +test('optional parameter with trailing slash', function(t) { + var page = docuri.route('(:id/)page'); + + t.deepEqual(page('page'), {}, 'parsed page returns empty object'); + t.deepEqual(page('mypage/page'), { id: 'mypage' }, 'parsed page has "id" set to "mypage"'); + t.equal(page(), 'page', 'stringified empty page results in "page"'); + t.equal(page({ id: 'mypage' }), 'mypage/page', 'stringified page results in "mypage/page"'); + + t.end(); +});