Merge "Always use REVIEW state in ReviewDb"
This commit is contained in:
commit
93a4c8e42d
@ -565,9 +565,7 @@ public class ChangeIT extends AbstractDaemonTest {
|
|||||||
// in NoteDb. When NoteDb is disabled adding a reviewer results in a dummy 0
|
// in NoteDb. When NoteDb is disabled adding a reviewer results in a dummy 0
|
||||||
// approval on the change which is treated as CC when the ChangeInfo is
|
// approval on the change which is treated as CC when the ChangeInfo is
|
||||||
// created.
|
// created.
|
||||||
Collection<AccountInfo> reviewers = NoteDbMode.readWrite()
|
Collection<AccountInfo> reviewers = c.reviewers.get(REVIEWER);
|
||||||
? c.reviewers.get(REVIEWER)
|
|
||||||
: c.reviewers.get(CC);
|
|
||||||
assertThat(reviewers).isNotNull();
|
assertThat(reviewers).isNotNull();
|
||||||
assertThat(reviewers).hasSize(1);
|
assertThat(reviewers).hasSize(1);
|
||||||
assertThat(reviewers.iterator().next()._accountId)
|
assertThat(reviewers.iterator().next()._accountId)
|
||||||
@ -604,9 +602,7 @@ public class ChangeIT extends AbstractDaemonTest {
|
|||||||
ChangeInfo c = gApi.changes()
|
ChangeInfo c = gApi.changes()
|
||||||
.id(r.getChangeId())
|
.id(r.getChangeId())
|
||||||
.get();
|
.get();
|
||||||
Collection<AccountInfo> reviewers = NoteDbMode.readWrite()
|
Collection<AccountInfo> reviewers = c.reviewers.get(REVIEWER);
|
||||||
? c.reviewers.get(REVIEWER)
|
|
||||||
: c.reviewers.get(CC);
|
|
||||||
assertThat(reviewers).isNotNull();
|
assertThat(reviewers).isNotNull();
|
||||||
assertThat(reviewers).hasSize(1);
|
assertThat(reviewers).hasSize(1);
|
||||||
assertThat(reviewers.iterator().next()._accountId)
|
assertThat(reviewers.iterator().next()._accountId)
|
||||||
@ -649,9 +645,6 @@ public class ChangeIT extends AbstractDaemonTest {
|
|||||||
.id(r.getChangeId())
|
.id(r.getChangeId())
|
||||||
.get();
|
.get();
|
||||||
reviewers = c.reviewers.get(REVIEWER);
|
reviewers = c.reviewers.get(REVIEWER);
|
||||||
if (NoteDbMode.readWrite()) {
|
|
||||||
// When NoteDb is enabled adding a reviewer records that user as reviewer
|
|
||||||
// in NoteDb.
|
|
||||||
assertThat(reviewers).hasSize(2);
|
assertThat(reviewers).hasSize(2);
|
||||||
Iterator<AccountInfo> reviewerIt = reviewers.iterator();
|
Iterator<AccountInfo> reviewerIt = reviewers.iterator();
|
||||||
assertThat(reviewerIt.next()._accountId)
|
assertThat(reviewerIt.next()._accountId)
|
||||||
@ -659,17 +652,6 @@ public class ChangeIT extends AbstractDaemonTest {
|
|||||||
assertThat(reviewerIt.next()._accountId)
|
assertThat(reviewerIt.next()._accountId)
|
||||||
.isEqualTo(user.getId().get());
|
.isEqualTo(user.getId().get());
|
||||||
assertThat(c.reviewers).doesNotContainKey(CC);
|
assertThat(c.reviewers).doesNotContainKey(CC);
|
||||||
} else {
|
|
||||||
// When NoteDb is disabled adding a reviewer results in a dummy 0 approval
|
|
||||||
// on the change which is treated as CC when the ChangeInfo is created.
|
|
||||||
assertThat(reviewers).hasSize(1);
|
|
||||||
assertThat(reviewers.iterator().next()._accountId)
|
|
||||||
.isEqualTo(admin.getId().get());
|
|
||||||
Collection<AccountInfo> ccs = c.reviewers.get(CC);
|
|
||||||
assertThat(ccs).hasSize(1);
|
|
||||||
assertThat(ccs.iterator().next()._accountId)
|
|
||||||
.isEqualTo(user.getId().get());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -880,21 +862,9 @@ public class ChangeIT extends AbstractDaemonTest {
|
|||||||
assertThat(message.author._accountId).isEqualTo(admin.getId().get());
|
assertThat(message.author._accountId).isEqualTo(admin.getId().get());
|
||||||
assertThat(message.message).isEqualTo(
|
assertThat(message.message).isEqualTo(
|
||||||
"Removed Code-Review+1 by User <user@example.com>\n");
|
"Removed Code-Review+1 by User <user@example.com>\n");
|
||||||
if (NoteDbMode.readWrite()) {
|
|
||||||
// When NoteDb is enabled each reviewer is explicitly recorded in the
|
|
||||||
// NoteDb and this record stays even when all votes of that user have been
|
|
||||||
// deleted.
|
|
||||||
assertThat(getReviewers(c.reviewers.get(REVIEWER)))
|
assertThat(getReviewers(c.reviewers.get(REVIEWER)))
|
||||||
.containsExactlyElementsIn(
|
.containsExactlyElementsIn(
|
||||||
ImmutableSet.of(admin.getId(), user.getId()));
|
ImmutableSet.of(admin.getId(), user.getId()));
|
||||||
} else {
|
|
||||||
// When NoteDb is disabled users that have only dummy 0 approvals on the
|
|
||||||
// change are returned as CC and not as REVIEWER.
|
|
||||||
assertThat(getReviewers(c.reviewers.get(REVIEWER)))
|
|
||||||
.containsExactlyElementsIn(ImmutableSet.of(admin.getId()));
|
|
||||||
assertThat(getReviewers(c.reviewers.get(CC)))
|
|
||||||
.containsExactlyElementsIn(ImmutableSet.of(user.getId()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -981,16 +951,9 @@ public class ChangeIT extends AbstractDaemonTest {
|
|||||||
.id(changeId)
|
.id(changeId)
|
||||||
.addReviewer(in);
|
.addReviewer(in);
|
||||||
c = gApi.changes().id(changeId).get();
|
c = gApi.changes().id(changeId).get();
|
||||||
if (NoteDbMode.readWrite()) {
|
|
||||||
assertThat(getReviewers(c.reviewers.get(REVIEWER)))
|
assertThat(getReviewers(c.reviewers.get(REVIEWER)))
|
||||||
.containsExactlyElementsIn(ImmutableSet.of(
|
.containsExactlyElementsIn(ImmutableSet.of(
|
||||||
admin.getId(), user.getId()));
|
admin.getId(), user.getId()));
|
||||||
} else {
|
|
||||||
assertThat(getReviewers(c.reviewers.get(REVIEWER)))
|
|
||||||
.containsExactlyElementsIn(ImmutableSet.of(admin.getId()));
|
|
||||||
assertThat(getReviewers(c.reviewers.get(CC)))
|
|
||||||
.containsExactlyElementsIn(ImmutableSet.of(user.getId()));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Approve the change as user, then remove the approval
|
// Approve the change as user, then remove the approval
|
||||||
// (only to confirm that the user does have Code-Review+2 permission)
|
// (only to confirm that the user does have Code-Review+2 permission)
|
||||||
@ -1013,16 +976,9 @@ public class ChangeIT extends AbstractDaemonTest {
|
|||||||
|
|
||||||
// User should still be on the change
|
// User should still be on the change
|
||||||
c = gApi.changes().id(changeId).get();
|
c = gApi.changes().id(changeId).get();
|
||||||
if (NoteDbMode.readWrite()) {
|
|
||||||
assertThat(getReviewers(c.reviewers.get(REVIEWER)))
|
assertThat(getReviewers(c.reviewers.get(REVIEWER)))
|
||||||
.containsExactlyElementsIn(ImmutableSet.of(
|
.containsExactlyElementsIn(ImmutableSet.of(
|
||||||
admin.getId(), user.getId()));
|
admin.getId(), user.getId()));
|
||||||
} else {
|
|
||||||
assertThat(getReviewers(c.reviewers.get(REVIEWER)))
|
|
||||||
.containsExactlyElementsIn(ImmutableSet.of(admin.getId()));
|
|
||||||
assertThat(getReviewers(c.reviewers.get(CC)))
|
|
||||||
.containsExactlyElementsIn(ImmutableSet.of(user.getId()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -100,8 +100,7 @@ public class ChangeReviewersIT extends AbstractDaemonTest {
|
|||||||
|
|
||||||
// Verify that group members were added as reviewers.
|
// Verify that group members were added as reviewers.
|
||||||
ChangeInfo c = gApi.changes().id(r.getChangeId()).get();
|
ChangeInfo c = gApi.changes().id(r.getChangeId()).get();
|
||||||
assertReviewers(c, notesMigration.readChanges() ? REVIEWER : CC,
|
assertReviewers(c, REVIEWER, users.subList(0, mediumGroupSize));
|
||||||
users.subList(0, mediumGroupSize));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -128,7 +127,7 @@ public class ChangeReviewersIT extends AbstractDaemonTest {
|
|||||||
assertThat(result.reviewers).hasSize(1);
|
assertThat(result.reviewers).hasSize(1);
|
||||||
AccountInfo ai = result.reviewers.get(0);
|
AccountInfo ai = result.reviewers.get(0);
|
||||||
assertThat(ai._accountId).isEqualTo(user.id.get());
|
assertThat(ai._accountId).isEqualTo(user.id.get());
|
||||||
assertReviewers(c, CC, user);
|
assertReviewers(c, REVIEWER, user);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify email was sent to CCed account.
|
// Verify email was sent to CCed account.
|
||||||
@ -174,7 +173,12 @@ public class ChangeReviewersIT extends AbstractDaemonTest {
|
|||||||
assertThat(result.ccs).isNull();
|
assertThat(result.ccs).isNull();
|
||||||
}
|
}
|
||||||
ChangeInfo c = gApi.changes().id(r.getChangeId()).get();
|
ChangeInfo c = gApi.changes().id(r.getChangeId()).get();
|
||||||
|
if (notesMigration.readChanges()) {
|
||||||
assertReviewers(c, CC, firstUsers);
|
assertReviewers(c, CC, firstUsers);
|
||||||
|
} else {
|
||||||
|
assertReviewers(c, REVIEWER, firstUsers);
|
||||||
|
assertReviewers(c, CC);
|
||||||
|
}
|
||||||
|
|
||||||
// Verify emails were sent to each of the group's accounts.
|
// Verify emails were sent to each of the group's accounts.
|
||||||
List<Message> messages = sender.getMessages();
|
List<Message> messages = sender.getMessages();
|
||||||
@ -212,7 +216,7 @@ public class ChangeReviewersIT extends AbstractDaemonTest {
|
|||||||
List<TestAccount> expectedUsers = new ArrayList<>(users.size() + 2);
|
List<TestAccount> expectedUsers = new ArrayList<>(users.size() + 2);
|
||||||
expectedUsers.addAll(users);
|
expectedUsers.addAll(users);
|
||||||
expectedUsers.add(reviewer);
|
expectedUsers.add(reviewer);
|
||||||
assertReviewers(c, CC, expectedUsers);
|
assertReviewers(c, REVIEWER, expectedUsers);
|
||||||
}
|
}
|
||||||
|
|
||||||
messages = sender.getMessages();
|
messages = sender.getMessages();
|
||||||
@ -222,9 +226,12 @@ public class ChangeReviewersIT extends AbstractDaemonTest {
|
|||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
expectedAddresses.add(users.get(users.size() - i - 1).emailAddress);
|
expectedAddresses.add(users.get(users.size() - i - 1).emailAddress);
|
||||||
}
|
}
|
||||||
if (notesMigration.readChanges()) {
|
if (!notesMigration.readChanges()) {
|
||||||
expectedAddresses.add(reviewer.emailAddress);
|
for (int i = 0; i < 3; i++) {
|
||||||
|
expectedAddresses.add(users.get(i).emailAddress);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
expectedAddresses.add(reviewer.emailAddress);
|
||||||
assertThat(m.rcpt()).containsExactlyElementsIn(expectedAddresses);
|
assertThat(m.rcpt()).containsExactlyElementsIn(expectedAddresses);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -237,20 +244,19 @@ public class ChangeReviewersIT extends AbstractDaemonTest {
|
|||||||
in.state = CC;
|
in.state = CC;
|
||||||
addReviewer(changeId, in);
|
addReviewer(changeId, in);
|
||||||
ChangeInfo c = gApi.changes().id(r.getChangeId()).get();
|
ChangeInfo c = gApi.changes().id(r.getChangeId()).get();
|
||||||
|
if (notesMigration.readChanges()) {
|
||||||
assertReviewers(c, REVIEWER);
|
assertReviewers(c, REVIEWER);
|
||||||
assertReviewers(c, CC, user);
|
assertReviewers(c, CC, user);
|
||||||
|
} else {
|
||||||
|
assertReviewers(c, REVIEWER, user);
|
||||||
|
assertReviewers(c, CC);
|
||||||
|
}
|
||||||
|
|
||||||
in.state = REVIEWER;
|
in.state = REVIEWER;
|
||||||
addReviewer(changeId, in);
|
addReviewer(changeId, in);
|
||||||
c = gApi.changes().id(r.getChangeId()).get();
|
c = gApi.changes().id(r.getChangeId()).get();
|
||||||
if (notesMigration.readChanges()) {
|
|
||||||
assertReviewers(c, REVIEWER, user);
|
assertReviewers(c, REVIEWER, user);
|
||||||
assertReviewers(c, CC);
|
assertReviewers(c, CC);
|
||||||
} else {
|
|
||||||
// If NoteDb not enabled, should have had no effect.
|
|
||||||
assertReviewers(c, REVIEWER);
|
|
||||||
assertReviewers(c, CC, user);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -275,9 +281,9 @@ public class ChangeReviewersIT extends AbstractDaemonTest {
|
|||||||
assertReviewers(c, REVIEWER, admin, user);
|
assertReviewers(c, REVIEWER, admin, user);
|
||||||
assertReviewers(c, CC, observer);
|
assertReviewers(c, CC, observer);
|
||||||
} else {
|
} else {
|
||||||
// In legacy mode, change owner should be the only reviewer.
|
// In legacy mode, everyone should be a reviewer.
|
||||||
assertReviewers(c, REVIEWER, admin);
|
assertReviewers(c, REVIEWER, admin, user, observer);
|
||||||
assertReviewers(c, CC, user, observer);
|
assertReviewers(c, CC);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify emails were sent to added reviewers.
|
// Verify emails were sent to added reviewers.
|
||||||
@ -285,7 +291,12 @@ public class ChangeReviewersIT extends AbstractDaemonTest {
|
|||||||
assertThat(messages).hasSize(3);
|
assertThat(messages).hasSize(3);
|
||||||
// First email to user.
|
// First email to user.
|
||||||
Message m = messages.get(0);
|
Message m = messages.get(0);
|
||||||
|
if (notesMigration.readChanges()) {
|
||||||
assertThat(m.rcpt()).containsExactly(user.emailAddress);
|
assertThat(m.rcpt()).containsExactly(user.emailAddress);
|
||||||
|
} else {
|
||||||
|
assertThat(m.rcpt()).containsExactly(
|
||||||
|
user.emailAddress, observer.emailAddress);
|
||||||
|
}
|
||||||
assertThat(m.body()).contains("Hello " + user.fullName + ",\n");
|
assertThat(m.body()).contains("Hello " + user.fullName + ",\n");
|
||||||
assertThat(m.body()).contains("I'd like you to do a code review.");
|
assertThat(m.body()).contains("I'd like you to do a code review.");
|
||||||
assertThat(m.body()).contains("Change subject: " + PushOneCommit.SUBJECT + "\n");
|
assertThat(m.body()).contains("Change subject: " + PushOneCommit.SUBJECT + "\n");
|
||||||
@ -295,7 +306,7 @@ public class ChangeReviewersIT extends AbstractDaemonTest {
|
|||||||
assertThat(m.rcpt()).containsExactly(user.emailAddress, observer.emailAddress);
|
assertThat(m.rcpt()).containsExactly(user.emailAddress, observer.emailAddress);
|
||||||
assertThat(m.body()).contains(admin.fullName + " has uploaded a new change for review.");
|
assertThat(m.body()).contains(admin.fullName + " has uploaded a new change for review.");
|
||||||
} else {
|
} else {
|
||||||
assertThat(m.rcpt()).containsExactly(observer.emailAddress);
|
assertThat(m.rcpt()).containsExactly(user.emailAddress, observer.emailAddress);
|
||||||
assertThat(m.body()).contains("Hello " + observer.fullName + ",\n");
|
assertThat(m.body()).contains("Hello " + observer.fullName + ",\n");
|
||||||
assertThat(m.body()).contains("I'd like you to do a code review.");
|
assertThat(m.body()).contains("I'd like you to do a code review.");
|
||||||
}
|
}
|
||||||
@ -398,11 +409,12 @@ public class ChangeReviewersIT extends AbstractDaemonTest {
|
|||||||
assertReviewers(c, REVIEWER, admin, user);
|
assertReviewers(c, REVIEWER, admin, user);
|
||||||
assertReviewers(c, CC, users.subList(0, mediumGroupSize));
|
assertReviewers(c, CC, users.subList(0, mediumGroupSize));
|
||||||
} else {
|
} else {
|
||||||
// If not in NoteDb mode, then user is returned with the CC group.
|
// If not in NoteDb mode, then everyone is a REVIEWER.
|
||||||
assertReviewers(c, REVIEWER, admin);
|
List<TestAccount> expected = users.subList(0, mediumGroupSize);
|
||||||
List<TestAccount> expectedCC = users.subList(0, mediumGroupSize);
|
expected.add(admin);
|
||||||
expectedCC.add(user);
|
expected.add(user);
|
||||||
assertReviewers(c, CC, expectedCC);
|
assertReviewers(c, REVIEWER, expected);
|
||||||
|
assertReviewers(c, CC);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,7 +31,6 @@ import com.google.gerrit.extensions.common.LabelInfo;
|
|||||||
import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
|
import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
|
||||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
import com.google.gerrit.reviewdb.client.PatchSet;
|
||||||
import com.google.gerrit.testutil.ConfigSuite;
|
import com.google.gerrit.testutil.ConfigSuite;
|
||||||
import com.google.gerrit.testutil.NoteDbMode;
|
|
||||||
|
|
||||||
import org.eclipse.jgit.lib.Config;
|
import org.eclipse.jgit.lib.Config;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@ -129,9 +128,7 @@ public class DraftChangeIT extends AbstractDaemonTest {
|
|||||||
assertThat(label.all.get(0)._accountId).isEqualTo(user.id.get());
|
assertThat(label.all.get(0)._accountId).isEqualTo(user.id.get());
|
||||||
assertThat(label.all.get(0).value).isEqualTo(0);
|
assertThat(label.all.get(0).value).isEqualTo(0);
|
||||||
|
|
||||||
ReviewerState rs = NoteDbMode.readWrite()
|
Collection<AccountInfo> ccs = info.reviewers.get(ReviewerState.REVIEWER);
|
||||||
? ReviewerState.REVIEWER : ReviewerState.CC;
|
|
||||||
Collection<AccountInfo> ccs = info.reviewers.get(rs);
|
|
||||||
assertThat(ccs).hasSize(1);
|
assertThat(ccs).hasSize(1);
|
||||||
assertThat(ccs.iterator().next()._accountId).isEqualTo(user.id.get());
|
assertThat(ccs.iterator().next()._accountId).isEqualTo(user.id.get());
|
||||||
|
|
||||||
|
@ -54,11 +54,9 @@ public class ReviewerSet {
|
|||||||
"multiple change IDs: %s, %s", first.getKey(), psa.getKey());
|
"multiple change IDs: %s, %s", first.getKey(), psa.getKey());
|
||||||
}
|
}
|
||||||
Account.Id id = psa.getAccountId();
|
Account.Id id = psa.getAccountId();
|
||||||
if (psa.getValue() != 0) {
|
|
||||||
reviewers.put(REVIEWER, id, psa.getGranted());
|
reviewers.put(REVIEWER, id, psa.getGranted());
|
||||||
|
if (psa.getValue() != 0) {
|
||||||
reviewers.remove(CC, id);
|
reviewers.remove(CC, id);
|
||||||
} else if (!reviewers.contains(REVIEWER, id)) {
|
|
||||||
reviewers.put(CC, id, psa.getGranted());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new ReviewerSet(reviewers);
|
return new ReviewerSet(reviewers);
|
||||||
|
Loading…
Reference in New Issue
Block a user