Merge "Make sure user logged in before auto opening revert popup"
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
index 448d490..6eaf4ff 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
@@ -415,9 +415,15 @@
},
_maybeShowRevertDialog: function() {
- if (!!this._getUrlParameter('revert')) {
- this.$.actions.showRevertDialog();
- }
+ this._getLoggedIn().then(function(loggedIn) {
+ if (!loggedIn || this._change.status !== this.ChangeStatus.MERGED) {
+ // Do not display dialog if not logged-in or the change is not merged.
+ return;
+ }
+ if (!!this._getUrlParameter('revert')) {
+ this.$.actions.showRevertDialog();
+ }
+ }.bind(this));
},
_maybeShowReplyDialog: function() {
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html
index 6ced7ec..b49f05d 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html
@@ -462,25 +462,41 @@
locationStub.restore();
});
- test('revert dialog opened with revert param', function() {
- var urlParamStub = sinon.stub(element, '_getUrlParameter');
-
- var showRevertDialogCalled;
- sinon.stub(element.$.actions, 'showRevertDialog', function() {
- showRevertDialogCalled = true;
+ test('revert dialog opened with revert param', function(done) {
+ sinon.stub(element.$.restAPI, 'getLoggedIn', function() {
+ return Promise.resolve(true);
});
- urlParamStub.returns(true);
- showRevertDialogCalled = false;
- element._maybeShowRevertDialog();
- assert.isTrue(showRevertDialogCalled);
+ element._patchRange = {
+ basePatchNum: 'PARENT',
+ patchNum: 2,
+ };
+ element._change = {
+ change_id: 'Iad9dc96274af6946f3632be53b106ef80f7ba6ca',
+ revisions: {
+ rev1: {_number: 1},
+ },
+ current_revision: 'rev1',
+ status: element.ChangeStatus.MERGED,
+ labels: {},
+ actions: {},
+ };
- urlParamStub.returns(false);
- showRevertDialogCalled = false;
- element._maybeShowRevertDialog();
- assert.isFalse(showRevertDialogCalled);
+ var urlParamStub = sinon.stub(element, '_getUrlParameter',
+ function(param) {
+ assert.equal(param, 'revert');
+ urlParamStub.restore();
+ element.$.restAPI.getLoggedIn.restore();
+ return param;
+ });
- urlParamStub.restore();
+ var revertDialogStub = sinon.stub(element.$.actions, 'showRevertDialog',
+ function() {
+ revertDialogStub.restore();
+ done();
+ });
+
+ element._maybeShowRevertDialog();
});
suite('scroll related tests', function() {