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