Search in sources :

Example 1 with FetchesDocumentView1

use of com.blazebit.persistence.view.testsuite.basic.model.FetchesDocumentView1 in project blaze-persistence by Blazebit.

the class EntityFetchesTest method entityViewFetchesInitializeEntitiesSimple.

@Test
// NOTE: Datanucleus doesn't seem to support fetching non-root relations
@Category({ NoDatanucleus.class })
public void entityViewFetchesInitializeEntitiesSimple() {
    CriteriaBuilder<Person> criteria = cbf.create(em, Person.class).where("id").eq(pers1.getId());
    EntityViewSetting<FetchesPersonView1, CriteriaBuilder<FetchesPersonView1>> setting = EntityViewSetting.create(FetchesPersonView1.class);
    CriteriaBuilder<FetchesPersonView1> cb = evm.applySetting(setting, criteria);
    List<FetchesPersonView1> results = cb.getResultList();
    // Close the em to make sure this was fetched properly
    em.getTransaction().rollback();
    em.close();
    // Only a single entity view is produced
    assertEquals(1, results.size());
    FetchesPersonView1 view = results.get(0);
    // Friends match
    assertEquals(friend.getId(), view.getFriend().getId());
    // Friend is properly initialized
    assertEquals(2, view.getFriend().getOwnedDocuments().size());
    assertEquals(friend.getOwnedDocuments(), view.getFriend().getOwnedDocuments());
    // Owned documents have the correct size
    assertEquals(2, view.getOwnedDocuments().size());
    // Extract ownedDocuments from view
    Iterator<Document> documentIterator = view.getOwnedDocuments().iterator();
    Document ownedDoc1 = documentIterator.next();
    Document ownedDoc2 = documentIterator.next();
    // Extract ownedDocuments from pers1
    documentIterator = pers1.getOwnedDocuments().iterator();
    Document expectedDoc1 = documentIterator.next();
    Document expectedDoc2;
    if (!expectedDoc1.getId().equals(ownedDoc1.getId())) {
        expectedDoc2 = expectedDoc1;
        expectedDoc1 = documentIterator.next();
    } else {
        expectedDoc2 = documentIterator.next();
    }
    // Check contacts have been initialized of owned documents
    assertEquals(2, ownedDoc1.getContacts().size());
    assertEquals(expectedDoc1.getContacts(), ownedDoc1.getContacts());
    assertEquals(2, ownedDoc2.getContacts().size());
    assertEquals(expectedDoc2.getContacts(), ownedDoc2.getContacts());
    // Extract partner documents
    Document partnerDocument = pers1.getPartnerDocument();
    FetchesDocumentView1 partnerDocumentView = view.getPartnerDocument();
    // Check personList is properly initialized
    assertEquals(2, partnerDocumentView.getPeople().size());
    assertEquals(partnerDocument.getPeople(), partnerDocumentView.getPeople());
    assertEquals(pers1, partnerDocumentView.getPeople().get(0));
    assertEquals(2, partnerDocumentView.getPeople().get(0).getOwnedDocuments().size());
    assertEquals(pers1.getOwnedDocuments(), partnerDocumentView.getPeople().get(0).getOwnedDocuments());
    assertEquals(friend, partnerDocumentView.getPeople().get(1));
    assertEquals(2, partnerDocumentView.getPeople().get(1).getOwnedDocuments().size());
    assertEquals(friend.getOwnedDocuments(), partnerDocumentView.getPeople().get(1).getOwnedDocuments());
}
Also used : CriteriaBuilder(com.blazebit.persistence.CriteriaBuilder) FetchesPersonView1(com.blazebit.persistence.view.testsuite.basic.model.FetchesPersonView1) Document(com.blazebit.persistence.testsuite.entity.Document) Person(com.blazebit.persistence.testsuite.entity.Person) FetchesDocumentView1(com.blazebit.persistence.view.testsuite.basic.model.FetchesDocumentView1) Category(org.junit.experimental.categories.Category) Test(org.junit.Test) AbstractEntityViewTest(com.blazebit.persistence.view.testsuite.AbstractEntityViewTest)

Aggregations

CriteriaBuilder (com.blazebit.persistence.CriteriaBuilder)1 Document (com.blazebit.persistence.testsuite.entity.Document)1 Person (com.blazebit.persistence.testsuite.entity.Person)1 AbstractEntityViewTest (com.blazebit.persistence.view.testsuite.AbstractEntityViewTest)1 FetchesDocumentView1 (com.blazebit.persistence.view.testsuite.basic.model.FetchesDocumentView1)1 FetchesPersonView1 (com.blazebit.persistence.view.testsuite.basic.model.FetchesPersonView1)1 Test (org.junit.Test)1 Category (org.junit.experimental.categories.Category)1