package dk.statsbiblioteket.medieplatform.hadoop; import dk.statsbiblioteket.doms.central.connectors.BackendInvalidCredsException; import dk.statsbiblioteket.doms.central.connectors.BackendInvalidResourceException; import dk.statsbiblioteket.doms.central.connectors.BackendMethodFailedException; import dk.statsbiblioteket.doms.central.connectors.EnhancedFedora; import dk.statsbiblioteket.medieplatform.autonomous.ConfigConstants; import org.apache.hadoop.io.Text; import org.apache.hadoop.mrunit.mapreduce.ReduceDriver; import org.testng.annotations.Test; import java.io.IOException; import java.util.Arrays; import java.util.Date; import static org.mockito.Matchers.anyList; import static org.mockito.Matchers.anyListOf; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.testng.Assert.fail; public class DomsSaverReducerTest { @Test public void testSimplest() throws IOException, BackendInvalidCredsException, BackendMethodFailedException, BackendInvalidResourceException { ReduceDriver<Text, Text, Text, Text> reduceDriver; String testPid = "uuid:testPid"; String batchID = "B400022028241-RT1"; String jpylyzer = "JPYLYZER"; String jpylyzerOutput = "<jpylyzer/>"; final EnhancedFedora mockFedora = mock(EnhancedFedora.class); when(mockFedora.findObjectFromDCIdentifier(anyString())).thenReturn(Arrays.asList(testPid)); doThrow(new IllegalArgumentException()).when(mockFedora).modifyDatastreamByValue( anyString(), anyString(), anyString(), anyListOf(String.class), anyString()); doReturn(new Date()).when(mockFedora).modifyDatastreamByValue( eq(testPid), eq(jpylyzer), anyString(), anyListOf(String.class), anyString()); try { mockFedora.modifyDatastreamByValue(null, null, null, null, null); fail(); } catch (IllegalArgumentException e) { } reduceDriver = ReduceDriver.newReduceDriver( new DomsSaverReducer() { @Override protected EnhancedFedora createFedoraClient(Context context) throws IOException { return mockFedora; } }); reduceDriver.getConfiguration().setIfUnset(ConfigConstants.BATCH_ID, batchID); reduceDriver.getConfiguration().setIfUnset(DomsSaverReducer.HADOOP_SAVER_DATASTREAM, jpylyzer); Text key = new Text(batchID + "/testFile"); reduceDriver.withInput(key, Arrays.asList(new Text(jpylyzerOutput))); reduceDriver.withOutput(key, new Text(testPid)); reduceDriver.runTest(); } }