use of com.blazebit.persistence.view.testsuite.update.subview.nested.mutableonly.model.UpdatableResponsiblePersonView in project blaze-persistence by Blazebit.
the class EntityViewUpdateNestedMutableOnlySubviewMapsTest method assertSubviewEquals.
public static void assertSubviewEquals(Map<Integer, Person> persons, Map<Integer, ? extends UpdatableResponsiblePersonView> personSubviews) {
if (persons == null) {
assertNull(personSubviews);
return;
}
assertNotNull(personSubviews);
assertEquals(persons.size(), personSubviews.size());
for (Map.Entry<Integer, Person> entry : persons.entrySet()) {
Person p = entry.getValue();
boolean found = false;
UpdatableResponsiblePersonView pSub = personSubviews.get(entry.getKey());
if (pSub != null) {
if (p.getName().equals(pSub.getName())) {
found = true;
if (p.getFriend() == null) {
assertNull(pSub.getFriend());
} else {
assertNotNull(pSub.getFriend());
assertEquals(p.getFriend().getId(), pSub.getFriend().getId());
assertEquals(p.getFriend().getName(), pSub.getFriend().getName());
}
break;
}
}
if (!found) {
Assert.fail("Could not find a person subview instance with the name: " + p.getName());
}
}
}
use of com.blazebit.persistence.view.testsuite.update.subview.nested.mutableonly.model.UpdatableResponsiblePersonView in project blaze-persistence by Blazebit.
the class EntityViewUpdateNestedMutableOnlySubviewCollectionsTest method testUpdateAddToCollectionAndModify.
@Test
public void testUpdateAddToCollectionAndModify() {
// Given
final UpdatableDocumentWithCollectionsView docView = getDoc1View();
UpdatableResponsiblePersonView newPerson = getP2View(UpdatableResponsiblePersonView.class);
clearQueries();
// When
newPerson.getFriend().setName("newPerson");
docView.getPeople().add(newPerson);
update(docView);
// Then
AssertStatementBuilder builder = assertUnorderedQuerySequence();
if (isQueryStrategy()) {
if (isFullMode()) {
builder.update(Person.class);
builder.update(Person.class);
builder.update(Person.class);
builder.delete(Document.class, "people").insert(Document.class, "people");
}
builder.update(Person.class);
if (version || isFullMode()) {
builder.update(Document.class);
}
} else {
fullFetch(builder).assertSelect().fetching(Person.class).fetching(Person.class).and();
if (version) {
builder.update(Document.class);
}
builder.update(Person.class);
}
builder.assertInsert().forRelation(Document.class, "people").and().validate();
assertNoUpdateAndReload(docView, true);
assertSubviewEquals(doc1.getPeople(), docView.getPeople());
assertEquals("newPerson", p4.getName());
}
use of com.blazebit.persistence.view.testsuite.update.subview.nested.mutableonly.model.UpdatableResponsiblePersonView in project blaze-persistence by Blazebit.
the class EntityViewUpdateNestedMutableOnlySubviewCollectionsTest method testUpdateAddToCollection.
@Test
public void testUpdateAddToCollection() {
// Given
final UpdatableDocumentWithCollectionsView docView = getDoc1View();
UpdatableResponsiblePersonView newPerson = getP2View(UpdatableResponsiblePersonView.class);
clearQueries();
// When
docView.getPeople().add(newPerson);
update(docView);
// Then
AssertStatementBuilder builder = assertUnorderedQuerySequence();
if (isFullMode()) {
if (isQueryStrategy()) {
fullUpdate(builder);
} else {
fullFetch(builder).select(Person.class);
if (version) {
builder.update(Document.class);
}
}
} else {
if (!isQueryStrategy()) {
builder.assertSelect().fetching(Document.class).fetching(Document.class, "people").fetching(Person.class).and();
}
if (version) {
builder.update(Document.class);
}
}
builder.assertInsert().forRelation(Document.class, "people").validate();
assertNoUpdateAndReload(docView, true);
assertSubviewEquals(doc1.getPeople(), docView.getPeople());
}
use of com.blazebit.persistence.view.testsuite.update.subview.nested.mutableonly.model.UpdatableResponsiblePersonView in project blaze-persistence by Blazebit.
the class EntityViewUpdateNestedMutableOnlySubviewMapsTest method testUpdateAddToNewCollectionAndModify.
@Test
public void testUpdateAddToNewCollectionAndModify() {
// Given
final UpdatableDocumentWithMapsView docView = getDoc1View();
UpdatableResponsiblePersonView newPerson = getP2View(UpdatableResponsiblePersonView.class);
clearQueries();
// When
newPerson.getFriend().setName("newPerson");
docView.setContacts(new HashMap<>(docView.getContacts()));
docView.getContacts().put(2, newPerson);
update(docView);
// Then
AssertStatementBuilder builder = assertUnorderedQuerySequence();
if (isQueryStrategy()) {
if (isFullMode()) {
assertReplaceAnd(builder);
builder.update(Person.class);
}
builder.update(Person.class);
if (version || isFullMode()) {
builder.update(Document.class);
}
} else {
fullFetch(builder).assertSelect().fetching(Person.class).fetching(Person.class).and();
if (version) {
builder.update(Document.class);
}
builder.update(Person.class);
}
builder.insert(Document.class, "contacts").validate();
assertNoUpdateAndReload(docView, true);
assertSubviewEquals(doc1.getContacts(), docView.getContacts());
assertEquals("newPerson", p4.getName());
}
use of com.blazebit.persistence.view.testsuite.update.subview.nested.mutableonly.model.UpdatableResponsiblePersonView in project blaze-persistence by Blazebit.
the class EntityViewUpdateNestedMutableOnlySubviewMapsTest method testUpdateAddToCollectionAndModify.
@Test
public void testUpdateAddToCollectionAndModify() {
// Given
final UpdatableDocumentWithMapsView docView = getDoc1View();
UpdatableResponsiblePersonView newPerson = getP2View(UpdatableResponsiblePersonView.class);
clearQueries();
// When
newPerson.getFriend().setName("newPerson");
docView.getContacts().put(2, newPerson);
update(docView);
// Then
AssertStatementBuilder builder = assertUnorderedQuerySequence();
if (isQueryStrategy()) {
if (isFullMode()) {
assertReplaceAnd(builder);
builder.update(Person.class);
}
builder.update(Person.class);
if (version || isFullMode()) {
builder.update(Document.class);
}
} else {
fullFetch(builder).assertSelect().fetching(Person.class).fetching(Person.class).and();
if (version) {
builder.update(Document.class);
}
builder.update(Person.class);
}
builder.insert(Document.class, "contacts").validate();
assertNoUpdateAndReload(docView, true);
assertSubviewEquals(doc1.getContacts(), docView.getContacts());
assertEquals("newPerson", p4.getName());
}
Aggregations