Repository: olingo-odata4 Updated Branches: refs/heads/olingo786 d9d33abe8 -> 5d66c9cf1
[OLINGO-786] Enhance Edm Tests Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/5d66c9cf Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/5d66c9cf Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/5d66c9cf Branch: refs/heads/olingo786 Commit: 5d66c9cf18d6abf77bc460fb441ba72adf255e22 Parents: d9d33ab Author: Christian Amend <[email protected]> Authored: Mon Oct 12 15:59:33 2015 +0200 Committer: Christian Amend <[email protected]> Committed: Mon Oct 12 15:59:33 2015 +0200 ---------------------------------------------------------------------- .../olingo/commons/core/edm/AbstractEdm.java | 5 +- .../core/edm/EdmNavigationPropertyImpl.java | 4 +- .../olingo/commons/core/edm/EdmTermImpl.java | 4 +- .../commons/core/edm/ActionMapKeyTest.java | 20 ++- .../provider/EdmEntityContainerImplTest.java | 22 +--- .../core/edm/provider/EdmEntitySetImplTest.java | 35 ++++- .../edm/provider/EdmEntityTypeImplTest.java | 5 + .../edm/provider/EdmFunctionImportImplTest.java | 10 ++ .../provider/EdmNavigationPropertyImplTest.java | 11 ++ .../core/edm/provider/EdmParameterImplTest.java | 1 + .../core/edm/provider/EdmPropertyImplTest.java | 1 + .../core/edm/provider/EdmProviderImplTest.java | 26 ++++ .../provider/EdmReferentialConstraintTest.java | 53 ++++++++ .../edm/provider/EdmReturnTypeImplTest.java | 5 +- .../core/edm/provider/EdmSchemaImplTest.java | 63 +++++++-- .../core/edm/provider/EdmTermImplTest.java | 131 +++++++++++++++++-- .../edm/provider/EdmTypeDefinitionImplTest.java | 25 +++- 17 files changed, 370 insertions(+), 51 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d66c9cf/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java index a32f3ab..71f4d70 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java @@ -192,9 +192,10 @@ public abstract class AbstractEdm implements Edm { @Override public EdmAction getUnboundAction(final FullQualifiedName actionName) { - EdmAction action = unboundActions.get(actionName); + final FullQualifiedName fqn = resolvePossibleAlias(actionName); + EdmAction action = unboundActions.get(fqn); if (action == null) { - action = createUnboundAction(resolvePossibleAlias(actionName)); + action = createUnboundAction(fqn); if (action != null) { unboundActions.put(actionName, action); } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d66c9cf/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmNavigationPropertyImpl.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmNavigationPropertyImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmNavigationPropertyImpl.java index 73b918b..bf5dbc6 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmNavigationPropertyImpl.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmNavigationPropertyImpl.java @@ -116,8 +116,8 @@ public class EdmNavigationPropertyImpl extends AbstractEdmNamed implements EdmEl } } - referentialConstraints = referentialConstraintsLocal; + referentialConstraints = Collections.unmodifiableList(referentialConstraintsLocal); } - return Collections.unmodifiableList(referentialConstraints); + return referentialConstraints; } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d66c9cf/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTermImpl.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTermImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTermImpl.java index 8a7603c..b15831c 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTermImpl.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmTermImpl.java @@ -65,7 +65,9 @@ public class EdmTermImpl extends AbstractEdmNamed implements EdmTerm { ? typeInfo.getEnumType() : typeInfo.isComplexType() ? typeInfo.getComplexType() - : null; + : typeInfo.isEntityType() + ? typeInfo.getEntityType() + : null; if (termType == null) { throw new EdmException("Cannot find type with name: " + typeInfo.getFullQualifiedName()); } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d66c9cf/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/ActionMapKeyTest.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/ActionMapKeyTest.java b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/ActionMapKeyTest.java index 96b8f37..8c0a58e 100644 --- a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/ActionMapKeyTest.java +++ b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/ActionMapKeyTest.java @@ -29,7 +29,6 @@ import org.junit.Test; public class ActionMapKeyTest { private final FullQualifiedName fqn = new FullQualifiedName("namespace", "name"); - private final FullQualifiedName fqnType = new FullQualifiedName("namespace2", "name2"); @Test @@ -53,6 +52,23 @@ public class ActionMapKeyTest { } fail("EdmException expected for parameters: " + fqn + " " + typeName + " " + collection); } + + @Test + public void testNotEquals() { + ActionMapKey key; + ActionMapKey someKey; + + key = new ActionMapKey(fqn, fqnType, false); + someKey = new ActionMapKey(fqnType, fqnType, false); + assertNotSame(key, someKey); + + key = new ActionMapKey(fqn, fqnType, false); + someKey = new ActionMapKey(fqnType, fqnType, true); + assertNotSame(key, someKey); + + key = new ActionMapKey(fqn, fqnType, false); + assertNotSame(key, null); + } @Test public void testEqualsMethod() { @@ -60,6 +76,8 @@ public class ActionMapKeyTest { ActionMapKey someKey; key = new ActionMapKey(fqn, fqnType, false); + assertEquals(key, key); + someKey = new ActionMapKey(fqn, fqnType, false); assertEquals(key, someKey); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d66c9cf/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImplTest.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImplTest.java b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImplTest.java index 82aa145..1786c53 100644 --- a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImplTest.java +++ b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImplTest.java @@ -135,38 +135,25 @@ public class EdmEntityContainerImplTest { CsdlEntityContainerInfo entityContainerInfo = new CsdlEntityContainerInfo().setContainerName(containerName); EdmEntityContainer container = new EdmEntityContainerImpl(edm, provider, entityContainerInfo); - boolean thrown = false; try { container.getEntitySet(null); - } catch (EdmException e) { - thrown = true; - } - if (!thrown) { fail("Expected EdmException not thrown"); + } catch (EdmException e) { } try { container.getSingleton(null); - } catch (EdmException e) { - thrown = true; - } - if (!thrown) { fail("Expected EdmException not thrown"); + } catch (EdmException e) { } try { container.getActionImport(null); - } catch (EdmException e) { - thrown = true; - } - if (!thrown) { fail("Expected EdmException not thrown"); + } catch (EdmException e) { } try { container.getFunctionImport(null); - } catch (EdmException e) { - thrown = true; - } - if (!thrown) { fail("Expected EdmException not thrown"); + } catch (EdmException e) { } } @@ -174,6 +161,7 @@ public class EdmEntityContainerImplTest { public void simpleContainerGetter() { assertEquals("name", container.getName()); assertEquals("space", container.getNamespace()); + assertEquals(new FullQualifiedName("space.name"), container.getFullQualifiedName()); } @Test http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d66c9cf/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntitySetImplTest.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntitySetImplTest.java b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntitySetImplTest.java index b80e59d..cf02023 100644 --- a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntitySetImplTest.java +++ b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntitySetImplTest.java @@ -19,7 +19,10 @@ package org.apache.olingo.server.core.edm.provider; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -29,6 +32,7 @@ import org.apache.olingo.commons.api.edm.EdmBindingTarget; import org.apache.olingo.commons.api.edm.EdmEntityContainer; import org.apache.olingo.commons.api.edm.EdmEntitySet; import org.apache.olingo.commons.api.edm.EdmEntityType; +import org.apache.olingo.commons.api.edm.EdmException; import org.apache.olingo.commons.api.edm.FullQualifiedName; import org.apache.olingo.commons.api.edm.provider.CsdlEdmProvider; import org.apache.olingo.commons.api.edm.provider.CsdlEntityContainerInfo; @@ -63,7 +67,6 @@ public class EdmEntitySetImplTest { final CsdlEntitySet entitySetProvider = new CsdlEntitySet() .setName(entitySetName) .setType(typeName) - .setIncludeInServiceDocument(true) .setNavigationPropertyBindings(Arrays.asList( new CsdlNavigationPropertyBinding().setPath("path") .setTarget(containerName.getFullQualifiedNameAsString() + "/" + entitySetName))); @@ -79,5 +82,35 @@ public class EdmEntitySetImplTest { assertNull(entitySet.getRelatedBindingTarget(null)); final EdmBindingTarget target = entitySet.getRelatedBindingTarget("path"); assertEquals(entitySetName, target.getName()); + assertTrue(entitySet.isIncludeInServiceDocument()); + } + + @Test + public void entitySetIncludeInServiceDocumentFalseAndInvalidType() throws Exception { + CsdlEdmProvider provider = mock(CsdlEdmProvider.class); + EdmProviderImpl edm = new EdmProviderImpl(provider); + + final FullQualifiedName containerName = new FullQualifiedName("ns", "container"); + final CsdlEntityContainerInfo containerInfo = new CsdlEntityContainerInfo().setContainerName(containerName); + when(provider.getEntityContainerInfo(containerName)).thenReturn(containerInfo); + final EdmEntityContainer entityContainer = new EdmEntityContainerImpl(edm, provider, containerInfo); + + final String entitySetName = "entitySet"; + final CsdlEntitySet entitySetProvider = new CsdlEntitySet() + .setName(entitySetName) + .setType("invalid.invalid") + .setIncludeInServiceDocument(false); + when(provider.getEntitySet(containerName, entitySetName)).thenReturn(entitySetProvider); + + final EdmEntitySet entitySet = new EdmEntitySetImpl(edm, entityContainer, entitySetProvider); + assertFalse(entitySet.isIncludeInServiceDocument()); + + try { + entitySet.getEntityType(); + fail("Expected an EdmException"); + } catch (EdmException e) { + assertEquals("Can´t find entity type: invalid.invalid for entity set or singleton: " + entitySetName, e + .getMessage()); + } } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d66c9cf/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntityTypeImplTest.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntityTypeImplTest.java b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntityTypeImplTest.java index ac36a8a..6cbabff 100644 --- a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntityTypeImplTest.java +++ b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntityTypeImplTest.java @@ -379,6 +379,11 @@ public class EdmEntityTypeImplTest { } @Test + public void openTypeDefaultIsFalse() { + assertFalse(baseType.isOpenType()); + } + + @Test public void abstractTypeWithAbstractBaseTypeDoesNotNeedKey() throws Exception { CsdlEdmProvider provider = mock(CsdlEdmProvider.class); EdmProviderImpl edm = new EdmProviderImpl(provider); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d66c9cf/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImplTest.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImplTest.java b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImplTest.java index 2131881..526badf 100644 --- a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImplTest.java +++ b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImplTest.java @@ -20,12 +20,15 @@ package org.apache.olingo.server.core.edm.provider; 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 static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.Arrays; import java.util.Collections; +import java.util.List; import org.apache.olingo.commons.api.edm.EdmEntityContainer; import org.apache.olingo.commons.api.edm.EdmFunction; @@ -75,14 +78,21 @@ public class EdmFunctionImportImplTest { final EdmFunctionImport functionImport = new EdmFunctionImportImpl(edm, entityContainer, functionImportProvider); assertEquals(functionImportName, entityContainer.getFunctionImport(functionImportName).getName()); assertEquals("functionImport", functionImport.getName()); + assertEquals(new FullQualifiedName("ns", functionImportName), functionImport.getFullQualifiedName()); + assertTrue(functionImport.isIncludeInServiceDocument()); final EdmFunction function = functionImport.getUnboundFunction(Collections.<String> emptyList()); assertEquals(functionName.getNamespace(), function.getNamespace()); assertEquals(functionName.getName(), function.getName()); + assertEquals(functionName, function.getFullQualifiedName()); assertFalse(function.isBound()); assertFalse(function.isComposable()); assertEquals(EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Boolean), function.getReturnType().getType()); assertEquals(entityContainer, functionImport.getEntityContainer()); assertNull(functionImport.getReturnedEntitySet()); + + List<EdmFunction> functions = functionImport.getUnboundFunctions(); + assertNotNull(functions); + assertEquals(1, functions.size()); } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d66c9cf/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmNavigationPropertyImplTest.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmNavigationPropertyImplTest.java b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmNavigationPropertyImplTest.java index 94f6b93..1053e1b 100644 --- a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmNavigationPropertyImplTest.java +++ b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmNavigationPropertyImplTest.java @@ -32,6 +32,7 @@ import java.util.List; import org.apache.olingo.commons.api.edm.EdmException; import org.apache.olingo.commons.api.edm.EdmNavigationProperty; +import org.apache.olingo.commons.api.edm.EdmReferentialConstraint; import org.apache.olingo.commons.api.edm.EdmType; import org.apache.olingo.commons.api.edm.FullQualifiedName; import org.apache.olingo.commons.api.edm.constants.EdmTypeKind; @@ -66,6 +67,7 @@ public class EdmNavigationPropertyImplTest { assertEquals("entity", type.getName()); assertNull(property.getReferencingPropertyName("referencedPropertyName")); assertNull(property.getPartner()); + assertFalse(property.containsTarget()); // Test caching EdmType cachedType = property.getType(); @@ -83,13 +85,22 @@ public class EdmNavigationPropertyImplTest { CsdlNavigationProperty propertyProvider = new CsdlNavigationProperty(); propertyProvider.setType(entityTypeName); propertyProvider.setNullable(false); + propertyProvider.setContainsTarget(true); List<CsdlReferentialConstraint> referentialConstraints = new ArrayList<CsdlReferentialConstraint>(); referentialConstraints.add(new CsdlReferentialConstraint().setProperty("property").setReferencedProperty( "referencedProperty")); propertyProvider.setReferentialConstraints(referentialConstraints); + EdmNavigationProperty property = new EdmNavigationPropertyImpl(edm, propertyProvider); assertEquals("property", property.getReferencingPropertyName("referencedProperty")); assertNull(property.getReferencingPropertyName("wrong")); + assertTrue(property.containsTarget()); + + assertNotNull(property.getReferentialConstraints()); + List<EdmReferentialConstraint> edmReferentialConstraints = property.getReferentialConstraints(); + assertEquals(1, edmReferentialConstraints.size()); + assertTrue(edmReferentialConstraints == property.getReferentialConstraints()); + } @Test http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d66c9cf/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmParameterImplTest.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmParameterImplTest.java b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmParameterImplTest.java index 5babbdb..8a25f38 100644 --- a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmParameterImplTest.java +++ b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmParameterImplTest.java @@ -120,6 +120,7 @@ public class EdmParameterImplTest { assertEquals(Integer.valueOf(12), parameter.getScale()); assertEquals(Integer.valueOf(128), parameter.getMaxLength()); assertFalse(parameter.isNullable()); + assertNull(parameter.getSrid()); } @Test(expected = EdmException.class) http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d66c9cf/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmPropertyImplTest.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmPropertyImplTest.java b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmPropertyImplTest.java index ff68098..346baf2 100644 --- a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmPropertyImplTest.java +++ b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmPropertyImplTest.java @@ -154,5 +154,6 @@ public class EdmPropertyImplTest { assertTrue(property.isUnicode()); assertFalse(property.isNullable()); assertEquals("x", property.getDefaultValue()); + assertNull(property.getSrid()); } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d66c9cf/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmProviderImplTest.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmProviderImplTest.java b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmProviderImplTest.java index c094b1d..6ce6ab8 100644 --- a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmProviderImplTest.java +++ b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmProviderImplTest.java @@ -32,6 +32,7 @@ import java.util.List; import org.apache.olingo.commons.api.ex.ODataException; import org.apache.olingo.commons.api.edm.Edm; +import org.apache.olingo.commons.api.edm.EdmAnnotations; import org.apache.olingo.commons.api.edm.EdmComplexType; import org.apache.olingo.commons.api.edm.EdmEntityContainer; import org.apache.olingo.commons.api.edm.EdmEntityType; @@ -40,6 +41,7 @@ import org.apache.olingo.commons.api.edm.EdmException; import org.apache.olingo.commons.api.edm.EdmTypeDefinition; import org.apache.olingo.commons.api.edm.FullQualifiedName; import org.apache.olingo.commons.api.edm.provider.CsdlAliasInfo; +import org.apache.olingo.commons.api.edm.provider.CsdlAnnotations; import org.apache.olingo.commons.api.edm.provider.CsdlComplexType; import org.apache.olingo.commons.api.edm.provider.CsdlEdmProvider; import org.apache.olingo.commons.api.edm.provider.CsdlEntityContainerInfo; @@ -81,6 +83,10 @@ public class EdmProviderImplTest { aliasInfos.add(new CsdlAliasInfo().setAlias("alias").setNamespace("namespace")); when(provider.getAliasInfos()).thenReturn(aliasInfos); + CsdlAnnotations annotationsGroup = new CsdlAnnotations(); + annotationsGroup.setTarget("FQN.FQN"); + when(provider.getAnnotationsGroup(FQN, null)).thenReturn(annotationsGroup); + edm = new EdmProviderImpl(provider); } @@ -112,6 +118,7 @@ public class EdmProviderImplTest { when(localProvider.getComplexType(fqn)).thenThrow(new ODataException("msg")); when(localProvider.getActions(fqn)).thenThrow(new ODataException("msg")); when(localProvider.getFunctions(fqn)).thenThrow(new ODataException("msg")); + when(localProvider.getAnnotationsGroup(fqn, null)).thenThrow(new ODataException("msg")); Edm localEdm = new EdmProviderImpl(localProvider); @@ -124,23 +131,34 @@ public class EdmProviderImplTest { // seperate because of signature try { localEdm.getUnboundAction(fqn); + fail("Expeced an EdmException"); } catch (EdmException e) { assertEquals("org.apache.olingo.commons.api.ex.ODataException: msg", e.getMessage()); } try { localEdm.getUnboundFunction(fqn, null); + fail("Expeced an EdmException"); } catch (EdmException e) { assertEquals("org.apache.olingo.commons.api.ex.ODataException: msg", e.getMessage()); } try { localEdm.getBoundAction(fqn, fqn, true); + fail("Expeced an EdmException"); } catch (EdmException e) { assertEquals("org.apache.olingo.commons.api.ex.ODataException: msg", e.getMessage()); } try { localEdm.getBoundFunction(fqn, fqn, true, null); + fail("Expeced an EdmException"); + } catch (EdmException e) { + assertEquals("org.apache.olingo.commons.api.ex.ODataException: msg", e.getMessage()); + } + + try { + localEdm.getAnnotationGroup(fqn, null); + fail("Expeced an EdmException"); } catch (EdmException e) { assertEquals("org.apache.olingo.commons.api.ex.ODataException: msg", e.getMessage()); } @@ -222,4 +240,12 @@ public class EdmProviderImplTest { assertNull(edm.getComplexType(WRONG_FQN)); } + + @Test + public void getAnnotations() { + EdmAnnotations annotationGroup = edm.getAnnotationGroup(FQN, null); + assertNotNull(annotationGroup); + + assertNull(edm.getAnnotationGroup(WRONG_FQN, null)); + } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d66c9cf/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmReferentialConstraintTest.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmReferentialConstraintTest.java b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmReferentialConstraintTest.java new file mode 100644 index 0000000..995584d --- /dev/null +++ b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmReferentialConstraintTest.java @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.olingo.server.core.edm.provider; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.mockito.Mockito.mock; + +import org.apache.olingo.commons.api.edm.Edm; +import org.apache.olingo.commons.api.edm.EdmReferentialConstraint; +import org.apache.olingo.commons.api.edm.provider.CsdlReferentialConstraint; +import org.apache.olingo.commons.core.edm.EdmReferentialConstraintImpl; +import org.junit.Test; + +public class EdmReferentialConstraintTest { + + @Test + public void initialConstraint() { + CsdlReferentialConstraint constraint = new CsdlReferentialConstraint(); + EdmReferentialConstraint edmConstraint = new EdmReferentialConstraintImpl(mock(Edm.class), constraint); + + assertNull(edmConstraint.getPropertyName()); + assertNull(edmConstraint.getReferencedPropertyName()); + } + + @Test + public void basicConstraint() { + CsdlReferentialConstraint constraint = new CsdlReferentialConstraint(); + constraint.setProperty("PropertyName"); + constraint.setReferencedProperty("referencedProperty"); + EdmReferentialConstraint edmConstraint = new EdmReferentialConstraintImpl(mock(Edm.class), constraint); + + assertEquals("PropertyName", edmConstraint.getPropertyName()); + assertEquals("referencedProperty", edmConstraint.getReferencedPropertyName()); + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d66c9cf/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmReturnTypeImplTest.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmReturnTypeImplTest.java b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmReturnTypeImplTest.java index ac36635..7b36854 100644 --- a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmReturnTypeImplTest.java +++ b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmReturnTypeImplTest.java @@ -55,6 +55,7 @@ public class EdmReturnTypeImplTest { assertNull(typeImpl.getPrecision()); assertNull(typeImpl.getMaxLength()); assertNull(typeImpl.getScale()); + assertNull(typeImpl.getSrid()); } @Test @@ -64,8 +65,10 @@ public class EdmReturnTypeImplTest { EdmReturnType typeImpl = new EdmReturnTypeImpl(mock(EdmProviderImpl.class), providerType); - assertEquals(EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.String), typeImpl.getType()); + EdmType cachedType = typeImpl.getType(); + assertEquals(EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.String), cachedType); assertTrue(typeImpl.isCollection()); + assertTrue(cachedType == typeImpl.getType()); } @Test(expected = EdmException.class) http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d66c9cf/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java index fd344c5..22a371e 100644 --- a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java +++ b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java @@ -27,10 +27,10 @@ import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.List; -import org.apache.olingo.commons.api.ex.ODataException; import org.apache.olingo.commons.api.edm.Edm; import org.apache.olingo.commons.api.edm.EdmAction; import org.apache.olingo.commons.api.edm.EdmActionImport; +import org.apache.olingo.commons.api.edm.EdmAnnotations; import org.apache.olingo.commons.api.edm.EdmComplexType; import org.apache.olingo.commons.api.edm.EdmEntityContainer; import org.apache.olingo.commons.api.edm.EdmEntitySet; @@ -43,10 +43,10 @@ import org.apache.olingo.commons.api.edm.EdmSchema; import org.apache.olingo.commons.api.edm.EdmSingleton; import org.apache.olingo.commons.api.edm.EdmTypeDefinition; import org.apache.olingo.commons.api.edm.FullQualifiedName; -import org.apache.olingo.commons.api.edm.provider.CsdlAbstractEdmProvider; import org.apache.olingo.commons.api.edm.provider.CsdlAction; import org.apache.olingo.commons.api.edm.provider.CsdlActionImport; import org.apache.olingo.commons.api.edm.provider.CsdlAliasInfo; +import org.apache.olingo.commons.api.edm.provider.CsdlAnnotations; import org.apache.olingo.commons.api.edm.provider.CsdlComplexType; import org.apache.olingo.commons.api.edm.provider.CsdlEdmProvider; import org.apache.olingo.commons.api.edm.provider.CsdlEntityContainer; @@ -60,6 +60,7 @@ import org.apache.olingo.commons.api.edm.provider.CsdlSchema; import org.apache.olingo.commons.api.edm.provider.CsdlSingleton; import org.apache.olingo.commons.api.edm.provider.CsdlTerm; import org.apache.olingo.commons.api.edm.provider.CsdlTypeDefinition; +import org.apache.olingo.commons.api.ex.ODataException; import org.apache.olingo.commons.core.edm.EdmProviderImpl; import org.junit.Before; import org.junit.Test; @@ -68,6 +69,8 @@ public class EdmSchemaImplTest { private EdmSchema schema; private Edm edm; + public static final String NAMESPACE = "org.namespace"; + public static final String ALIAS = "alias"; @Before public void before() { @@ -108,7 +111,8 @@ public class EdmSchemaImplTest { assertEquals(2, typeDefinitions.size()); for (EdmTypeDefinition def : typeDefinitions) { - assertTrue(def == edm.getTypeDefinition(new FullQualifiedName("org.namespace", def.getName()))); + assertTrue(def == edm.getTypeDefinition(new FullQualifiedName(NAMESPACE, def.getName()))); + assertTrue(def == edm.getTypeDefinition(new FullQualifiedName(ALIAS, def.getName()))); } } @@ -119,7 +123,8 @@ public class EdmSchemaImplTest { assertEquals(2, enumTypes.size()); for (EdmEnumType enumType : enumTypes) { - assertTrue(enumType == edm.getEnumType(new FullQualifiedName("org.namespace", enumType.getName()))); + assertTrue(enumType == edm.getEnumType(new FullQualifiedName(NAMESPACE, enumType.getName()))); + assertTrue(enumType == edm.getEnumType(new FullQualifiedName(ALIAS, enumType.getName()))); } } @@ -130,7 +135,8 @@ public class EdmSchemaImplTest { assertEquals(2, entityTypes.size()); for (EdmEntityType entityType : entityTypes) { - assertTrue(entityType == edm.getEntityType(new FullQualifiedName("org.namespace", entityType.getName()))); + assertTrue(entityType == edm.getEntityType(new FullQualifiedName(NAMESPACE, entityType.getName()))); + assertTrue(entityType == edm.getEntityType(new FullQualifiedName(ALIAS, entityType.getName()))); } } @@ -141,7 +147,8 @@ public class EdmSchemaImplTest { assertEquals(2, complexTypes.size()); for (EdmComplexType complexType : complexTypes) { - assertTrue(complexType == edm.getComplexType(new FullQualifiedName("org.namespace", complexType.getName()))); + assertTrue(complexType == edm.getComplexType(new FullQualifiedName(NAMESPACE, complexType.getName()))); + assertTrue(complexType == edm.getComplexType(new FullQualifiedName(ALIAS, complexType.getName()))); } } @@ -152,7 +159,8 @@ public class EdmSchemaImplTest { assertEquals(2, actions.size()); for (EdmAction action : actions) { - assertTrue(action == edm.getUnboundAction(new FullQualifiedName("org.namespace", action.getName()))); + assertTrue(action == edm.getUnboundAction(new FullQualifiedName(NAMESPACE, action.getName()))); + assertTrue(action == edm.getUnboundAction(new FullQualifiedName(ALIAS, action.getName()))); } } @@ -163,12 +171,30 @@ public class EdmSchemaImplTest { assertEquals(2, functions.size()); for (EdmFunction function : functions) { - FullQualifiedName functionName = new FullQualifiedName("org.namespace", function.getName()); + FullQualifiedName functionName = new FullQualifiedName(NAMESPACE, function.getName()); + assertTrue(function == edm.getUnboundFunction(functionName, null)); + + functionName = new FullQualifiedName(ALIAS, function.getName()); assertTrue(function == edm.getUnboundFunction(functionName, null)); } } @Test + public void getAnnotationGroups() { + List<EdmAnnotations> annotationGroups = schema.getAnnotationGroups(); + assertNotNull(annotationGroups); + assertEquals(2, annotationGroups.size()); + + for (EdmAnnotations annotationGroup : annotationGroups) { + FullQualifiedName targetName = new FullQualifiedName(annotationGroup.getTargetPath()); + assertTrue(annotationGroup == edm.getAnnotationGroup(targetName, null)); + targetName = new FullQualifiedName(annotationGroup.getTargetPath().replace(NAMESPACE, ALIAS)); + assertTrue(annotationGroup == edm.getAnnotationGroup(targetName, null)); + } + } + + + @Test public void getContainer() { EdmEntityContainer container = schema.getEntityContainer(); assertNotNull(container); @@ -205,10 +231,7 @@ public class EdmSchemaImplTest { assertTrue(container == edm.getEntityContainer(null)); } - private class LocalProvider extends CsdlAbstractEdmProvider { - - private static final String ALIAS = "alias"; - private static final String NAMESPACE = "org.namespace"; + private class LocalProvider implements CsdlEdmProvider { @Override public CsdlEnumType getEnumType(final FullQualifiedName enumTypeName) throws ODataException { @@ -350,6 +373,17 @@ public class EdmSchemaImplTest { functions.add(new CsdlFunction().setName("function1")); functions.add(new CsdlFunction().setName("function2")); providerSchema.setFunctions(functions); + + List<CsdlAnnotations> annotationGroups = new ArrayList<CsdlAnnotations>(); + annotationGroups.add(new CsdlAnnotations().setTarget(NAMESPACE + ".entityType1")); + annotationGroups.add(new CsdlAnnotations().setTarget(NAMESPACE + ".entityType2")); + providerSchema.setAnnotationsGroup(annotationGroups); + + List<CsdlTerm> terms = new ArrayList<CsdlTerm>(); + terms.add(new CsdlTerm().setName("term1").setType("Edm.String")); + terms.add(new CsdlTerm().setName("term2").setType("Edm.String")); + providerSchema.setTerms(terms); + ArrayList<CsdlSchema> schemas = new ArrayList<CsdlSchema>(); schemas.add(providerSchema); return schemas; @@ -359,5 +393,10 @@ public class EdmSchemaImplTest { public CsdlEntityContainer getEntityContainer() throws ODataException { throw new RuntimeException("Provider must not be called in the schema case"); } + + @Override + public CsdlAnnotations getAnnotationsGroup(FullQualifiedName targetName, String qualifier) throws ODataException { + throw new RuntimeException("Provider must not be called in the schema case"); + } } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d66c9cf/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTermImplTest.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTermImplTest.java b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTermImplTest.java index c5919b4..cfd54bd 100644 --- a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTermImplTest.java +++ b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTermImplTest.java @@ -23,14 +23,22 @@ 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 static org.junit.Assert.fail; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import org.apache.olingo.commons.api.edm.Edm; +import org.apache.olingo.commons.api.edm.EdmComplexType; +import org.apache.olingo.commons.api.edm.EdmEntityType; +import org.apache.olingo.commons.api.edm.EdmEnumType; +import org.apache.olingo.commons.api.edm.EdmException; import org.apache.olingo.commons.api.edm.EdmPrimitiveType; import org.apache.olingo.commons.api.edm.EdmTerm; +import org.apache.olingo.commons.api.edm.EdmTypeDefinition; import org.apache.olingo.commons.api.edm.FullQualifiedName; import org.apache.olingo.commons.api.edm.TargetType; import org.apache.olingo.commons.api.edm.provider.CsdlAnnotation; @@ -68,32 +76,32 @@ public class EdmTermImplTest { derivedCsdlTerm.setAppliesTo(appliesTo); List<CsdlAnnotation> csdlAnnotations = new ArrayList<CsdlAnnotation>(); csdlAnnotations.add(new CsdlAnnotation().setTerm("name1")); - derivedCsdlTerm.setAnnotations(csdlAnnotations ); - + derivedCsdlTerm.setAnnotations(csdlAnnotations); + derivedCsdlTerm.setNullable(false); derivedCsdlTerm.setMaxLength(new Integer(15)); derivedCsdlTerm.setDefaultValue("abc"); derivedCsdlTerm.setPrecision(new Integer(14)); derivedCsdlTerm.setScale(new Integer(13)); - + when(provider.getTerm(derivedTermName)).thenReturn(derivedCsdlTerm); derivedTerm = new EdmTermImpl(edm, "namespace", derivedCsdlTerm); - + } @Test public void termBasics() throws Exception { assertEquals("name1", initialTerm.getName()); assertEquals(new FullQualifiedName("namespace", "name1"), initialTerm.getFullQualifiedName()); - + assertTrue(initialTerm.getAnnotations().isEmpty()); assertTrue(initialTerm.getAppliesTo().isEmpty()); assertNull(initialTerm.getBaseTerm()); EdmPrimitiveType type = (EdmPrimitiveType) initialTerm.getType(); assertEquals(type.getName(), "String"); - - //initial facets + + // initial facets assertTrue(initialTerm.isNullable()); assertNull(initialTerm.getDefaultValue()); assertNull(initialTerm.getMaxLength()); @@ -101,12 +109,12 @@ public class EdmTermImplTest { assertNull(initialTerm.getScale()); assertNull(initialTerm.getSrid()); } - - @Test + + @Test public void derivedTermTest() { assertEquals("name2", derivedTerm.getName()); assertEquals(new FullQualifiedName("namespace", "name2"), derivedTerm.getFullQualifiedName()); - + assertNotNull(derivedTerm.getBaseTerm()); assertEquals("name1", derivedTerm.getBaseTerm().getName()); assertFalse(derivedTerm.getAnnotations().isEmpty()); @@ -116,8 +124,8 @@ public class EdmTermImplTest { EdmPrimitiveType type = (EdmPrimitiveType) derivedTerm.getType(); assertEquals(type.getName(), "String"); - - //set facets + + // set facets assertFalse(derivedTerm.isNullable()); assertEquals("abc", derivedTerm.getDefaultValue()); assertEquals(new Integer(15), derivedTerm.getMaxLength()); @@ -126,4 +134,103 @@ public class EdmTermImplTest { assertNull(derivedTerm.getSrid()); } + @Test + public void termWithTypeDef() { + CsdlTerm csdlTerm = new CsdlTerm(); + FullQualifiedName csdlTerm1Name = new FullQualifiedName("namespace", "name1"); + csdlTerm.setName(csdlTerm1Name.getName()); + String namespaceAndName = "mySchema.TypeDef"; + String name = "TypeDef"; + csdlTerm.setType(namespaceAndName); + Edm edm = mock(Edm.class); + EdmTypeDefinition typeMock = mock(EdmTypeDefinition.class); + when(typeMock.getName()).thenReturn(name); + when(edm.getTypeDefinition(new FullQualifiedName(namespaceAndName))).thenReturn(typeMock); + EdmTerm localTerm = new EdmTermImpl(edm, "namespace", csdlTerm); + assertNotNull(localTerm.getType()); + assertEquals(name, localTerm.getType().getName()); + } + + @Test + public void termWithEnumType() { + CsdlTerm csdlTerm = new CsdlTerm(); + FullQualifiedName csdlTerm1Name = new FullQualifiedName("namespace", "name1"); + csdlTerm.setName(csdlTerm1Name.getName()); + String namespaceAndName = "mySchema.Enum"; + String name = "Enum"; + csdlTerm.setType(namespaceAndName); + Edm edm = mock(Edm.class); + EdmEnumType typeMock = mock(EdmEnumType.class); + when(typeMock.getName()).thenReturn(name); + when(edm.getEnumType(new FullQualifiedName(namespaceAndName))).thenReturn(typeMock); + EdmTerm localTerm = new EdmTermImpl(edm, "namespace", csdlTerm); + assertNotNull(localTerm.getType()); + assertEquals(name, localTerm.getType().getName()); + } + + @Test + public void termWithComplexType() { + CsdlTerm csdlTerm = new CsdlTerm(); + FullQualifiedName csdlTerm1Name = new FullQualifiedName("namespace", "name1"); + csdlTerm.setName(csdlTerm1Name.getName()); + String namespaceAndName = "mySchema.Complex"; + String name = "Complex"; + csdlTerm.setType(namespaceAndName); + Edm edm = mock(Edm.class); + EdmComplexType typeMock = mock(EdmComplexType.class); + when(typeMock.getName()).thenReturn(name); + when(edm.getComplexType(new FullQualifiedName(namespaceAndName))).thenReturn(typeMock); + EdmTerm localTerm = new EdmTermImpl(edm, "namespace", csdlTerm); + assertNotNull(localTerm.getType()); + assertEquals(name, localTerm.getType().getName()); + } + + @Test + public void termWithEntityType() { + CsdlTerm csdlTerm = new CsdlTerm(); + FullQualifiedName csdlTerm1Name = new FullQualifiedName("namespace", "name1"); + csdlTerm.setName(csdlTerm1Name.getName()); + String namespaceAndName = "mySchema.Entity"; + String name = "Entity"; + csdlTerm.setType(namespaceAndName); + Edm edm = mock(Edm.class); + EdmEntityType typeMock = mock(EdmEntityType.class); + when(typeMock.getName()).thenReturn(name); + when(edm.getEntityType(new FullQualifiedName(namespaceAndName))).thenReturn(typeMock); + EdmTerm localTerm = new EdmTermImpl(edm, "namespace", csdlTerm); + assertNotNull(localTerm.getType()); + assertEquals(name, localTerm.getType().getName()); + } + + @Test + public void invalidType() { + CsdlTerm csdlTerm = new CsdlTerm(); + FullQualifiedName csdlTerm1Name = new FullQualifiedName("namespace", "name1"); + csdlTerm.setName(csdlTerm1Name.getName()); + csdlTerm.setType("invalid.invalid"); + EdmTerm localTerm = new EdmTermImpl(mock(Edm.class), "namespace", csdlTerm); + try { + localTerm.getType(); + fail("Expected an EdmException"); + } catch (EdmException e) { + assertEquals("Cannot find type with name: invalid.invalid", e.getMessage()); + } + } + + @Test + public void invalidAppliesToContent() { + CsdlTerm csdlTerm = new CsdlTerm(); + FullQualifiedName csdlTerm1Name = new FullQualifiedName("namespace", "name1"); + csdlTerm.setName(csdlTerm1Name.getName()); + csdlTerm.setType("Edm.String"); + csdlTerm.setAppliesTo(Arrays.asList("Invalid")); + EdmTerm localTerm = new EdmTermImpl(mock(Edm.class), "namespace", csdlTerm); + + try { + localTerm.getAppliesTo(); + fail("Expected an EdmException"); + } catch (EdmException e) { + assertEquals("Invalid AppliesTo value: Invalid", e.getMessage()); + } + } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d66c9cf/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTypeDefinitionImplTest.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTypeDefinitionImplTest.java b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTypeDefinitionImplTest.java index 63d21f5..0cc37fa 100644 --- a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTypeDefinitionImplTest.java +++ b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTypeDefinitionImplTest.java @@ -21,6 +21,7 @@ package org.apache.olingo.server.core.edm.provider; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; import org.apache.olingo.commons.api.edm.EdmException; @@ -46,6 +47,7 @@ public class EdmTypeDefinitionImplTest { assertEquals("name", typeDefImpl.getName()); assertEquals("namespace", typeDefImpl.getNamespace()); + assertEquals(new FullQualifiedName("namespace.name"), typeDefImpl.getFullQualifiedName()); assertEquals(String.class, typeDefImpl.getDefaultType()); assertEquals(EdmTypeKind.DEFINITION, typeDefImpl.getKind()); assertEquals(EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.String), typeDefImpl.getUnderlyingType()); @@ -63,15 +65,34 @@ public class EdmTypeDefinitionImplTest { assertNull(typeDefImpl.getPrecision()); assertNull(typeDefImpl.getScale()); assertTrue(typeDefImpl.isUnicode()); + assertNull(typeDefImpl.getSrid()); } - @Test(expected = EdmException.class) + @Test public void invalidTypeResultsInEdmException() throws Exception { FullQualifiedName typeDefName = new FullQualifiedName("namespace", "name"); CsdlTypeDefinition providerTypeDef = new CsdlTypeDefinition().setName("typeDef").setUnderlyingType(new FullQualifiedName("wrong", "wrong")); EdmTypeDefinitionImpl def = new EdmTypeDefinitionImpl(mock(EdmProviderImpl.class), typeDefName, providerTypeDef); - def.getUnderlyingType(); + try { + def.getUnderlyingType(); + fail("Expected an EdmException"); + } catch (EdmException e) { + assertEquals("Invalid underlying type: wrong.wrong", e.getMessage()); + } + } + + @Test + public void nullTypeResultsInEdmException() throws Exception { + FullQualifiedName typeDefName = new FullQualifiedName("namespace", "name"); + CsdlTypeDefinition providerTypeDef = new CsdlTypeDefinition().setName("typeDef"); + EdmTypeDefinitionImpl def = new EdmTypeDefinitionImpl(mock(EdmProviderImpl.class), typeDefName, providerTypeDef); + try { + def.getUnderlyingType(); + fail("Expected an EdmException"); + } catch (EdmException e) { + assertEquals("Underlying Type for type definition: namespace.name must not be null.", e.getMessage()); + } } }
