Merge "Do not navigate to Base vs X if X is Base and file is unchanged"
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts
index 4b283e8..90a9301 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts
@@ -1107,6 +1107,12 @@
if (!this._path) throw new Error('Missing this._path');
if (!this._patchRange) throw new Error('Missing this._patchRange');
+ if (this._patchRange.basePatchNum === ParentPatchSetNum) {
+ // file is unchanged between Base vs X
+ // hence should not show diff between Base vs Base
+ return;
+ }
+
this.dispatchEvent(
new CustomEvent('show-alert', {
detail: {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js
index 8fb9038..382cb2f 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js
@@ -129,8 +129,21 @@
basePatchNum: 'PARENT',
};
sinon.stub(element.$.commentAPI, 'loadAll').returns(Promise.resolve({
- _comments: {'/COMMIT_MSG': [{id: 'c1', line: 10, patch_set: 2,
- __commentSide: 'left', path: '/COMMIT_MSG'}]},
+ _comments: {'/COMMIT_MSG': [
+ {
+ id: 'c1',
+ line: 10,
+ patch_set: 2,
+ __commentSide: 'left',
+ path: '/COMMIT_MSG',
+ }, {
+ id: 'c3',
+ line: 10,
+ patch_set: 'PARENT',
+ __commentSide: 'left',
+ path: '/COMMIT_MSG',
+ },
+ ]},
computeCommentCount: () => {},
computeUnresolvedNum: () => {},
getPaths: () => {},
@@ -233,15 +246,7 @@
commentLink: true,
commentId: 'c1',
};
- element._patchRange = {
- patchNum: '2',
- };
sinon.stub(element.$.diffHost, '_commentsChanged');
- sinon.stub(element, '_getCommentsForPath').returns({
- left: [{id: 'c1', __commentSide: 'left', line: 10, path:
- '/COMMIT_MSG'}],
- right: [{id: 'c2', __commentSide: 'right', line: 11}],
- });
element._change = generateChange({revisionsCount: 11});
return element._paramsChanged.returnValues[0].then(() => {
assert.isTrue(diffNavStub.lastCall.calledWithExactly(
@@ -249,6 +254,30 @@
});
});
+ test('unchanged diff Base vs latest from comment does not navigate'
+ , () => {
+ const diffNavStub = sinon.stub(GerritNav, 'navigateToDiff');
+ sinon.stub(element.reporting, 'diffViewDisplayed');
+ sinon.stub(element, '_loadBlame');
+ sinon.stub(element.$.diffHost, 'reload').returns(Promise.resolve());
+ sinon.stub(element, '_isFileUnchanged').returns(true);
+ sinon.spy(element, '_paramsChanged');
+ sinon.stub(element, '_getChangeDetail').returns(Promise.resolve(
+ generateChange({revisionsCount: 11})));
+ element.params = {
+ view: GerritNav.View.DIFF,
+ changeNum: '42',
+ path: '/COMMIT_MSG',
+ commentLink: true,
+ commentId: 'c3',
+ };
+ sinon.stub(element.$.diffHost, '_commentsChanged');
+ element._change = generateChange({revisionsCount: 11});
+ return element._paramsChanged.returnValues[0].then(() => {
+ assert.isFalse(diffNavStub.called);
+ });
+ });
+
test('_isFileUnchanged', () => {
let diff = {
content: [