Account for 'value' when parsing votable labels
In addition to permitted_voting_range, user may vote on a label if the
label has 'value' property.
Bug: b/77913572
Change-Id: I0db60a8e1dbf92c83e443c600f8b1e6c0fcbbf94
diff --git a/polygerrit-ui/app/elements/change/gr-reviewer-list/gr-reviewer-list.js b/polygerrit-ui/app/elements/change/gr-reviewer-list/gr-reviewer-list.js
index aa3ddea..ab1f55e 100644
--- a/polygerrit-ui/app/elements/change/gr-reviewer-list/gr-reviewer-list.js
+++ b/polygerrit-ui/app/elements/change/gr-reviewer-list/gr-reviewer-list.js
@@ -126,10 +126,16 @@
if (!change.labels[label].all) { return NaN; }
const detailed = change.labels[label].all.filter(
({_account_id}) => reviewer._account_id === _account_id).pop();
- if (!detailed || !detailed.hasOwnProperty('permitted_voting_range')) {
+ if (!detailed) {
return NaN;
}
- return detailed.permitted_voting_range.max;
+ if (detailed.hasOwnProperty('permitted_voting_range')) {
+ return detailed.permitted_voting_range.max;
+ } else if (detailed.hasOwnProperty('value')) {
+ // If preset, user can vote on the label.
+ return 0;
+ }
+ return NaN;
},
_computeReviewerTooltip(reviewer, change) {
diff --git a/polygerrit-ui/app/elements/change/gr-reviewer-list/gr-reviewer-list_test.html b/polygerrit-ui/app/elements/change/gr-reviewer-list/gr-reviewer-list_test.html
index 4e085d0..1a406c9 100644
--- a/polygerrit-ui/app/elements/change/gr-reviewer-list/gr-reviewer-list_test.html
+++ b/polygerrit-ui/app/elements/change/gr-reviewer-list/gr-reviewer-list_test.html
@@ -206,7 +206,6 @@
CC: reviewers,
},
};
- flushAsynchronousOperations();
assert.equal(element._hiddenReviewerCount, 0);
assert.equal(element._displayedReviewers.length, 6);
assert.equal(element._reviewers.length, 6);
@@ -230,7 +229,6 @@
CC: reviewers,
},
};
- flushAsynchronousOperations();
assert.equal(element._hiddenReviewerCount, 2);
assert.equal(element._displayedReviewers.length, 5);
assert.equal(element._reviewers.length, 7);
@@ -254,7 +252,6 @@
CC: reviewers,
},
};
- flushAsynchronousOperations();
assert.equal(element._hiddenReviewerCount, 0);
assert.equal(element._displayedReviewers.length, 7);
assert.equal(element._reviewers.length, 7);
@@ -278,14 +275,13 @@
CC: reviewers,
},
};
- flushAsynchronousOperations();
assert.equal(element._hiddenReviewerCount, 95);
assert.equal(element._displayedReviewers.length, 5);
assert.equal(element._reviewers.length, 100);
assert.isFalse(element.$$('.hiddenReviewers').hidden);
MockInteractions.tap(element.$$('.hiddenReviewers'));
- flushAsynchronousOperations();
+
assert.equal(element._hiddenReviewerCount, 0);
assert.equal(element._displayedReviewers.length, 100);
assert.equal(element._reviewers.length, 100);
@@ -303,7 +299,7 @@
{_account_id: 7, permitted_voting_range: {max: 1}}],
},
FooBar: {
- all: [{_account_id: 7, permitted_voting_range: {max: 0}}],
+ all: [{_account_id: 7, value: 0}],
},
},
permitted_labels: {
@@ -324,23 +320,13 @@
test('fails gracefully when all is not included', () => {
const change = {
- labels: {
- Foo: {},
- Bar: {},
- FooBar: {},
- },
+ labels: {Foo: {}},
permitted_labels: {
Foo: ['-1', ' 0', '+1', '+2'],
- Bar: ['-1', ' 0', '+1', '+2'],
- FooBar: ['-1', ' 0'],
},
};
assert.strictEqual(
element._computeReviewerTooltip({_account_id: 1}, change), '');
- assert.strictEqual(
- element._computeReviewerTooltip({_account_id: 7}, change), '');
- assert.strictEqual(
- element._computeReviewerTooltip({_account_id: 2}, change), '');
});
});
</script>