package com.autoupdater.installer.installation.strategies;
import static org.fest.assertions.api.Assertions.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.junit.Test;
import com.autoupdater.installer.Paths;
import com.google.common.io.Files;
public class TestUnzipInstallationStrategy {
@Test
public void testProcess() {
try {
// given
String testContent = "some test content";
String sourcePath = Paths.Library.testDir + File.separator + "testZip.zip";
File source = new File(sourcePath);
Files.createParentDirs(source);
source.createNewFile();
source.deleteOnExit();
ZipOutputStream zus = new ZipOutputStream(new FileOutputStream(source));
zus.putNextEntry(new ZipEntry("testZip.txt"));
zus.write(testContent.getBytes());
zus.closeEntry();
zus.close();
String destinationDirectoryPath = Paths.Library.testDir + File.separator
+ "testProcess";
File destinationDirectory = new File(destinationDirectoryPath);
destinationDirectory.deleteOnExit();
// when
new UnzipInstallationStrategy().process(source, destinationDirectoryPath);
File destination = new File(destinationDirectoryPath + File.separator + "testZip.txt");
// then
assertThat(destination).as(
"process(File,File) should unzip file to a selected location").exists();
assertThat(Files.toString(destination, Charset.defaultCharset())).as(
"process(File,File) should contains file's extracted content").isEqualTo(
testContent);
} catch (IOException e) {
fail("process(File,File) should not throw exception while working on accessible files");
}
}
}