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.ResultResultProtos.ResultResult.PublicationDataset;
import eu.dnetlib.iis.referenceextraction.dataset.schemas.DocumentToDataSet;
import eu.dnetlib.iis.wf.export.actionmanager.module.VerificationUtils.Expectations;
/**
* @author mhorst
*
*/
public class DocumentToDatasetActionBuilderModuleFactoryTest extends AbstractActionBuilderModuleFactoryTest<DocumentToDataSet> {
// ----------------------- CONSTRUCTORS -------------------
public DocumentToDatasetActionBuilderModuleFactoryTest() throws Exception {
super(DocumentToDataSetActionBuilderModuleFactory.class, AlgorithmName.document_referencedDatasets);
}
// ----------------------- TESTS --------------------------
@Test(expected = TrustLevelThresholdExceededException.class)
public void testBuildBelowThreshold() throws Exception {
// given
DocumentToDataSet documentToDataset = buildDocumentToDataset("documentId", "datasetId", 0.4f);
ActionBuilderModule<DocumentToDataSet> module = factory.instantiate(config, agent, actionSetId);
// execute
module.build(documentToDataset);
}
@Test
public void testBuild() throws Exception {
// given
String docId = "documentId";
String datasetId = "datasetId";
float matchStrength = 0.9f;
ActionBuilderModule<DocumentToDataSet> module = factory.instantiate(config, agent, actionSetId);
// execute
List<AtomicAction> actions = module.build(buildDocumentToDataset(docId, datasetId, matchStrength));
// assert
assertNotNull(actions);
assertEquals(2, actions.size());
AtomicAction action = actions.get(0);
assertNotNull(action);
assertNotNull(action.getRowKey());
assertEquals(actionSetId, action.getRawSet());
assertEquals(datasetId, action.getTargetColumn());
assertEquals(docId, action.getTargetRowKey());
assertEquals(RelType.resultResult.toString() + '_' + SubRelType.publicationDataset + '_'
+ PublicationDataset.RelName.isRelatedTo, action.getTargetColumnFamily());
Expectations expectations = new Expectations(docId, datasetId, matchStrength,
KindProtos.Kind.relation, RelType.resultResult, SubRelType.publicationDataset,
PublicationDataset.RelName.isRelatedTo.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(datasetId, action.getTargetRowKey());
assertEquals(RelType.resultResult.toString() + '_' + SubRelType.publicationDataset + '_'
+ PublicationDataset.RelName.isRelatedTo, action.getTargetColumnFamily());
expectations.setSource(datasetId);
expectations.setTarget(docId);
assertOafRel(action.getTargetValue(), expectations);
}
// ----------------------- PRIVATE --------------------------
private static DocumentToDataSet buildDocumentToDataset(String docId, String datasetId,
float confidenceLevel) {
DocumentToDataSet.Builder builder = DocumentToDataSet.newBuilder();
builder.setDocumentId(docId);
builder.setDatasetId(datasetId);
builder.setConfidenceLevel(confidenceLevel);
return builder.build();
}
}