package bvira;
import org.junit.Test;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.LinkedList;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
public class ToolUnitTests {
@Test
public void toolHasCommandLineEntryPoint() {
Tool.main(new String[]{});
}
@Test
public void printsUsageIfNoParametersSupplied() throws UnsupportedEncodingException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
Tool tool = new Tool(ps, null);
tool.execute(Arrays.<String>asList());
String content = baos.toString();
assertThat(content, is(Tool.bannerText + Tool.usageInstructions));
}
@Test
public void createCommandCreatesAProjectStructure() {
FileSystem fileSystem = mock(FileSystem.class);
Tool tool = new Tool(System.out, fileSystem);
LinkedList<String> args = new LinkedList<String>(Arrays.asList("create", "sample"));
tool.execute(args);
verify(fileSystem).mkdir("sample");
verify(fileSystem).mkdir("sample" + File.separator + "src");
verify(fileSystem).mkdir("sample" + File.separator + "test");
verify(fileSystem).mkdir("sample" + File.separator + "lib");
verify(fileSystem).mkdir("sample" + File.separator + "tools");
}
@Test
public void createCommandCopiesTools() {
FileSystem fileSystem = mock(FileSystem.class);
PrintStream printStream = mock(PrintStream.class);
Tool tool = new Tool(printStream, fileSystem);
LinkedList<String> args = new LinkedList<String>(Arrays.asList("create", "sample"));
tool.execute(args);
verify(fileSystem).copy("template" + File.separator + "tools", "sample" + File.separator + "tools");
}
}