Do not load mergeability for closed changes

Change I01d03de9f2 disabled the mergeability response in change details,
and replaced it with a request to the mergeability API. However, the API
returns HTTP 409 when asked about closed changes, resulting in status
chips never appearing for closed changes.

With this change, closed changes are treated as mergeable, and the
unsatisfiable mergeability request is never made.

Change-Id: I581cd775d156b724ad6e1ae6e4082284f8accffe
This commit is contained in:
Wyatt Allen
2018-01-23 17:08:18 -08:00
parent c78a1e732d
commit b61d6060ea
2 changed files with 45 additions and 0 deletions

View File

@@ -1152,6 +1152,15 @@
},
_getMergeability() {
// If the change is closed, it is not mergeable. Note: already merged
// changes are obviously not mergeable, but the mergeability API will not
// answer for abandoned changes.
if (this._change.status === this.ChangeStatus.MERGED ||
this._change.status === this.ChangeStatus.ABANDONED) {
this._mergeable = false;
return Promise.resolve();
}
this._mergeable = null;
return this.$.restAPI.getMergeable(this._changeNum).then(m => {
this._mergeable = m.mergeable;

View File

@@ -1541,5 +1541,41 @@ limitations under the License.
});
});
});
suite('_getMergeability', () => {
let getMergeableStub;
setup(() => {
element._change = {labels: {}};
getMergeableStub = sandbox.stub(element.$.restAPI, 'getMergeable')
.returns(Promise.resolve({mergeable: true}));
});
test('merged change', () => {
element._mergeable = null;
element._change.status = element.ChangeStatus.MERGED;
return element._getMergeability().then(() => {
assert.isFalse(element._mergeable);
assert.isFalse(getMergeableStub.called);
});
});
test('abandoned change', () => {
element._mergeable = null;
element._change.status = element.ChangeStatus.ABANDONED;
return element._getMergeability().then(() => {
assert.isFalse(element._mergeable);
assert.isFalse(getMergeableStub.called);
});
});
test('open change', () => {
element._mergeable = null;
return element._getMergeability().then(() => {
assert.isTrue(element._mergeable);
assert.isTrue(getMergeableStub.called);
});
});
});
});
</script>