package denominator.assertj; import org.assertj.core.api.AbstractAssert; import org.assertj.core.internal.Objects; import org.assertj.core.internal.Strings; import denominator.model.Zone; public class ZoneAssert extends AbstractAssert<ZoneAssert, Zone> { Objects objects = Objects.instance(); Strings strings = Strings.instance(); public ZoneAssert(Zone actual) { super(actual, ZoneAssert.class); } public ZoneAssert hasName(String expected) { isNotNull(); objects.assertEqual(info, actual.name(), expected); return this; } public ZoneAssert hasId(String expected) { isNotNull(); objects.assertEqual(info, actual.id(), expected); return this; } /** * Tolerates differences when the actual email ends with a trailing dot or when the first * {@literal @} with a dot. */ public ZoneAssert hasEmail(String expected) { isNotNull(); String actualEmail = actual.email(); if (actualEmail.endsWith(".")) { actualEmail = actualEmail.substring(0, actualEmail.length() - 1); } if (actualEmail.indexOf('@') == -1) { actualEmail = actualEmail.replaceFirst("\\.", "@"); } strings.assertStartsWith(info, actualEmail, expected); return this; } public ZoneAssert hasTtl(Integer expected) { isNotNull(); objects.assertEqual(info, actual.ttl(), expected); return this; } }