Merge "Make gr-change-view._currentRevision reflect patch range selection"

This commit is contained in:
Kasper Nilsson
2018-01-19 00:49:32 +00:00
committed by Gerrit Code Review
3 changed files with 50 additions and 7 deletions

View File

@@ -374,7 +374,7 @@ limitations under the License.
<div class="changeInfo-column changeMetadata hideOnMobileOverlay">
<gr-change-metadata
change="{{_change}}"
revision="[[_currentRevision]]"
revision="[[_selectedRevision]]"
commit-info="[[_commitInfo]]"
server-config="[[_serverConfig]]"
missing-labels="[[_missingLabels]]"
@@ -510,7 +510,7 @@ limitations under the License.
<gr-endpoint-decorator name="change-view-integration">
<gr-endpoint-param name="change" value="[[_change]]">
</gr-endpoint-param>
<gr-endpoint-param name="revision" value="[[_currentRevision]]">
<gr-endpoint-param name="revision" value="[[_selectedRevision]]">
</gr-endpoint-param>
</gr-endpoint-decorator>
<gr-messages-list id="messageList"

View File

@@ -152,7 +152,8 @@
type: Object,
},
_filesExpanded: String,
_currentRevision: Object,
_basePatchNum: String,
_selectedRevision: Object,
_currentRevisionActions: Object,
_allPatchSets: {
type: Array,
@@ -236,6 +237,7 @@
observers: [
'_labelsChanged(_change.labels.*)',
'_paramsAndChangeChanged(params, _change)',
'_patchNumChanged(_patchRange.patchNum)',
],
keyBindings: {
@@ -1004,7 +1006,6 @@
parseInt(lineHeight.slice(0, lineHeight.length - 2), 10);
this._change = change;
this._currentRevision = currentRevision;
if (!this._patchRange || !this._patchRange.patchNum ||
this.patchNumEquals(this._patchRange.patchNum,
currentRevision._number)) {
@@ -1015,7 +1016,13 @@
this._commitInfo = currentRevision.commit;
this._currentRevisionActions =
this._updateRebaseAction(currentRevision.actions);
// TODO: Fetch and process files.
this._selectedRevision = currentRevision;
// TODO: Fetch and process files.
} else {
this._selectedRevision =
Object.values(this._change.revisions).find(
revision => revision._number ===
parseInt(this._patchRange.patchNum, 10));
}
});
},
@@ -1371,5 +1378,17 @@
_computeCommitMessageKey(number, revision) {
return `c${number}_rev${revision}`;
},
_patchNumChanged(patchNumStr) {
if (!this._selectedRevision) {
return;
}
const patchNum = parseInt(patchNumStr, 10);
if (patchNum === this._selectedRevision._number) {
return;
}
this._selectedRevision = Object.values(this._change.revisions).find(
revision => revision._number === patchNum);
},
});
})();

View File

@@ -1437,10 +1437,34 @@ limitations under the License.
assert.isTrue(Gerrit.Nav.navigateToRelativeUrl.called);
});
test('_selectedRevision updates when patchNum is changed', () => {
const revision1 = {_number: 1, commit: {}};
const revision2 = {_number: 2, commit: {}};
sandbox.stub(element.$.restAPI, 'getChangeDetail').returns(
Promise.resolve({
revisions: {
aaa: revision1,
bbb: revision2,
},
labels: {},
actions: {},
current_revision: 'bbb',
change_id: 'loremipsumdolorsitamet',
}));
sandbox.stub(element, '_getEdit').returns(Promise.resolve());
element._patchRange = {patchNum: '2'};
return element._getChangeDetail().then(() => {
assert.strictEqual(element._selectedRevision, revision2);
element.set('_patchRange.patchNum', '1');
assert.strictEqual(element._selectedRevision, revision1);
});
});
suite('plugin endpoints', () => {
test('endpoint params', done => {
element._change = {labels: {}};
element._currentRevision = {};
element._selectedRevision = {};
let hookEl;
let plugin;
Gerrit.install(
@@ -1454,7 +1478,7 @@ limitations under the License.
flush(() => {
assert.strictEqual(hookEl.plugin, plugin);
assert.strictEqual(hookEl.change, element._change);
assert.strictEqual(hookEl.revision, element._currentRevision);
assert.strictEqual(hookEl.revision, element._selectedRevision);
done();
});
});