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() {
B newBuilder = new TypeInstantiator<B>(getClass()) {}.instantiate();
newBuilder
// .setTransferPeriod(this.transferPeriod)
.setTransferRequestTrid(this.transferRequestTrid)
.setTransferRequestTime(this.transferRequestTime)
.setGainingClientId(this.gainingClientId)

View file

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