package gov.loc.repository.bagit.writer;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.net.URISyntaxException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashSet;
import java.util.Set;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import gov.loc.repository.bagit.PrivateConstructorTest;
import gov.loc.repository.bagit.domain.Manifest;
import gov.loc.repository.bagit.hash.StandardSupportedAlgorithms;
public class PayloadWriterTest extends PrivateConstructorTest {
@Rule
public TemporaryFolder folder= new TemporaryFolder();
@Test
public void testClassIsWellDefined() throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException{
assertUtilityClassWellDefined(PayloadWriter.class);
}
@Test
public void testWritePayloadFiles() throws IOException, URISyntaxException{
Path rootDir = Paths.get(getClass().getClassLoader().getResource("bags/v0_97/bag").toURI());
Path testFile = Paths.get(getClass().getClassLoader().getResource("bags/v0_97/bag/data/dir1/test3.txt").toURI());
Manifest manifest = new Manifest(StandardSupportedAlgorithms.MD5);
manifest.getFileToChecksumMap().put(testFile, "someHashValue");
Set<Manifest> payloadManifests = new HashSet<>();
payloadManifests.add(manifest);
File outputDir = folder.newFolder();
File copiedFile = new File(outputDir, "data/dir1/test3.txt");
assertFalse(copiedFile.exists() || copiedFile.getParentFile().exists());
PayloadWriter.writePayloadFiles(payloadManifests, Paths.get(outputDir.toURI()), rootDir);
assertTrue(copiedFile.exists() && copiedFile.getParentFile().exists());
}
}