Fix nits in accounts test API to set secondary emails
* TestAccountCreation:
Accept any Set in setter for secondary emails. This way callers are
not forced to create an ImmutableSet.
* AccountOperationsImpl:
Factor out some code from the fillBuilder(
InternalAccountUpdate.Builder, TestAccountUpdate, AccountState) method
into separate methods to improve code readability.
Signed-off-by: Edwin Kempin <ekempin@google.com>
Change-Id: I29b60fa83ac92a5f3ad1edaf425d5000b1952717
diff --git a/java/com/google/gerrit/acceptance/testsuite/account/AccountOperationsImpl.java b/java/com/google/gerrit/acceptance/testsuite/account/AccountOperationsImpl.java
index a975c8d..8c1eebd 100644
--- a/java/com/google/gerrit/acceptance/testsuite/account/AccountOperationsImpl.java
+++ b/java/com/google/gerrit/acceptance/testsuite/account/AccountOperationsImpl.java
@@ -177,41 +177,49 @@
accountUpdate.status().ifPresent(builder::setStatus);
accountUpdate.active().ifPresent(builder::setActive);
- ImmutableSet<String> secondaryEmails;
- ImmutableSet<String> allEmails =
- ExternalId.getEmails(accountState.externalIds()).collect(toImmutableSet());
- if (accountUpdate.preferredEmail().isPresent()) {
- secondaryEmails =
- ImmutableSet.copyOf(
- Sets.difference(allEmails, ImmutableSet.of(accountUpdate.preferredEmail().get())));
- } else if (accountState.account().preferredEmail() != null) {
- secondaryEmails =
- ImmutableSet.copyOf(
- Sets.difference(
- allEmails, ImmutableSet.of(accountState.account().preferredEmail())));
- } else {
- secondaryEmails = allEmails;
- }
+ ImmutableSet<String> secondaryEmails = getSecondaryEmails(accountUpdate, accountState);
ImmutableSet<String> newSecondaryEmails =
ImmutableSet.copyOf(accountUpdate.secondaryEmailsModification().apply(secondaryEmails));
if (!secondaryEmails.equals(newSecondaryEmails)) {
- // delete all external IDs of SCHEME_MAILTO scheme, then add back SCHEME_MAILTO external IDs
- // for the new secondary emails and the preferred email
- builder.deleteExternalIds(
- accountState.externalIds().stream()
- .filter(e -> e.isScheme(ExternalId.SCHEME_MAILTO))
- .collect(toImmutableSet()));
- builder.addExternalIds(
- newSecondaryEmails.stream()
- .map(secondaryEmail -> ExternalId.createEmail(accountId, secondaryEmail))
- .collect(toImmutableSet()));
- if (accountUpdate.preferredEmail().isPresent()) {
- builder.addExternalId(
- ExternalId.createEmail(accountId, accountUpdate.preferredEmail().get()));
- } else if (accountState.account().preferredEmail() != null) {
- builder.addExternalId(
- ExternalId.createEmail(accountId, accountState.account().preferredEmail()));
- }
+ setSecondaryEmails(builder, accountUpdate, accountState, newSecondaryEmails);
+ }
+ }
+
+ private ImmutableSet<String> getSecondaryEmails(
+ TestAccountUpdate accountUpdate, AccountState accountState) {
+ ImmutableSet<String> allEmails =
+ ExternalId.getEmails(accountState.externalIds()).collect(toImmutableSet());
+ if (accountUpdate.preferredEmail().isPresent()) {
+ return ImmutableSet.copyOf(
+ Sets.difference(allEmails, ImmutableSet.of(accountUpdate.preferredEmail().get())));
+ } else if (accountState.account().preferredEmail() != null) {
+ return ImmutableSet.copyOf(
+ Sets.difference(allEmails, ImmutableSet.of(accountState.account().preferredEmail())));
+ }
+ return allEmails;
+ }
+
+ private void setSecondaryEmails(
+ InternalAccountUpdate.Builder builder,
+ TestAccountUpdate accountUpdate,
+ AccountState accountState,
+ ImmutableSet<String> newSecondaryEmails) {
+ // delete all external IDs of SCHEME_MAILTO scheme, then add back SCHEME_MAILTO external IDs
+ // for the new secondary emails and the preferred email
+ builder.deleteExternalIds(
+ accountState.externalIds().stream()
+ .filter(e -> e.isScheme(ExternalId.SCHEME_MAILTO))
+ .collect(toImmutableSet()));
+ builder.addExternalIds(
+ newSecondaryEmails.stream()
+ .map(secondaryEmail -> ExternalId.createEmail(accountId, secondaryEmail))
+ .collect(toImmutableSet()));
+ if (accountUpdate.preferredEmail().isPresent()) {
+ builder.addExternalId(
+ ExternalId.createEmail(accountId, accountUpdate.preferredEmail().get()));
+ } else if (accountState.account().preferredEmail() != null) {
+ builder.addExternalId(
+ ExternalId.createEmail(accountId, accountState.account().preferredEmail()));
}
}
diff --git a/java/com/google/gerrit/acceptance/testsuite/account/TestAccountCreation.java b/java/com/google/gerrit/acceptance/testsuite/account/TestAccountCreation.java
index 3a104b6..042dc9a 100644
--- a/java/com/google/gerrit/acceptance/testsuite/account/TestAccountCreation.java
+++ b/java/com/google/gerrit/acceptance/testsuite/account/TestAccountCreation.java
@@ -21,6 +21,7 @@
import com.google.gerrit.acceptance.testsuite.ThrowingFunction;
import com.google.gerrit.entities.Account;
import java.util.Optional;
+import java.util.Set;
@AutoValue
public abstract class TestAccountCreation {
@@ -88,7 +89,7 @@
return active(false);
}
- public abstract Builder secondaryEmails(ImmutableSet<String> secondaryEmails);
+ public abstract Builder secondaryEmails(Set<String> secondaryEmails);
abstract ImmutableSet.Builder<String> secondaryEmailsBuilder();