Merge "Show Code Review quick approve button with missing labels"
diff --git a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts
index 42876d9..4ae3c68 100644
--- a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts
@@ -171,7 +171,7 @@
method: HttpMethod.POST,
};
-function isQuckApproveAction(
+function isQuickApproveAction(
action: UIActionInfo
): action is QuickApproveUIActionInfo {
return (action as QuickApproveUIActionInfo).key === QUICK_APPROVE_ACTION.key;
@@ -943,9 +943,10 @@
const status = this._getLabelStatus(labelInfo);
if (status === LabelStatus.NEED) {
if (result) {
- // More than one label is missing, so it's unclear which to quick
- // approve, return null;
- return null;
+ // More than one label is missing, so check if Code Review can be
+ // given
+ result = null;
+ break;
}
result = label;
} else if (
@@ -999,7 +1000,7 @@
throw new Error('_topLevelSecondaryActions must be set');
}
this._topLevelSecondaryActions = this._topLevelSecondaryActions.filter(
- sa => !isQuckApproveAction(sa)
+ sa => !isQuickApproveAction(sa)
);
this._hideQuickApproveAction = true;
}
@@ -1271,7 +1272,7 @@
this._showActionDialog(this.$.confirmAbandonDialog);
break;
case QUICK_APPROVE_ACTION.key: {
- const action = this._allActionValues.find(isQuckApproveAction);
+ const action = this._allActionValues.find(isQuickApproveAction);
if (!action) {
return;
}
diff --git a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.js b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.js
index 8324fdd..c193e60 100644
--- a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.js
+++ b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.js
@@ -1629,23 +1629,52 @@
assert.deepEqual(payload.labels, {foo: 1});
});
- test('not added when multiple labels are required', () => {
+ test('not added when multiple labels are required without code review',
+ () => {
+ element.change = {
+ current_revision: 'abc1234',
+ labels: {
+ foo: {values: {}},
+ bar: {values: {}},
+ },
+ permitted_labels: {
+ foo: [' 0', '+1'],
+ bar: [' 0', '+1', '+2'],
+ },
+ };
+ flush();
+ const approveButton =
+ element.shadowRoot
+ .querySelector('gr-button[data-action-key=\'review\']');
+ assert.isNull(approveButton);
+ });
+
+ test('code review shown with multiple missing approval', () => {
element.change = {
current_revision: 'abc1234',
labels: {
- foo: {values: {}},
- bar: {values: {}},
+ 'foo': {values: {}},
+ 'bar': {values: {}},
+ 'Code-Review': {
+ approved: {},
+ values: {
+ ' 0': '',
+ '+1': '',
+ '+2': '',
+ },
+ },
},
permitted_labels: {
- foo: [' 0', '+1'],
- bar: [' 0', '+1', '+2'],
+ 'foo': [' 0', '+1'],
+ 'bar': [' 0', '+1', '+2'],
+ 'Code-Review': [' 0', '+1', '+2'],
},
};
flush();
const approveButton =
element.shadowRoot
.querySelector('gr-button[data-action-key=\'review\']');
- assert.isNull(approveButton);
+ assert.isOk(approveButton);
});
test('button label for missing approval', () => {