Replace FailureStrategy with FailureMetadata in gtld's Subjects

Also changed truth.SubjectFactory to truth.Subject.Factory (plain renaming) and use method reference instead of anonymous class to create the factory when applicable.

FailureMetadata, an opaque object to its users, is introduced to replace FailureStrategy in in custom Subject in order to resolve some existing flaws of FailureStrategy as well as enable new features to be added to Truth.

New API is available in Truth-0.36, if there is a build/pom.xml, it's also updated to use this version.

More information: See []

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=176110788
This commit is contained in:
jianglai 2017-11-17 08:18:43 -08:00
parent 6083ef9ba0
commit 9ab68613a0
12 changed files with 44 additions and 127 deletions

View file

@ -17,7 +17,7 @@ package google.registry.testing;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.truth.Truth.assertAbout;
import com.google.common.truth.FailureStrategy;
import com.google.common.truth.FailureMetadata;
import com.google.common.truth.SimpleSubjectBuilder;
import google.registry.model.domain.DomainResource;
import google.registry.testing.TruthChainer.And;
@ -28,10 +28,6 @@ import org.joda.time.DateTime;
public final class DomainResourceSubject
extends AbstractDomainBaseSubject<DomainResource, DomainResourceSubject> {
/** A factory for instances of this subject. */
private static class SubjectFactory
extends ReflectiveSubjectFactory<DomainResource, DomainResourceSubject>{}
public And<DomainResourceSubject> hasRegistrationExpirationTime(DateTime expiration) {
if (!Objects.equals(actual().getRegistrationExpirationTime(), expiration)) {
failWithBadResults(
@ -74,11 +70,11 @@ public final class DomainResourceSubject
return hasValue(smdId, actual().getSmdId(), "has smdId");
}
public DomainResourceSubject(FailureStrategy strategy, DomainResource subject) {
super(strategy, checkNotNull(subject));
public DomainResourceSubject(FailureMetadata failureMetadata, DomainResource subject) {
super(failureMetadata, checkNotNull(subject));
}
public static SimpleSubjectBuilder<DomainResourceSubject, DomainResource> assertAboutDomains() {
return assertAbout(new SubjectFactory());
return assertAbout(DomainResourceSubject::new);
}
}