diff --git a/java/google/registry/flows/domain/DomainRestoreRequestFlow.java b/java/google/registry/flows/domain/DomainRestoreRequestFlow.java index 54e61ee67..90bb5f52d 100644 --- a/java/google/registry/flows/domain/DomainRestoreRequestFlow.java +++ b/java/google/registry/flows/domain/DomainRestoreRequestFlow.java @@ -26,6 +26,7 @@ import static google.registry.flows.domain.DomainFlowUtils.validateFeeChallenge; import static google.registry.flows.domain.DomainFlowUtils.verifyNotReserved; import static google.registry.flows.domain.DomainFlowUtils.verifyPremiumNameIsNotBlocked; import static google.registry.model.ofy.ObjectifyService.ofy; +import static google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount.TransactionReportField.RESTORED_DOMAINS; import static google.registry.util.DateTimeUtils.END_OF_TIME; import com.google.common.base.Optional; @@ -63,6 +64,8 @@ import google.registry.model.eppinput.ResourceCommand; import google.registry.model.eppoutput.EppResponse; import google.registry.model.poll.PollMessage; import google.registry.model.registry.Registry; +import google.registry.model.reporting.DomainTransactionRecord; +import google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount; import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import javax.inject.Inject; @@ -170,10 +173,18 @@ public final class DomainRestoreRequestFlow implements TransactionalFlow { } private HistoryEntry buildHistory(DomainResource existingDomain, DateTime now) { + DomainTransactionRecord transactionRecord = + new DomainTransactionRecord.Builder() + .setTld(existingDomain.getTld()) + .setReportingTime(now) + .setTransactionFieldAmounts( + ImmutableSet.of(TransactionFieldAmount.create(RESTORED_DOMAINS, 1))) + .build(); return historyBuilder .setType(HistoryEntry.Type.DOMAIN_RESTORE) .setModificationTime(now) .setParent(Key.create(existingDomain)) + .setDomainTransactionRecord(transactionRecord) .build(); } diff --git a/java/google/registry/model/reporting/DomainTransactionRecord.java b/java/google/registry/model/reporting/DomainTransactionRecord.java index 87c7b922e..d3775d7cc 100644 --- a/java/google/registry/model/reporting/DomainTransactionRecord.java +++ b/java/google/registry/model/reporting/DomainTransactionRecord.java @@ -130,6 +130,10 @@ public class DomainTransactionRecord extends ImmutableObject implements Buildabl return tld; } + public Set getTransactionFieldAmounts() { + return transactionFieldAmounts; + } + @Override public Builder asBuilder() { return new Builder(clone(this)); diff --git a/javatests/google/registry/flows/domain/DomainRestoreRequestFlowTest.java b/javatests/google/registry/flows/domain/DomainRestoreRequestFlowTest.java index 0dd043c42..8cbbaf41d 100644 --- a/javatests/google/registry/flows/domain/DomainRestoreRequestFlowTest.java +++ b/javatests/google/registry/flows/domain/DomainRestoreRequestFlowTest.java @@ -16,6 +16,7 @@ package google.registry.flows.domain; import static com.google.common.truth.Truth.assertThat; import static google.registry.model.ofy.ObjectifyService.ofy; +import static google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount.TransactionReportField.RESTORED_DOMAINS; import static google.registry.testing.DatastoreHelper.assertBillingEvents; import static google.registry.testing.DatastoreHelper.createTld; import static google.registry.testing.DatastoreHelper.getOnlyHistoryEntryOfType; @@ -60,6 +61,8 @@ import google.registry.model.domain.rgp.GracePeriodStatus; import google.registry.model.eppcommon.StatusValue; import google.registry.model.poll.PollMessage; import google.registry.model.registry.Registry; +import google.registry.model.reporting.DomainTransactionRecord; +import google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount; import google.registry.model.reporting.HistoryEntry; import java.util.Map; import org.joda.money.Money; @@ -568,4 +571,21 @@ public class DomainRestoreRequestFlowTest extends assertIcannReportingActivityFieldLogged("srs-dom-rgp-restore-request"); assertTldsFieldLogged("tld"); } + + @Test + public void testIcannTransactionReportField_getsStored() throws Exception { + persistPendingDeleteDomain(); + runFlow(); + DomainResource domain = reloadResourceByForeignKey(); + HistoryEntry historyEntryDomainRestore = + getOnlyHistoryEntryOfType(domain, HistoryEntry.Type.DOMAIN_RESTORE); + DomainTransactionRecord transactionRecord = + historyEntryDomainRestore.getDomainTransactionRecord(); + + assertThat(transactionRecord.getTld()).isEqualTo("tld"); + assertThat(transactionRecord.getReportingTime()) + .isEqualTo(historyEntryDomainRestore.getModificationTime()); + assertThat(transactionRecord.getTransactionFieldAmounts()) + .containsExactly(TransactionFieldAmount.create(RESTORED_DOMAINS, 1)); + } }