diff options
-rw-r--r-- | polygerrit-ui/app/elements/core/gr-router/gr-router.js | 9 | ||||
-rw-r--r-- | polygerrit-ui/app/elements/core/gr-router/gr-router_test.html | 23 |
2 files changed, 29 insertions, 3 deletions
diff --git a/polygerrit-ui/app/elements/core/gr-router/gr-router.js b/polygerrit-ui/app/elements/core/gr-router/gr-router.js index e861f2ef0c..ae8162f7c0 100644 --- a/polygerrit-ui/app/elements/core/gr-router/gr-router.js +++ b/polygerrit-ui/app/elements/core/gr-router/gr-router.js @@ -1367,6 +1367,15 @@ class GrRouter extends mixinBehaviors( [ queryMap: ctx.queryMap, }; + // We do not want to allow "edit" to be used as a + // patch number. Instead redirect to ,edit. + if (ctx.params[4] === 'edit' && !ctx.params[6]) { + params.basePatchNum = undefined; + params.edit = true; + this._redirect(this._generateUrl(params)); + return; + } + this.$.reporting.setRepoName(params.project); this._redirectOrNavigate(params); } diff --git a/polygerrit-ui/app/elements/core/gr-router/gr-router_test.html b/polygerrit-ui/app/elements/core/gr-router/gr-router_test.html index 2b2db0b3a1..0e82a543a8 100644 --- a/polygerrit-ui/app/elements/core/gr-router/gr-router_test.html +++ b/polygerrit-ui/app/elements/core/gr-router/gr-router_test.html @@ -1428,16 +1428,16 @@ suite('gr-router tests', () => { suite('_handleChangeRoute', () => { let normalizeRangeStub; - function makeParams(path, hash) { + function makeParams(path, hash, baseNum, patchNum) { return { params: [ 'foo/bar', // 0 Project 1234, // 1 Change number null, // 2 Unused null, // 3 Unused - 4, // 4 Base patch number + baseNum ? baseNum : 4, // 4 Base patch number null, // 5 Unused - 7, // 6 Patch number + patchNum ? patchNum : 7, // 6 Patch number ], queryMap: new Map(), }; @@ -1475,6 +1475,23 @@ suite('gr-router tests', () => { assert.isFalse(redirectStub.called); assert.isTrue(normalizeRangeStub.called); }); + + test('redirect due to patchNum being an edit', () => { + normalizeRangeStub.returns(true); + const ctx = makeParams(null, ''); + element._handleChangeRoute(ctx, undefined, 'edit', false); + assert.isTrue(normalizeRangeStub.called); + assert.isFalse(setParamsStub.called); + assert.isTrue(redirectStub.calledOnce); + + const params = { + view: GerritNav.View.CHANGE, + changeNum: '1234', + project: 'test', + edit: true, + }; + assert.equal(element._generateUrl(params), '/c/test/+/1234,edit'); + }); }); suite('_handleDiffRoute', () => { |