package com.temenos.interaction.sdk.interaction; /* * #%L * interaction-sdk * %% * Copyright (C) 2012 - 2013 Temenos Holdings N.V. * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.List; import org.junit.Test; import org.odata4j.edm.EdmDataServices; import org.odata4j.edm.EdmEntityContainer; import org.odata4j.edm.EdmEntitySet; import org.odata4j.edm.EdmEntityType; import org.odata4j.edm.EdmProperty; import org.odata4j.edm.EdmSchema; import org.odata4j.edm.EdmSimpleType; import com.temenos.interaction.core.entity.EntityMetadata; import com.temenos.interaction.core.entity.Metadata; import com.temenos.interaction.core.entity.vocabulary.Vocabulary; import com.temenos.interaction.core.entity.vocabulary.terms.TermIdField; import com.temenos.interaction.core.entity.vocabulary.terms.TermValueType; /** * Unit test for {@link InteractionModel}. */ public class TestInteractionModel { @Test public void testGetUriTemplateParametersMetadata() { Metadata mockMetadata = createMockCustomersMetadata(); InteractionModel model = new InteractionModel(mockMetadata); assertTrue(model.getResourceStateMachines().size() == 1); assertEquals("Customer", model.getResourceStateMachines().get(0).getEntityName()); assertEquals("{id2},'{id1}',{id4},'{id3}'", model.getResourceStateMachines().get(0).getPathParametersTemplate()); } //@Test public void testGetUriTemplateParametersEdmDataServices() { EdmDataServices mockMetadata = createMockCustomersEdmDataServices(); InteractionModel model = new InteractionModel(mockMetadata); assertTrue(model.getResourceStateMachines().size() == 1); assertEquals("Customer", model.getResourceStateMachines().get(0).getEntityName()); assertEquals("{id2},'{id1}',{id4},'{id3}'", model.getResourceStateMachines().get(0).getPathParametersTemplate()); } @Test public void testEntitySetsEdmDataServices() { EdmDataServices mockEdmMetadata = createMockCustomersEdmDataServices(); InteractionModel model = new InteractionModel(mockEdmMetadata); assertEquals(1, model.getResourceStateMachines().size()); assertEquals("Customers", model.getResourceStateMachines().get(0).getCollectionState().getName()); assertEquals("Customer", model.getResourceStateMachines().get(0).getEntityName()); } private Metadata createMockCustomersMetadata() { //Define vocabulary for this entity Metadata metadata = new Metadata("Customers"); EntityMetadata vocs = new EntityMetadata("Customer"); Vocabulary id1 = new Vocabulary(); id1.setTerm(new TermIdField(true)); vocs.setPropertyVocabulary("id1", id1); Vocabulary id2 = new Vocabulary(); id2.setTerm(new TermIdField(true)); id2.setTerm(new TermValueType(TermValueType.INTEGER_NUMBER)); vocs.setPropertyVocabulary("id2", id2); Vocabulary id3 = new Vocabulary(); id3.setTerm(new TermIdField(true)); id3.setTerm(new TermValueType(TermValueType.DATE)); vocs.setPropertyVocabulary("id3", id3); Vocabulary id4 = new Vocabulary(); id4.setTerm(new TermIdField(true)); id4.setTerm(new TermValueType(TermValueType.BOOLEAN)); vocs.setPropertyVocabulary("id4", id4); metadata.setEntityMetadata(vocs); return metadata; } private EdmDataServices createMockCustomersEdmDataServices() { EdmDataServices.Builder mockEDS = EdmDataServices.newBuilder(); //Mock EdmDataServices List<String> keys = new ArrayList<String>(); keys.add("id1"); List<EdmProperty.Builder> properties = new ArrayList<EdmProperty.Builder>(); EdmProperty.Builder ep = EdmProperty.newBuilder("id1").setType(EdmSimpleType.STRING); properties.add(ep); EdmEntityType.Builder eet = EdmEntityType.newBuilder().setNamespace("MyNamespace").setAlias("MyAlias").setName("Customer").addKeys(keys).addProperties(properties); EdmEntitySet.Builder ees = EdmEntitySet.newBuilder().setName("Customers").setEntityType(eet); List<EdmEntityType.Builder> mockEntityTypes = new ArrayList<EdmEntityType.Builder>(); mockEntityTypes.add(eet); List<EdmEntitySet.Builder> mockEntitySets = new ArrayList<EdmEntitySet.Builder>(); mockEntitySets.add(ees); EdmEntityContainer.Builder eec = EdmEntityContainer.newBuilder().setName("MyEntityContainer").addEntitySets(mockEntitySets); List<EdmEntityContainer.Builder> mockEntityContainers = new ArrayList<EdmEntityContainer.Builder>(); mockEntityContainers.add(eec); EdmSchema.Builder es = EdmSchema.newBuilder().setNamespace("MyNamespace").setAlias("MyAlias").addEntityTypes(mockEntityTypes).addEntityContainers(mockEntityContainers); List<EdmSchema.Builder> mockSchemas = new ArrayList<EdmSchema.Builder>(); mockSchemas.add(es); mockEDS.addSchemas(mockSchemas); return mockEDS.build(); } }