Merge "Add reviewers to attention set when replying to WIP changes"
diff --git a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.ts b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.ts
index c856f68..ca3161f 100644
--- a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.ts
+++ b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.ts
@@ -991,7 +991,8 @@
const notIsReviewerAndHasDraftOrLabel = (r: AccountInfo) =>
!(r._account_id === currentUser._account_id && (hasDrafts || hasVote));
reviewers.base
- .filter(r => r._pendingAdd && r._account_id)
+ .filter(r => r._account_id)
+ .filter(r => r._pendingAdd || (this.canBeStarted && isOwner))
.filter(notIsReviewerAndHasDraftOrLabel)
.forEach(r => newAttention.add(r._account_id!));
// Add owner and uploader, if someone else replies.
diff --git a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.js b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.js
index 4547e53..2b92ca6 100644
--- a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.js
+++ b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.js
@@ -314,6 +314,39 @@
assert.sameMembers([...element._newAttentionSet], [2, 5]);
});
+ test('computeNewAttention when sending wip change for review', () => {
+ const reviewers = {base: [
+ {_account_id: 2},
+ {_account_id: 3},
+ ]};
+ const change = {
+ owner: {_account_id: 1},
+ status: 'NEW',
+ attention_set: {},
+ };
+ element.change = change;
+ element._reviewers = reviewers.base;
+ flush();
+
+ // For an active change there is no reason to add anyone to the set.
+ let user = {_account_id: 1};
+ element._computeNewAttention(user, reviewers, [], change, [], false);
+ assert.sameMembers([...element._newAttentionSet], []);
+
+ // If the change is "work in progress" and the owner sends a reply, then
+ // add all reviewers.
+ element.canBeStarted = true;
+ flush();
+ user = {_account_id: 1};
+ element._computeNewAttention(user, reviewers, [], change, [], false);
+ assert.sameMembers([...element._newAttentionSet], [2, 3]);
+
+ // ... but not when someone else replies.
+ user = {_account_id: 4};
+ element._computeNewAttention(user, reviewers, [], change, [], false);
+ assert.sameMembers([...element._newAttentionSet], []);
+ });
+
test('computeNewAttentionAccounts', () => {
element._reviewers = [
{_account_id: 123, display_name: 'Ernie'},