package eu.dnetlib.iis.wf.affmatching.bucket.projectorg.read;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.*;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import eu.dnetlib.iis.wf.affmatching.bucket.projectorg.model.AffMatchDocumentOrganization;
import eu.dnetlib.iis.wf.affmatching.bucket.projectorg.model.AffMatchDocumentProject;
import eu.dnetlib.iis.wf.affmatching.bucket.projectorg.model.AffMatchProjectOrganization;
/**
* @author madryk
*/
@RunWith(MockitoJUnitRunner.class)
public class DocumentOrganizationFetcherTest {
@InjectMocks
private DocumentOrganizationFetcher documentOrganizationFetcher = new DocumentOrganizationFetcher();
@Mock
private ProjectOrganizationReader projectOrganizationReader;
@Mock
private DocumentProjectFetcher documentProjectFetcher;
@Mock
private DocumentOrganizationCombiner documentOrganizationCombiner;
private Float docProjConfidenceLevelThreshold = 0.8f;
@Mock
private JavaSparkContext sc;
private String projOrgPath = "/input/proj_org";
@Mock
private JavaRDD<AffMatchDocumentProject> documentProject;
@Mock
private JavaRDD<AffMatchProjectOrganization> projectOrganization;
@Mock
private JavaRDD<AffMatchDocumentOrganization> documentOrganizations;
@Before
public void setup() {
documentOrganizationFetcher.setDocProjConfidenceLevelThreshold(docProjConfidenceLevelThreshold);
documentOrganizationFetcher.setProjOrgPath(projOrgPath);
}
//------------------------ TESTS --------------------------
@Test
public void fetchDocumentOrganizations() {
// given
when(documentProjectFetcher.fetchDocumentProjects()).thenReturn(documentProject);
when(projectOrganizationReader.readProjectOrganizations(sc, projOrgPath)).thenReturn(projectOrganization);
when(documentOrganizationCombiner.combine(documentProject, projectOrganization, docProjConfidenceLevelThreshold)).thenReturn(documentOrganizations);
// execute
JavaRDD<AffMatchDocumentOrganization> retDocumentOrganizations = documentOrganizationFetcher.fetchDocumentOrganizations();
// assert
assertTrue(retDocumentOrganizations == documentOrganizations);
verify(documentProjectFetcher).fetchDocumentProjects();
verify(projectOrganizationReader).readProjectOrganizations(sc, projOrgPath);
verify(documentOrganizationCombiner).combine(documentProject, projectOrganization, docProjConfidenceLevelThreshold);
}
}