package org.easysoa.registry.systems; import org.apache.log4j.Logger; import org.easysoa.registry.DocumentService; import org.easysoa.registry.test.AbstractRegistryTest; import org.easysoa.registry.types.Endpoint; import org.easysoa.registry.types.IntelligentSystem; import org.easysoa.registry.types.IntelligentSystemTreeRoot; import org.easysoa.registry.types.SystemTreeRoot; import org.easysoa.registry.types.TaggingFolder; import org.easysoa.registry.types.ids.EndpointId; import org.easysoa.registry.types.ids.SoaNodeId; import org.easysoa.registry.utils.DocumentModelHelper; import org.junit.Assert; import org.junit.Test; import org.nuxeo.ecm.core.api.ClientException; import org.nuxeo.ecm.core.api.DocumentModel; import org.nuxeo.ecm.core.api.DocumentModelList; import org.nuxeo.ecm.core.test.annotations.Granularity; import org.nuxeo.ecm.core.test.annotations.RepositoryConfig; import org.nuxeo.runtime.test.runner.Features; import com.google.inject.Inject; /** * * @author mkalam-alami * */ @Features(EasySOADefaultsFeature.class) @RepositoryConfig(cleanup = Granularity.CLASS) public class EnvironmentClassifierTest extends AbstractRegistryTest { @SuppressWarnings("unused") private static Logger logger = Logger.getLogger(EnvironmentClassifierTest.class); @Inject DocumentService documentService; @Test public void testClassification() throws ClientException { // Create manual SystemTreeRoot DocumentModel strModel = documentService.createDocument(documentManager, SystemTreeRoot.DOCTYPE, "MyRoot", DocumentModelHelper .getWorkspacesPath(documentManager, defaultSubprojectId), "MyRoot"); // Create System in it DocumentModel systemModel = documentService.create(documentManager, new SoaNodeId(defaultSubprojectId, TaggingFolder.DOCTYPE, "MySystem"), strModel.getPathAsString()); // Create Endpoint in it DocumentModel endpointModel = documentService.create(documentManager, new EndpointId(defaultSubprojectId, "Production", "MyEndpoint"), systemModel.getPathAsString()); documentManager.saveDocument(endpointModel); documentManager.save(); // Make sure that there are now the endpoint in the By Environment tree DocumentModel istrModel = documentService.findDocument(documentManager, defaultSubprojectId, IntelligentSystemTreeRoot.DOCTYPE, "environment:environment"); Assert.assertNotNull("A By Environment intelligent system tree root must have been created", istrModel); Assert.assertEquals("The By Environment STR must contain 1 system", 1, documentManager.getChildren(istrModel.getRef()).size()); DocumentModel productionSystem = documentService.findDocument(documentManager, defaultSubprojectId, IntelligentSystem.DOCTYPE, "Production"); Assert.assertNotNull("A 'Production' system must have been created", productionSystem); DocumentModelList productionSystemChildren = documentManager.getChildren(productionSystem.getRef()); Assert.assertEquals("The 'Production' system must have a child", 1, productionSystemChildren.size()); DocumentModel childModel = productionSystemChildren.get(0); Assert.assertTrue("The document in the 'Production' system must be the expected endpoint", Endpoint.DOCTYPE.equals(childModel.getType()) && "MyEndpoint".equals(childModel.getPropertyValue(Endpoint.XPATH_URL))); } }