Add a test to verify JPA supports polimorphic VKey (#642)

This commit is contained in:
Shicong Huang 2020-06-22 15:13:38 -04:00 committed by GitHub
parent ec09226baa
commit e7db9b3c1a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 46 additions and 28 deletions

View file

@ -109,7 +109,6 @@ public abstract class TransferData<
public B copyConstantFieldsToBuilder() { public B copyConstantFieldsToBuilder() {
B newBuilder = new TypeInstantiator<B>(getClass()) {}.instantiate(); B newBuilder = new TypeInstantiator<B>(getClass()) {}.instantiate();
newBuilder newBuilder
// .setTransferPeriod(this.transferPeriod)
.setTransferRequestTrid(this.transferRequestTrid) .setTransferRequestTrid(this.transferRequestTrid)
.setTransferRequestTime(this.transferRequestTime) .setTransferRequestTime(this.transferRequestTime)
.setGainingClientId(this.gainingClientId) .setGainingClientId(this.gainingClientId)

View file

@ -35,6 +35,8 @@ import org.junit.jupiter.api.Test;
public class PollMessageTest extends EntityTestCase { public class PollMessageTest extends EntityTestCase {
HistoryEntry historyEntry; HistoryEntry historyEntry;
PollMessage.OneTime oneTime;
PollMessage.Autorenew autoRenew;
public PollMessageTest() { public PollMessageTest() {
super(true); super(true);
@ -57,33 +59,14 @@ public class PollMessageTest extends EntityTestCase {
.setReason("reason") .setReason("reason")
.setRequestedByRegistrar(false) .setRequestedByRegistrar(false)
.build()); .build());
} oneTime =
@Test
void testCloudSqlPersistenceOneTime() {
saveRegistrar("TheRegistrar");
PollMessage.OneTime pollMessage =
new PollMessage.OneTime.Builder() new PollMessage.OneTime.Builder()
.setClientId("TheRegistrar") .setClientId("TheRegistrar")
.setEventTime(fakeClock.nowUtc()) .setEventTime(fakeClock.nowUtc())
.setMsg("Test poll message") .setMsg("Test poll message")
.setParent(historyEntry) .setParent(historyEntry)
.build(); .build();
pollMessage.id = null; autoRenew =
jpaTm().transact(() -> jpaTm().saveNew(pollMessage));
PollMessage.OneTime persisted =
jpaTm()
.transact(
() -> jpaTm().load(VKey.createSql(PollMessage.OneTime.class, pollMessage.id)));
persisted.id = pollMessage.id;
persisted.parent = pollMessage.parent;
assertThat(persisted).isEqualTo(pollMessage);
}
@Test
void testCloudSqlPersistenceAutorenew() {
saveRegistrar("TheRegistrar");
PollMessage.Autorenew pollMessage =
new PollMessage.Autorenew.Builder() new PollMessage.Autorenew.Builder()
.setClientId("TheRegistrar") .setClientId("TheRegistrar")
.setEventTime(fakeClock.nowUtc()) .setEventTime(fakeClock.nowUtc())
@ -92,15 +75,51 @@ public class PollMessageTest extends EntityTestCase {
.setAutorenewEndTime(fakeClock.nowUtc().plusDays(365)) .setAutorenewEndTime(fakeClock.nowUtc().plusDays(365))
.setTargetId("foobar.foo") .setTargetId("foobar.foo")
.build(); .build();
pollMessage.id = null; // TODO(shicong): Remove these two lines after we use symmetric vkey and change the cloud sql
jpaTm().transact(() -> jpaTm().saveNew(pollMessage)); // schema
oneTime.id = null;
autoRenew.id = null;
}
@Test
void testCloudSqlPersistenceOneTime() {
saveRegistrar("TheRegistrar");
jpaTm().transact(() -> jpaTm().saveNew(oneTime));
PollMessage.OneTime persisted =
jpaTm().transact(() -> jpaTm().load(VKey.createSql(PollMessage.OneTime.class, oneTime.id)));
persisted.parent = oneTime.parent;
assertThat(persisted).isEqualTo(oneTime);
}
@Test
void testCloudSqlPersistenceAutorenew() {
saveRegistrar("TheRegistrar");
jpaTm().transact(() -> jpaTm().saveNew(autoRenew));
PollMessage.Autorenew persisted = PollMessage.Autorenew persisted =
jpaTm() jpaTm()
.transact( .transact(
() -> jpaTm().load(VKey.createSql(PollMessage.Autorenew.class, pollMessage.id))); () -> jpaTm().load(VKey.createSql(PollMessage.Autorenew.class, autoRenew.id)));
persisted.id = pollMessage.id; persisted.parent = autoRenew.parent;
persisted.parent = pollMessage.parent; assertThat(persisted).isEqualTo(autoRenew);
assertThat(persisted).isEqualTo(pollMessage); }
@Test
void testCloudSqlSupportForPolymorphicVKey() {
saveRegistrar("TheRegistrar");
jpaTm().transact(() -> jpaTm().saveNew(oneTime));
PollMessage persistedOneTime =
jpaTm().transact(() -> jpaTm().load(VKey.createSql(PollMessage.class, oneTime.getId())));
assertThat(persistedOneTime).isInstanceOf(PollMessage.OneTime.class);
persistedOneTime.parent = oneTime.parent;
assertThat(persistedOneTime).isEqualTo(oneTime);
jpaTm().transact(() -> jpaTm().saveNew(autoRenew));
PollMessage persistedAutoRenew =
jpaTm().transact(() -> jpaTm().load(VKey.createSql(PollMessage.class, autoRenew.getId())));
assertThat(persistedAutoRenew).isInstanceOf(PollMessage.Autorenew.class);
persistedAutoRenew.parent = oneTime.parent;
assertThat(persistedAutoRenew).isEqualTo(autoRenew);
} }
@Test @Test