package org.easysoa.registry;
import org.apache.log4j.Logger;
import org.easysoa.registry.test.AbstractRegistryTest;
import org.easysoa.registry.types.EndpointConsumption;
import org.easysoa.registry.types.ids.EndpointId;
import org.easysoa.registry.types.ids.SoaNodeId;
import org.easysoa.registry.utils.RelationsHelper;
import org.junit.Assert;
import org.junit.Test;
import org.nuxeo.ecm.core.api.DocumentModel;
import org.nuxeo.ecm.core.api.DocumentModelList;
import com.google.inject.Inject;
/**
*
* @author mkalam-alami
*/
public class RelationsTest extends AbstractRegistryTest {
@SuppressWarnings("unused")
private static Logger logger = Logger.getLogger(RelationsTest.class);
@Inject
DocumentService documentService;
@Test
public void testRelationCreationAndAccess() throws Exception {
DocumentModel endpointConsumptionModel = documentService.create(documentManager, new SoaNodeId(
EndpointConsumption.DOCTYPE, "Foo"));
DocumentModel endpointModel = documentService.create(documentManager, new EndpointId("Foo", "Bar"));
// Create and read relation
boolean creationSuccess = RelationsHelper.createRelation(documentManager, endpointConsumptionModel,
EndpointConsumption.PREDICATE_CONSUMES, endpointModel);
Assert.assertTrue("Relation creation must be successful", creationSuccess);
DocumentModelList accessResult = RelationsHelper.getOutgoingRelations(documentManager, endpointConsumptionModel,
EndpointConsumption.PREDICATE_CONSUMES);
Assert.assertEquals("Relation creation & access must be successful", 1, accessResult.size());
accessResult = RelationsHelper.getIncomingRelations(documentManager, endpointModel,
EndpointConsumption.PREDICATE_CONSUMES);
Assert.assertEquals("Alternate relation access must be successful", 1, accessResult.size());
// Delete it and re-read it
boolean deletionSuccess = RelationsHelper.deleteRelation(documentManager, endpointConsumptionModel,
EndpointConsumption.PREDICATE_CONSUMES, endpointModel);
Assert.assertTrue("Relation deletion must be successful", deletionSuccess);
accessResult = RelationsHelper.getOutgoingRelations(documentManager, endpointConsumptionModel,
EndpointConsumption.PREDICATE_CONSUMES);
Assert.assertEquals("Relation deletion must be effective", 0, accessResult.size());
// Re-create it and delete it in other ways
RelationsHelper.createRelation(documentManager, endpointConsumptionModel,
EndpointConsumption.PREDICATE_CONSUMES, endpointModel);
RelationsHelper.deleteOutgoingRelations(documentManager, endpointConsumptionModel,
EndpointConsumption.PREDICATE_CONSUMES);
accessResult = RelationsHelper.getOutgoingRelations(documentManager, endpointConsumptionModel,
EndpointConsumption.PREDICATE_CONSUMES);
Assert.assertEquals("Alternate relation deletion must be effective", 0, accessResult.size());
RelationsHelper.createRelation(documentManager, endpointConsumptionModel,
EndpointConsumption.PREDICATE_CONSUMES, endpointModel);
RelationsHelper.deleteIncomingRelations(documentManager, endpointModel,
EndpointConsumption.PREDICATE_CONSUMES);
accessResult = RelationsHelper.getOutgoingRelations(documentManager, endpointConsumptionModel,
EndpointConsumption.PREDICATE_CONSUMES);
Assert.assertEquals("Alternate relation deletion must be effective", 0, accessResult.size());
}
}