Show error dialog if retry check fails
Change-Id: Iab5eda3b9e9a97b8b675ddba3a201eebc7548cac
diff --git a/gr-checks/gr-checks-view.js b/gr-checks/gr-checks-view.js
index c08926a..3ce8e08 100644
--- a/gr-checks/gr-checks-view.js
+++ b/gr-checks/gr-checks-view.js
@@ -228,18 +228,16 @@
_handleRetryCheck(e) {
const uuid = e.detail.uuid;
- const retryCheck = (change, revision, uuid) => {
- return this.pluginRestApi.post(
- '/changes/' + change + '/revisions/' + revision + '/checks/' + uuid
+ const retryCheck = (change, revision, uuid) => this.pluginRestApi.post(
+ '/changes/' + change + '/revisions/' + revision + '/checks/' + uuid
+ '/rerun'
- );
- };
+ );
retryCheck(this.change._number, this.revision._number, uuid).then(
res => {
this._fetchChecks(this.change, this.revision._number,
this.getChecks);
- }, e => {
- console.error(e);
+ }, error => {
+ this.fire('show-error', {message: error.message});
}
);
},
diff --git a/gr-checks/gr-checks-view_test.html b/gr-checks/gr-checks-view_test.html
index e377390..41f405a 100644
--- a/gr-checks/gr-checks-view_test.html
+++ b/gr-checks/gr-checks-view_test.html
@@ -10,6 +10,7 @@
<title>gr-checks-item</title>
<link rel="import" href="gr-checks-view.html">
+<link rel="import" href="gr-checks-item.html">
<!-- Gr-overlay does not exist in the test framework
It is expected to be provided by Gerrit core -->
@@ -21,6 +22,7 @@
Polymer({
is: 'gr-overlay',
refit() {},
+ open() {},
});
});
</script>
@@ -117,7 +119,7 @@
let fetchJSONSpy;
let getAccountCapabilitiesSpy;
let getAccountCapabilitiesResolve;
- let postSpy;
+ let postSpy, postResolve, postReject;
setup(done => {
sandbox = sinon.sandbox.create();
@@ -144,11 +146,14 @@
getAccountSpy.returns(getAccountPromise);
postSpy = sinon.stub();
- const postPromise = new Promise();
+ const postPromise = new Promise((resolve, reject) => {
+ postResolve = resolve;
+ postReject = reject;
+ });
postSpy.returns(postPromise);
fetchJSONSpy = sinon.stub();
- const fetchJSONPromise = new Promise();
+ const fetchJSONPromise = new Promise(() => {});
fetchJSONSpy.returns(fetchJSONPromise);
getAccountCapabilitiesSpy = sinon.stub();
@@ -338,6 +343,21 @@
assert.lengthOf(tbody.querySelectorAll('gr-checks-item'), 4);
});
+ test('retry fires show-error event', done => {
+ postReject(new Error('random error'));
+ const fireStub = sandbox.stub(element, 'fire');
+ Polymer.dom.flush();
+ const checksItem = element.querySelectorAll
+ ('table > tbody > gr-checks-item')[0];
+ const reRun = checksItem.querySelectorAll('td')[7];
+ const reRunButton = reRun.querySelector('gr-button');
+ reRunButton.click();
+ flush(() => {
+ assert(fireStub.calledWith('show-error'));
+ done();
+ });
+ });
+
suite('message is rendered', () => {
setup(done => {
element._checks = [CHECK1, CHECK2];