Merge "Add hook for specifying which labels need to be set on reverts"

This commit is contained in:
Andrew Bonventre
2016-09-29 16:24:22 +00:00
committed by Gerrit Code Review
3 changed files with 43 additions and 0 deletions

View File

@@ -419,10 +419,22 @@
});
},
// TODO(rmistry): Redo this after
// https://bugs.chromium.org/p/gerrit/issues/detail?id=4671 is resolved.
_setLabelValuesOnRevert: function(newChangeId) {
var labels = this.$.jsAPI.getLabelValuesPostRevert(this.change);
if (labels) {
var url = '/changes/' + newChangeId + '/revisions/current/review';
this.$.restAPI.send(this.actions.revert.method, url, {labels: labels});
}
},
_handleResponse: function(action, response) {
return this.$.restAPI.getResponseObject(response).then(function(obj) {
switch (action.__key) {
case ChangeActions.REVERT:
this._setLabelValuesOnRevert(obj.change_id);
// Fall through.
case RevisionActions.CHERRYPICK:
page.show(this.changePath(obj._number));
break;

View File

@@ -21,6 +21,7 @@
SUBMIT_CHANGE: 'submitchange',
COMMENT: 'comment',
REVERT: 'revert',
POST_REVERT: 'postrevert',
};
var Element = {
@@ -160,6 +161,20 @@
return msg;
},
getLabelValuesPostRevert: function(change) {
var labels = {};
this._getEventCallbacks(EventType.POST_REVERT).forEach(
function(callback) {
try {
labels = callback(change);
} catch (err) {
console.error(err);
}
}
);
return labels;
},
_getEventCallbacks: function(type) {
return this._eventCallbacks[type] || [];
},

View File

@@ -121,6 +121,22 @@ limitations under the License.
assert.isTrue(errorStub.calledTwice);
});
test('postrevert event', function(done) {
function getLabels(c) {
return {'Code-Review': 1};
}
done();
assert.deepEqual(element.getLabelValuesPostRevert(null), {});
assert.equal(errorStub.callCount, 0);
plugin.on(element.EventType.POST_REVERT, throwErrFn);
plugin.on(element.EventType.POST_REVERT, getLabels);
assert.deepEqual(element.getLabelValuesPostRevert(null),
{'Code-Review': 1});
assert.isTrue(errorStub.calledOnce);
});
test('labelchange event', function(done) {
var testChange = {_number: 42};
plugin.on(element.EventType.LABEL_CHANGE, throwErrFn);