package dw.cli.commands.itest;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import dw.cli.Output;
import dw.cli.Program;
import dw.cli.itest.TestHelper;
public class Test_HelpPrinter extends TestHelper {
@org.junit.Test
public void commandHelpPrintsGenericHelp() throws Exception {
Output output = runWithoutGenericArguments("help");
assertGenericSuccess(output);
assertIsGenericHelpMessage(output.out);
}
@org.junit.Test
public void commandHelpCanPrintHelpForAGivenCommand() throws Exception {
Output output = runWithoutGenericArguments("help", "getPagelist");
assertGenericSuccess(output);
assertTrue(output.out.contains("[-l] <namespace> [--depth <depth>]"));
}
@org.junit.Test
public void commandHelpPrintsGenericHelpIfQueriedWithInvalidCommand() throws Exception {
Output output = runWithoutGenericArguments("help", "doesntExist");
assertGenericSuccess(output);
assertIsGenericHelpMessage(output.out);
}
@org.junit.Test
public void optionHelpPrintsHelp() throws Exception {
Output output = runWithoutGenericArguments("--help");
assertGenericSuccess(output);
assertIsGenericHelpMessage(output.out);
}
@org.junit.Test
public void unexistingCommandPrintsHelp() throws Exception {
Output output = runWithArguments("doesntExist");
assertGenericError(output);
assertIsGenericHelpMessage(output.err);
}
@org.junit.Test
public void incorrectOptionsPrintsHelp() throws Exception {
List<String> args = new ArrayList<String>();
args.add("--urll"); args.add("http://localhost/myWiki/lib/exe/xmlrpc.php");
Output output = Program.run(args.toArray(new String[]{}));
assertGenericError(output);
assertIsGenericHelpMessage(output.err);
}
private void assertIsGenericHelpMessage(String message) {
assertMessageContainsGenericOptions(message);
assertMessageContainsListOfCommands(message);
assertMessageTellHowToGetHelpForAGivenCommand(message);
}
private void assertMessageContainsGenericOptions(String message){
assertTrue(message.contains("--user"));
assertTrue(message.contains("--url"));
assertTrue(message.contains("--help"));
assertTrue(message.contains("--password"));
}
private void assertMessageContainsListOfCommands(String message){
assertTrue(message.contains("getTitle"));
assertTrue(message.contains("getAttachments"));
assertTrue(message.contains("deleteAttachment"));
assertTrue(message.contains("getPagelist"));
}
private void assertMessageTellHowToGetHelpForAGivenCommand(String message) {
assertTrue(message.contains("help <command>"));
}
}