Only show the "Ready to Submit" chip with enabled submit action When a change has all required labels, but is not submittable for some other reason (such as unready dependency changes), the "Ready to Submit" chip can be misleading. To avoid this confusion, only show the chip when the "Submit" change action is enabled. Bug: Issue 8755 Change-Id: I7cd4472a52d9bf247f1d0ed5e90c89e95dbc3914
diff --git a/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior.html b/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior.html index ead9592..4be674f 100644 --- a/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior.html +++ b/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior.html
@@ -151,7 +151,7 @@ if (states.length || !opt_options) { return states; } // If no missing requirements, either active or ready to submit. - if (change.submittable) { + if (change.submittable && opt_options.submitEnabled) { states.push('Ready to submit'); } else { // Otherwise it is active.
diff --git a/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior_test.html b/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior_test.html index 06acd94..d3ce73c 100644 --- a/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior_test.html +++ b/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior_test.html
@@ -89,7 +89,7 @@ mergeable: true, }; let statuses = element.changeStatuses(change); - let statusString = element.changeStatusString(change); + const statusString = element.changeStatusString(change); assert.deepEqual(statuses, []); assert.equal(statusString, ''); @@ -98,11 +98,15 @@ {includeDerived: true}); assert.deepEqual(statuses, ['Active']); - // With no missing labels + // With no missing labels but no submitEnabled option. change.submittable = true; statuses = element.changeStatuses(change, {includeDerived: true}); - statusString = element.changeStatusString(change); + assert.deepEqual(statuses, ['Active']); + + // Without missing labels and enabled submit + statuses = element.changeStatuses(change, + {includeDerived: true, submitEnabled: true}); assert.deepEqual(statuses, ['Ready to submit']); change.mergeable = false; @@ -114,7 +118,7 @@ delete change.mergeable; change.submittable = true; statuses = element.changeStatuses(change, - {includeDerived: true, mergeable: true}); + {includeDerived: true, mergeable: true, submitEnabled: true}); assert.deepEqual(statuses, ['Ready to submit']); change.submittable = true;
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 e999911..35f23f1 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
@@ -225,6 +225,7 @@ observer: '_updateToggleContainerClass', }, _parentIsCurrent: Boolean, + _submitEnabled: Boolean, /** @type {?} */ _mergeable: { @@ -402,6 +403,7 @@ const options = { includeDerived: true, mergeable: !!mergeable, + submitEnabled: this._submitEnabled, }; return this.changeStatuses(change, options); }, @@ -1102,6 +1104,10 @@ } else { this._latestCommitMessage = null; } + + // Update the submit enabled based on current revision. + this._submitEnabled = this._isSubmitEnabled(currentRevision); + const lineHeight = getComputedStyle(this).lineHeight; // Slice returns a number as a string, convert to an int. @@ -1130,6 +1136,11 @@ }); }, + _isSubmitEnabled(currentRevision) { + return !!(currentRevision.actions && currentRevision.actions.submit && + currentRevision.actions.submit.enabled); + }, + _getEdit() { return this.$.restAPI.getChangeEdit(this._changeNum, true); },
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 f377277..6dd0fc3 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
@@ -540,6 +540,14 @@ assert.isTrue(element._parentIsCurrent); }); + test('_isSubmitEnabled', () => { + assert.isFalse(element._isSubmitEnabled({})); + assert.isFalse(element._isSubmitEnabled({actions: {}})); + assert.isFalse(element._isSubmitEnabled({actions: {submit: {}}})); + assert.isTrue(element._isSubmitEnabled( + {actions: {submit: {enabled: true}}})); + }); + test('_updateRebaseAction sets _parentIsCurrent on no rebase', () => { const currentRevisionActions = { cherrypick: {