Yugabyte - Tidy tests with element collections not maintaining ordering

This commit is contained in:
Rob Bygrave committed 2022-02-01 11:51:46 +13:00
1 parent 567ad92050
commit 804098149e
3 files changed
+34 -30

No files matched your search

@@ -10,14 +10,14 @@ import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
public class TestElementCollectionBasic extends BaseTestCase {
class TestElementCollectionBasic extends BaseTestCase {
private List<String> eventLog() {
return EcPersonPersistAdapter.eventLog();
}
@Test
public void insertThen_UpdateWhenNotChanged_expect_noChanges() {
void insertThen_UpdateWhenNotChanged_expect_noChanges() {
EcPerson person = new EcPerson("Nothing021");
person.getPhoneNumbers().add("021 1234");
@@ -51,9 +51,10 @@ public class TestElementCollectionBasic extends BaseTestCase {
}
@Test
public void test() {
void test() {
eventLog();
DB.find(EcPerson.class).where().eq("name", "Fiona021").delete();
LoggedSql.start();
EcPerson person = new EcPerson("Fiona021");
@@ -95,8 +96,8 @@ public class TestElementCollectionBasic extends BaseTestCase {
List<String> phoneNumbers1 = found.get(1).getPhoneNumbers();
phoneNumbers0.size();
assertThat(phoneNumbers0).containsExactly("021 1234", "021 4321");
assertThat(phoneNumbers1).containsExactly("09 1234", "09 4321");
assertThat(phoneNumbers0).containsExactlyInAnyOrder("021 1234", "021 4321");
assertThat(phoneNumbers1).containsExactlyInAnyOrder("09 1234", "09 4321");
sql = LoggedSql.collect();
assertThat(sql).hasSize(2);
@@ -126,7 +127,6 @@ public class TestElementCollectionBasic extends BaseTestCase {
}
private void updateBasic(EcPerson bean) {
bean.setName("Fiona021-mod-0");
DB.save(bean);
@@ -140,7 +140,6 @@ public class TestElementCollectionBasic extends BaseTestCase {
}
private void updateBasicInBatch(EcPerson bean) {
try (Transaction txn = DB.beginTransaction()) {
txn.setBatchMode(true);
bean.setName("Fiona021-mod-0-batch");
@@ -158,7 +157,6 @@ public class TestElementCollectionBasic extends BaseTestCase {
}
private void updateBoth(EcPerson bean) {
bean.setName("Fiona021-mod-both");
bean.getPhoneNumbers().add("01-22123");
DB.save(bean);
@@ -187,7 +185,6 @@ public class TestElementCollectionBasic extends BaseTestCase {
}
private void updateBothInBatch(EcPerson bean) {
try (Transaction txn = DB.beginTransaction()) {
txn.setBatchMode(true);
bean.setName("Fiona021-mod-both-batch");
@@ -210,7 +207,6 @@ public class TestElementCollectionBasic extends BaseTestCase {
}
private void updateNothing(EcPerson bean) {
DB.save(bean);
List<String> sql = LoggedSql.collect();
@@ -222,7 +218,6 @@ public class TestElementCollectionBasic extends BaseTestCase {
}
private void updateOnlyCollectionInBatch(EcPerson bean) {
try (Transaction txn = DB.beginTransaction()) {
txn.setBatchMode(true);
bean.getPhoneNumbers().add("01-4321");
@@ -243,7 +238,6 @@ public class TestElementCollectionBasic extends BaseTestCase {
}
private void updateOnlyCollection(EcPerson bean) {
bean.getPhoneNumbers().add("01-4321");
DB.save(bean);
@@ -272,7 +266,6 @@ public class TestElementCollectionBasic extends BaseTestCase {
}
private void delete(EcPerson bean) {
DB.delete(bean);
List<String> sql = LoggedSql.collect();
@@ -284,7 +277,6 @@ public class TestElementCollectionBasic extends BaseTestCase {
}
private void jsonToFrom(EcPerson foundFirst) {
String asJson = DB.json().toJson(foundFirst);
EcPerson fromJson = DB.json().toBean(EcPerson.class, asJson);
assertThat(fromJson.getPhoneNumbers()).containsAll(foundFirst.getPhoneNumbers());
@@ -15,8 +15,8 @@ class TestElementCollectionEmbeddedListCache extends BaseTestCase {
void test() {
EcblPerson person = new EcblPerson("CacheL");
person.getPhoneNumbers().add(new EcPhone("64", "021","1234"));
person.getPhoneNumbers().add(new EcPhone("64","021","4321"));
person.getPhoneNumbers().add(new EcPhone("64", "021", "1234"));
person.getPhoneNumbers().add(new EcPhone("64", "021", "4321"));
DB.save(person);
EcblPerson one = DB.find(EcblPerson.class)
@@ -42,7 +42,7 @@ class TestElementCollectionEmbeddedListCache extends BaseTestCase {
assertThat(sql).isEmpty(); // cache hit
two.getPhoneNumbers().add(new EcPhone("61", "07", "11"));
two.getPhoneNumbers().remove(1);
removeByNumber(two.getPhoneNumbers(), "4321");
DB.save(two);
@@ -72,7 +72,7 @@ class TestElementCollectionEmbeddedListCache extends BaseTestCase {
three.setName("mod-3");
three.getPhoneNumbers().remove(0);
removeByNumber(three.getPhoneNumbers(), "1234");
DB.save(three);
@@ -92,4 +92,12 @@ class TestElementCollectionEmbeddedListCache extends BaseTestCase {
LoggedSql.stop();
}
private void removeByNumber(List<EcPhone> phoneNumbers, String num) {
phoneNumbers
.stream()
.filter(ecPhone1 -> ecPhone1.number.equals(num))
.findFirst()
.ifPresent(phoneNumbers::remove);
}
}
@@ -3,7 +3,6 @@ package org.tests.model.elementcollection;
import io.ebean.BaseTestCase;
import io.ebean.DB;
import io.ebean.test.LoggedSql;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import java.util.List;
@@ -17,8 +16,8 @@ class TestElementCollectionEmbeddedListCache2 extends BaseTestCase {
EcblPerson2 person = new EcblPerson2();
person.setName("CacheL");
person.getPhoneNumbers().add(new EcPhone("64", "021","1234"));
person.getPhoneNumbers().add(new EcPhone("64","021","4321"));
person.getPhoneNumbers().add(new EcPhone("64", "021", "1234"));
person.getPhoneNumbers().add(new EcPhone("64", "021", "4321"));
DB.save(person);
EcblPerson2 one = DB.find(EcblPerson2.class)
@@ -33,7 +32,7 @@ class TestElementCollectionEmbeddedListCache2 extends BaseTestCase {
List<String> sql = LoggedSql.collect();
assertThat(sql).isEmpty();
EcblPerson2 two = DB.find(EcblPerson2.class )
EcblPerson2 two = DB.find(EcblPerson2.class)
.setId(person.getId())
.findOne();
@@ -44,7 +43,7 @@ class TestElementCollectionEmbeddedListCache2 extends BaseTestCase {
assertThat(sql).isEmpty(); // cache hit
two.getPhoneNumbers().add(new EcPhone("61", "07", "11"));
two.getPhoneNumbers().remove(1);
removeByNumber(two.getPhoneNumbers(), "4321");
DB.save(two);
@@ -62,38 +61,43 @@ class TestElementCollectionEmbeddedListCache2 extends BaseTestCase {
assertSql(sql.get(2)).contains("insert into ecbl_person2_phone_numbers (person_id,country_code,area,phnum) values (?,?,?,?)");
}
EcblPerson2 three = DB.find(EcblPerson2.class )
EcblPerson2 three = DB.find(EcblPerson2.class)
.setId(person.getId())
.findOne();
assertThat(three.getPhoneNumbers().toString()).contains("61-07-11", "64-021-1234");
assertThat(three.getPhoneNumbers()).hasSize(2);
assertThat(three.getPhoneNumbers().toString()).contains("61-07-11", "64-021-1234");
sql = LoggedSql.collect();
assertThat(sql).isEmpty(); // cache hit
three.setName("mod-3");
three.getPhoneNumbers().remove(0);
removeByNumber(three.getPhoneNumbers(), "1234");
DB.save(three);
sql = LoggedSql.collect();
assertThat(sql).hasSize(5);
EcblPerson2 four = DB.find(EcblPerson2.class )
EcblPerson2 four = DB.find(EcblPerson2.class)
.setId(person.getId())
.findOne();
assertThat(four.getPhoneNumbers().toString()).contains("61-07-11");
assertThat(four.getPhoneNumbers()).hasSize(1);
DB.delete(four);
sql = LoggedSql.collect();
assertThat(sql).hasSize(2);
LoggedSql.stop();
}
private void removeByNumber(List<EcPhone> phoneNumbers, String num) {
phoneNumbers
.stream()
.filter(ecPhone1 -> ecPhone1.number.equals(num))
.findFirst()
.ifPresent(phoneNumbers::remove);
}
}