package eu.dnetlib.iis.wf.export.actionmanager.module;
import static eu.dnetlib.iis.wf.export.actionmanager.module.VerificationUtils.assertOafRel;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.util.List;
import org.junit.Test;
import eu.dnetlib.actionmanager.actions.AtomicAction;
import eu.dnetlib.data.proto.KindProtos;
import eu.dnetlib.data.proto.RelTypeProtos.RelType;
import eu.dnetlib.data.proto.RelTypeProtos.SubRelType;
import eu.dnetlib.data.proto.ResultProjectProtos.ResultProject.Outcome;
import eu.dnetlib.iis.referenceextraction.project.schemas.DocumentToProject;
import eu.dnetlib.iis.wf.export.actionmanager.module.VerificationUtils.Expectations;
/**
* @author mhorst
*
*/
public class DocumentToProjectActionBuilderModuleFactoryTest extends AbstractActionBuilderModuleFactoryTest<DocumentToProject> {
// ----------------------- CONSTRUCTORS --------------------------
public DocumentToProjectActionBuilderModuleFactoryTest() throws Exception {
super(DocumentToProjectActionBuilderModuleFactory.class, AlgorithmName.document_referencedProjects);
}
// ----------------------- TESTS ---------------------------------
@Test(expected = TrustLevelThresholdExceededException.class)
public void testBuildBelowThreshold() throws Exception {
// given
DocumentToProject documentToProject = buildDocumentToProject("documentId", "projectId", 0.4f);
ActionBuilderModule<DocumentToProject> module = factory.instantiate(config, agent, actionSetId);
// execute
module.build(documentToProject);
}
@Test
public void testBuild() throws Exception {
// given
String docId = "documentId";
String projectId = "projectId";
float matchStrength = 0.9f;
ActionBuilderModule<DocumentToProject> module = factory.instantiate(config, agent, actionSetId);
// execute
List<AtomicAction> actions = module.build(buildDocumentToProject(docId, projectId, matchStrength));
// assert
assertNotNull(actions);
assertEquals(2, actions.size());
AtomicAction action = actions.get(0);
assertNotNull(action);
assertNotNull(action.getRowKey());
assertEquals(actionSetId, action.getRawSet());
assertEquals(projectId, action.getTargetColumn());
assertEquals(docId, action.getTargetRowKey());
assertEquals(RelType.resultProject.toString() + '_' + SubRelType.outcome + '_'
+ Outcome.RelName.isProducedBy, action.getTargetColumnFamily());
Expectations expectations = new Expectations(docId, projectId, matchStrength,
KindProtos.Kind.relation, RelType.resultProject, SubRelType.outcome,
Outcome.RelName.isProducedBy.toString());
assertOafRel(action.getTargetValue(), expectations);
// checking backward relation
action = actions.get(1);
assertNotNull(action);
assertNotNull(action.getRowKey());
assertEquals(agent, action.getAgent());
assertEquals(actionSetId, action.getRawSet());
assertEquals(docId, action.getTargetColumn());
assertEquals(projectId, action.getTargetRowKey());
assertEquals(RelType.resultProject.toString() + '_' + SubRelType.outcome + '_'
+ Outcome.RelName.produces, action.getTargetColumnFamily());
expectations.setSource(projectId);
expectations.setTarget(docId);
expectations.setRelationClass(Outcome.RelName.produces.toString());
assertOafRel(action.getTargetValue(), expectations);
}
// ----------------------- PRIVATE --------------------------
private static DocumentToProject buildDocumentToProject(String docId, String projectId,
float confidenceLevel) {
DocumentToProject.Builder builder = DocumentToProject.newBuilder();
builder.setDocumentId(docId);
builder.setProjectId(projectId);
builder.setConfidenceLevel(confidenceLevel);
return builder.build();
}
}