Merge "Make gr-change-view._currentRevision reflect patch range selection"
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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);
|
||||
},
|
||||
});
|
||||
})();
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user