// Copyright 2017 The Nomulus Authors. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. 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.FailureMetadata; import com.google.common.truth.SimpleSubjectBuilder; import google.registry.model.contact.ContactResource; import google.registry.model.contact.PostalInfo; import google.registry.model.eppcommon.AuthInfo; import google.registry.testing.TruthChainer.And; import org.joda.time.DateTime; /** Truth subject for asserting things about {@link ContactResource} instances. */ public final class ContactResourceSubject extends AbstractEppResourceSubject { public ContactResourceSubject(FailureMetadata failureMetadata, ContactResource subject) { super(failureMetadata, checkNotNull(subject)); } public And hasLocalizedPostalInfo(PostalInfo postalInfo) { return hasValue(postalInfo, actual().getLocalizedPostalInfo(), "has localizedPostalInfo"); } public And hasNullLocalizedPostalInfo() { if (actual().getLocalizedPostalInfo() != null) { fail("has null localized postal info"); } return andChainer(); } public And hasNonNullLocalizedPostalInfo() { if (actual().getLocalizedPostalInfo() == null) { fail("has non-null localized postal info"); } return andChainer(); } public And hasInternationalizedPostalInfo( PostalInfo postalInfo) { return hasValue( postalInfo, actual().getInternationalizedPostalInfo(), "has internationalizedPostalInfo"); } public And hasNullInternationalizedPostalInfo() { if (actual().getInternationalizedPostalInfo() != null) { fail("has null internationalized postal info"); } return andChainer(); } public And hasNonNullInternationalizedPostalInfo() { if (actual().getInternationalizedPostalInfo() == null) { fail("has non-null internationalized postal info"); } return andChainer(); } public And hasNullEmailAddress() { if (actual().getEmailAddress() != null) { fail("has null email address"); } return andChainer(); } public And hasNonNullEmailAddress() { if (actual().getEmailAddress() == null) { fail("has non-null email address"); } return andChainer(); } public And hasNullVoiceNumber() { if (actual().getVoiceNumber() != null) { fail("has null voice number"); } return andChainer(); } public And hasNonNullVoiceNumber() { if (actual().getVoiceNumber() == null) { fail("has non-null voice number"); } return andChainer(); } public And hasNullFaxNumber() { if (actual().getFaxNumber() != null) { fail("has null fax number"); } return andChainer(); } public And hasNonNullFaxNumber() { if (actual().getFaxNumber() == null) { fail("has non-null fax number"); } return andChainer(); } public And hasAuthInfoPwd(String pw) { AuthInfo authInfo = actual().getAuthInfo(); return hasValue(pw, authInfo == null ? null : authInfo.getPw().getValue(), "has auth info pw"); } public And hasLastTransferTime(DateTime lastTransferTime) { return hasValue( lastTransferTime, actual().getLastTransferTime(), "has lastTransferTime"); } public And hasLastTransferTimeNotEqualTo(DateTime lastTransferTime) { return doesNotHaveValue( lastTransferTime, actual().getLastTransferTime(), "lastTransferTime"); } public And hasCurrentSponsorClientId(String clientId) { return hasValue( clientId, actual().getCurrentSponsorClientId(), "has currentSponsorClientId"); } public static SimpleSubjectBuilder assertAboutContacts() { return assertAbout(ContactResourceSubject::new); } }