package com.sap.core.odata.processor.core.jpa.access.data;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.junit.Test;
import com.sap.core.odata.api.edm.EdmEntitySet;
import com.sap.core.odata.api.edm.EdmEntityType;
import com.sap.core.odata.api.edm.EdmException;
import com.sap.core.odata.processor.api.jpa.exception.ODataJPARuntimeException;
import com.sap.core.odata.processor.core.jpa.common.ODataJPATestConstants;
import com.sap.core.odata.processor.core.jpa.mock.data.EdmMockUtilV2;
import com.sap.core.odata.processor.core.jpa.mock.data.JPATypeMock;
import com.sap.core.odata.processor.core.jpa.mock.data.JPATypeMock.JPARelatedTypeMock;
import com.sap.core.odata.processor.core.jpa.mock.data.JPATypeMock.JPATypeEmbeddableMock;
import com.sap.core.odata.processor.core.jpa.mock.data.JPATypeMock.JPATypeEmbeddableMock2;
import com.sap.core.odata.processor.core.jpa.mock.data.ODataEntryMockUtil;
public class JPAEntityTest {
private JPAEntity jpaEntity = null;
@Test
public void testCreateODataEntryWithComplexType() {
try {
EdmEntitySet edmEntitySet = EdmMockUtilV2.mockEdmEntitySet(JPATypeMock.ENTITY_NAME, true);
EdmEntityType edmEntityType = edmEntitySet.getEntityType();
jpaEntity = new JPAEntity(edmEntityType, edmEntitySet);
jpaEntity.create(ODataEntryMockUtil.mockODataEntryWithComplexType(JPATypeMock.ENTITY_NAME));
} catch (ODataJPARuntimeException e) {
fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage()
+ ODataJPATestConstants.EXCEPTION_MSG_PART_2);
} catch (EdmException e) {
fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage()
+ ODataJPATestConstants.EXCEPTION_MSG_PART_2);
}
JPATypeMock jpaTypeMock = (JPATypeMock) jpaEntity.getJPAEntity();
assertEquals(jpaTypeMock.getMInt(), ODataEntryMockUtil.VALUE_MINT);
assertEquals(jpaTypeMock.getMString(), ODataEntryMockUtil.VALUE_MSTRING);
assertTrue(jpaTypeMock.getMDateTime().equals(ODataEntryMockUtil.VALUE_DATE_TIME));
JPATypeEmbeddableMock jpaEmbeddableMock = jpaTypeMock.getComplexType();
assertNotNull(jpaEmbeddableMock);
assertEquals(jpaEmbeddableMock.getMShort(), ODataEntryMockUtil.VALUE_SHORT);
JPATypeEmbeddableMock2 jpaEmbeddableMock2 = jpaEmbeddableMock.getMEmbeddable();
assertNotNull(jpaEmbeddableMock2);
assertEquals(jpaEmbeddableMock2.getMFloat(), ODataEntryMockUtil.VALUE_MFLOAT, 1);
assertEquals(jpaEmbeddableMock2.getMUUID(), ODataEntryMockUtil.VALUE_UUID);
}
@Test
public void testCreateODataEntry() {
try {
EdmEntitySet edmEntitySet = EdmMockUtilV2.mockEdmEntitySet(JPATypeMock.ENTITY_NAME, false);
EdmEntityType edmEntityType = edmEntitySet.getEntityType();
jpaEntity = new JPAEntity(edmEntityType, edmEntitySet);
jpaEntity.create(ODataEntryMockUtil.mockODataEntry(JPATypeMock.ENTITY_NAME));
} catch (ODataJPARuntimeException e) {
fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage()
+ ODataJPATestConstants.EXCEPTION_MSG_PART_2);
} catch (EdmException e) {
fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage()
+ ODataJPATestConstants.EXCEPTION_MSG_PART_2);
}
JPATypeMock jpaTypeMock = (JPATypeMock) jpaEntity.getJPAEntity();
assertEquals(jpaTypeMock.getMInt(), ODataEntryMockUtil.VALUE_MINT);
assertEquals(jpaTypeMock.getMString(), ODataEntryMockUtil.VALUE_MSTRING);
assertTrue(jpaTypeMock.getMDateTime().equals(ODataEntryMockUtil.VALUE_DATE_TIME));
}
@Test
public void testCreateODataEntryWithInline() {
try {
EdmEntitySet edmEntitySet = EdmMockUtilV2.mockEdmEntitySet(JPATypeMock.ENTITY_NAME, false);
EdmEntityType edmEntityType = edmEntitySet.getEntityType();
jpaEntity = new JPAEntity(edmEntityType, edmEntitySet);
jpaEntity.create(ODataEntryMockUtil.mockODataEntryWithInline(JPATypeMock.ENTITY_NAME));
} catch (ODataJPARuntimeException e) {
fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage()
+ ODataJPATestConstants.EXCEPTION_MSG_PART_2);
} catch (EdmException e) {
fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage()
+ ODataJPATestConstants.EXCEPTION_MSG_PART_2);
}
JPATypeMock jpaTypeMock = (JPATypeMock) jpaEntity.getJPAEntity();
assertEquals(jpaTypeMock.getMInt(), ODataEntryMockUtil.VALUE_MINT);
assertEquals(jpaTypeMock.getMString(), ODataEntryMockUtil.VALUE_MSTRING);
assertTrue(jpaTypeMock.getMDateTime().equals(ODataEntryMockUtil.VALUE_DATE_TIME));
JPARelatedTypeMock relatedType = jpaTypeMock.getMRelatedEntity();
assertNotNull(jpaTypeMock.getMRelatedEntity());
assertEquals(relatedType.getMByte(), ODataEntryMockUtil.VALUE_MBYTE);
assertEquals(relatedType.getMByteArray(), ODataEntryMockUtil.VALUE_MBYTEARRAY);
assertEquals(relatedType.getMDouble(), ODataEntryMockUtil.VALUE_MDOUBLE, 0.0);
assertEquals(relatedType.getMLong(), ODataEntryMockUtil.VALUE_MLONG);
}
@Test
public void testCreateODataEntryProperty() {
try {
EdmEntitySet edmEntitySet = EdmMockUtilV2.mockEdmEntitySet(JPATypeMock.ENTITY_NAME, false);
EdmEntityType edmEntityType = edmEntitySet.getEntityType();
jpaEntity = new JPAEntity(edmEntityType, edmEntitySet);
jpaEntity.create(ODataEntryMockUtil.mockODataEntryProperties(JPATypeMock.ENTITY_NAME));
} catch (ODataJPARuntimeException e) {
fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage()
+ ODataJPATestConstants.EXCEPTION_MSG_PART_2);
} catch (EdmException e) {
fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage()
+ ODataJPATestConstants.EXCEPTION_MSG_PART_2);
}
JPATypeMock jpaTypeMock = (JPATypeMock) jpaEntity.getJPAEntity();
assertEquals(jpaTypeMock.getMInt(), ODataEntryMockUtil.VALUE_MINT);
assertEquals(jpaTypeMock.getMString(), ODataEntryMockUtil.VALUE_MSTRING);
assertTrue(jpaTypeMock.getMDateTime().equals(ODataEntryMockUtil.VALUE_DATE_TIME));
}
@Test
public void testUpdateODataEntry() {
try {
EdmEntitySet edmEntitySet = EdmMockUtilV2.mockEdmEntitySet(JPATypeMock.ENTITY_NAME, false);
EdmEntityType edmEntityType = edmEntitySet.getEntityType();
jpaEntity = new JPAEntity(edmEntityType, edmEntitySet);
JPATypeMock jpaTypeMock = new JPATypeMock();
jpaEntity.setJPAEntity(jpaTypeMock);
jpaEntity.update(ODataEntryMockUtil.mockODataEntry(JPATypeMock.ENTITY_NAME));
} catch (ODataJPARuntimeException e) {
fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage()
+ ODataJPATestConstants.EXCEPTION_MSG_PART_2);
} catch (EdmException e) {
fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage()
+ ODataJPATestConstants.EXCEPTION_MSG_PART_2);
}
JPATypeMock jpaTypeMock = (JPATypeMock) jpaEntity.getJPAEntity();
assertEquals(jpaTypeMock.getMInt(), 0);//Key should not be changed
assertEquals(jpaTypeMock.getMString(), ODataEntryMockUtil.VALUE_MSTRING);
assertTrue(jpaTypeMock.getMDateTime().equals(ODataEntryMockUtil.VALUE_DATE_TIME));
}
@Test
public void testUpdateODataEntryProperty() {
try {
EdmEntitySet edmEntitySet = EdmMockUtilV2.mockEdmEntitySet(JPATypeMock.ENTITY_NAME, false);
EdmEntityType edmEntityType = edmEntitySet.getEntityType();
jpaEntity = new JPAEntity(edmEntityType, edmEntitySet);
JPATypeMock jpaTypeMock = new JPATypeMock();
jpaEntity.setJPAEntity(jpaTypeMock);
jpaEntity.update(ODataEntryMockUtil.mockODataEntryProperties(JPATypeMock.ENTITY_NAME));
} catch (ODataJPARuntimeException e) {
fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage()
+ ODataJPATestConstants.EXCEPTION_MSG_PART_2);
} catch (EdmException e) {
fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage()
+ ODataJPATestConstants.EXCEPTION_MSG_PART_2);
}
JPATypeMock jpaTypeMock = (JPATypeMock) jpaEntity.getJPAEntity();
assertEquals(jpaTypeMock.getMInt(), 0);//Key should not be changed
assertEquals(jpaTypeMock.getMString(), ODataEntryMockUtil.VALUE_MSTRING);
assertTrue(jpaTypeMock.getMDateTime().equals(ODataEntryMockUtil.VALUE_DATE_TIME));
}
}