/*******************************************************************************
* Copyright 2013 SAP AG
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package com.sap.core.odata.processor.core.jpa.access.model;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.io.InputStream;
import org.junit.BeforeClass;
import org.junit.Test;
import com.sap.core.odata.processor.core.jpa.mock.ODataJPAContextMock;
public class JPAEdmMappingModelServiceTest extends JPAEdmMappingModelService {
private static JPAEdmMappingModelServiceTest objJPAEdmMappingModelServiceTest;
private static final String MAPPING_FILE_CORRECT = "SalesOrderProcessingMappingModels.xml";
private static final String MAPPING_FILE_INCORRECT = "TEST.xml";
private static int VARIANT_MAPPING_FILE; // 0 FOR INCORRECT, 1 FOR CORRECT
private static String PERSISTENCE_UNIT_NAME_JPA = "salesorderprocessing";
private static String PERSISTENCE_UNIT_NAME_EDM = "SalesOrderProcessing";
private static String ENTITY_TYPE_NAME_JPA = "SalesOrderHeader";
private static String ENTITY_TYPE_NAME_EDM = "SalesOrder";
private static String ENTITY_SET_NAME_EDM = "SalesOrders";
private static String RELATIONSHIP_NAME_JPA = "salesOrderItems";
private static String RELATIONSHIP_NAME_EDM = "SalesOrderItemDetails";
private static String ATTRIBUTE_NAME_JPA = "netAmount";
private static String ATTRIBUTE_NAME_EDM = "NetAmount";
private static String EMBEDDABLE_TYPE_NAME_JPA = "SalesOrderItemKey";
private static String EMBEDDABLE_ATTRIBUTE_NAME_JPA = "liId";
private static String EMBEDDABLE_ATTRIBUTE_NAME_EDM = "ID";
private static String EMBEDDABLE_TYPE_2_NAME_JPA = "SalesOrderItemKey";
private static String ENTITY_TYPE_NAME_JPA_WRONG = "SalesOrderHeaders";
private static String RELATIONSHIP_NAME_JPA_WRONG = "value";
private static String EMBEDDABLE_TYPE_NAME_JPA_WRONG = "SalesOrderItemKeys";
public JPAEdmMappingModelServiceTest() {
super(ODataJPAContextMock.mockODataJPAContext());
}
@BeforeClass
public static void setup() {
objJPAEdmMappingModelServiceTest = new JPAEdmMappingModelServiceTest();
VARIANT_MAPPING_FILE = 1;
objJPAEdmMappingModelServiceTest.loadMappingModel();
}
@Test
public void testLoadMappingModel() {
VARIANT_MAPPING_FILE = 1;
loadMappingModel();
assertTrue(isMappingModelExists());
}
@Test
public void testLoadMappingModelNegative() {
VARIANT_MAPPING_FILE = 0;
loadMappingModel();
assertFalse(isMappingModelExists());
// reset it for other JUnits
VARIANT_MAPPING_FILE = 1;
loadMappingModel();
}
@Test
public void testIsMappingModelExists() {
assertTrue(objJPAEdmMappingModelServiceTest.isMappingModelExists());
}
@Test
public void testGetJPAEdmMappingModel() {
assertNotNull(objJPAEdmMappingModelServiceTest.getJPAEdmMappingModel());
}
@Test
public void testMapJPAPersistenceUnit() {
assertEquals(PERSISTENCE_UNIT_NAME_EDM, objJPAEdmMappingModelServiceTest.mapJPAPersistenceUnit(PERSISTENCE_UNIT_NAME_JPA));
}
@Test
public void testMapJPAPersistenceUnitNegative() {
assertNull(objJPAEdmMappingModelServiceTest.mapJPAPersistenceUnit(PERSISTENCE_UNIT_NAME_EDM));// Wrong value to bring null
}
@Test
public void testMapJPAEntityType() {
assertEquals(ENTITY_TYPE_NAME_EDM, objJPAEdmMappingModelServiceTest.mapJPAEntityType(ENTITY_TYPE_NAME_JPA));
}
@Test
public void testMapJPAEntityTypeNegative() {
assertNull(objJPAEdmMappingModelServiceTest.mapJPAEntityType(ENTITY_TYPE_NAME_JPA_WRONG));// Wrong value to bring null
}
@Test
public void testMapJPAEntitySet() {
assertEquals(ENTITY_SET_NAME_EDM, objJPAEdmMappingModelServiceTest.mapJPAEntitySet(ENTITY_TYPE_NAME_JPA));
}
@Test
public void testMapJPAEntitySetNegative() {
assertNull(objJPAEdmMappingModelServiceTest.mapJPAEntitySet(ENTITY_TYPE_NAME_JPA_WRONG));// Wrong value to bring null
}
@Test
public void testMapJPAAttribute() {
assertEquals(ATTRIBUTE_NAME_EDM, objJPAEdmMappingModelServiceTest.mapJPAAttribute(ENTITY_TYPE_NAME_JPA, ATTRIBUTE_NAME_JPA));
}
@Test
public void testMapJPAAttributeNegative() {
assertNull(objJPAEdmMappingModelServiceTest.mapJPAAttribute(ENTITY_TYPE_NAME_JPA, ATTRIBUTE_NAME_JPA + "AA"));// Wrong value to bring null
}
@Test
public void testMapJPARelationship() {
assertEquals(RELATIONSHIP_NAME_EDM, objJPAEdmMappingModelServiceTest.mapJPARelationship(ENTITY_TYPE_NAME_JPA, RELATIONSHIP_NAME_JPA));
}
@Test
public void testMapJPARelationshipNegative() {
assertNull(objJPAEdmMappingModelServiceTest.mapJPARelationship(ENTITY_TYPE_NAME_JPA, RELATIONSHIP_NAME_JPA_WRONG));// Wrong value to bring null
}
@Test
public void testMapJPAEmbeddableType() {
assertEquals("SalesOrderLineItemKey", objJPAEdmMappingModelServiceTest.mapJPAEmbeddableType("SalesOrderItemKey"));
}
@Test
public void testMapJPAEmbeddableTypeNegative() {
assertNull(objJPAEdmMappingModelServiceTest.mapJPAEmbeddableType(EMBEDDABLE_TYPE_NAME_JPA_WRONG));// Wrong value to bring null
}
@Test
public void testMapJPAEmbeddableTypeAttribute() {
assertEquals(EMBEDDABLE_ATTRIBUTE_NAME_EDM, objJPAEdmMappingModelServiceTest.mapJPAEmbeddableTypeAttribute(EMBEDDABLE_TYPE_NAME_JPA, EMBEDDABLE_ATTRIBUTE_NAME_JPA));
}
@Test
public void testMapJPAEmbeddableTypeAttributeNegative() {
assertNull(objJPAEdmMappingModelServiceTest.mapJPAEmbeddableTypeAttribute(EMBEDDABLE_TYPE_NAME_JPA_WRONG, EMBEDDABLE_ATTRIBUTE_NAME_JPA));
}
@Test
public void testCheckExclusionOfJPAEntityType() {
assertTrue(!objJPAEdmMappingModelServiceTest.checkExclusionOfJPAEntityType(ENTITY_TYPE_NAME_JPA));
}
@Test
public void testCheckExclusionOfJPAAttributeType() {
assertTrue(!objJPAEdmMappingModelServiceTest.checkExclusionOfJPAAttributeType(ENTITY_TYPE_NAME_JPA, ATTRIBUTE_NAME_JPA));
}
@Test
public void testCheckExclusionOfJPAEmbeddableType() {
assertTrue(!objJPAEdmMappingModelServiceTest.checkExclusionOfJPAEmbeddableType(EMBEDDABLE_TYPE_2_NAME_JPA));
}
@Test
public void testCheckExclusionOfJPAEmbeddableAttributeType() {
assertTrue(!objJPAEdmMappingModelServiceTest.checkExclusionOfJPAEmbeddableAttributeType(EMBEDDABLE_TYPE_NAME_JPA, EMBEDDABLE_ATTRIBUTE_NAME_JPA));
}
/**
* This method is for loading the xml file for testing.
*/
@Override
protected InputStream loadMappingModelInputStream() {
if (VARIANT_MAPPING_FILE == 1) {
return ClassLoader.getSystemResourceAsStream(MAPPING_FILE_CORRECT);
} else {
return ClassLoader.getSystemResourceAsStream(MAPPING_FILE_INCORRECT);
}
}
}