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];