package hudson.plugins.tfs.commands;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import hudson.plugins.tfs.SwedishLocaleTestCase;
import hudson.plugins.tfs.Util;
import hudson.plugins.tfs.commands.BriefHistoryCommand;
import hudson.plugins.tfs.model.ChangeSet;
import hudson.plugins.tfs.util.MaskedArgumentListBuilder;
import java.io.StringReader;
import java.util.Calendar;
import java.util.List;
import java.util.Locale;
import org.junit.Test;
public class BriefHistoryCommandTest extends SwedishLocaleTestCase {
@Test
public void assertBriefHistoryArguments() {
ServerConfigurationProvider config = mock(ServerConfigurationProvider.class);
when(config.getUrl()).thenReturn("https//tfs02.codeplex.com");
when(config.getUserName()).thenReturn("snd\\user_cp");
when(config.getUserPassword()).thenReturn("password");
Calendar fromTimestamp = Util.getCalendar(2006, 12, 01, 01, 01, 01);
Calendar toTimestamp = Util.getCalendar(2008, 06, 27, 20, 00, 0);
MaskedArgumentListBuilder arguments = new BriefHistoryCommand(config, "$/tfsandbox", fromTimestamp, toTimestamp).getArguments();
assertNotNull("Arguments were null", arguments);
assertEquals("history $/tfsandbox -noprompt -version:D2006-12-01T01:01:01Z~D2008-06-27T20:00:00Z -recursive -format:brief -server:https//tfs02.codeplex.com -login:snd\\user_cp,password", arguments.toStringWithQuote());
}
@Test
public void assertNoChangesWithEmptyOutput() throws Exception {
BriefHistoryCommand command = new BriefHistoryCommand(mock(ServerConfigurationProvider.class), "$/tfsandbox", Calendar.getInstance(), null);
List<ChangeSet> list = command.parse(new StringReader(""));
assertEquals("Number of change sets was incorrect", 0, list.size());
}
@Test
public void assertChangesWithEmptyToolOutput() throws Exception {
BriefHistoryCommand command = new BriefHistoryCommand(mock(ServerConfigurationProvider.class), "$/tfsandbox", Calendar.getInstance(), null);
StringReader reader = new StringReader("No history entries were found for the item and version combination specified.\n\n");
List<ChangeSet> list = command.parse(reader);
assertEquals("Number of change sets was incorrect", 0, list.size());
}
@Test
public void assertChangesWithChangeOutput() throws Exception {
StringReader reader = new StringReader(
"Changeset User Date Comment\n" +
"--------- -------------- -------------------- ----------------------------------------------------------------------------\n" +
"\n" +
"12495 SND\\redsolo_cp 2008-jun-27 13:21:25 changed and created one\n" +
"12493 SND\\redsolo_cp 2008-jun-27 13:19:41 changed and created one\n" +
"12492 SND\\redsolo_cp 2008-jun-27 13:11:15 first file\n" +
"12472 RNO\\_MCLWEB 2008-jun-27 11:16:06 Created team project folder $/tfsandbox via the Team Project Creation Wizard\n");
BriefHistoryCommand command = new BriefHistoryCommand(mock(ServerConfigurationProvider.class), "$/tfsandbox", Util.getCalendar(2008, 06, 01), null);
List<ChangeSet> list = command.parse(reader);
assertEquals("Number of change sets was incorrect", 4, list.size());
}
@Test
public void assertChangesWithNoComment() throws Exception {
StringReader reader = new StringReader(
"Changeset User Date Comment\n" +
"--------- -------------- -------------------- ----------------------------------------------------------------------------\n" +
"\n" +
"12495 SND\\redsolo_cp 2008-jun-27 13:21:25\n");
BriefHistoryCommand command = new BriefHistoryCommand(mock(ServerConfigurationProvider.class), "$/tfsandbox", Util.getCalendar(2008, 06, 01), null);
List<ChangeSet> list = command.parse(reader);
assertEquals("Number of change sets was incorrect", 1, list.size());
}
@Test
public void assertChangesWithOldChangeset() throws Exception {
StringReader reader = new StringReader(
"Changeset User Date Comment\n" +
"--------- -------------- -------------------- ----------------------------------------------------------------------------\n" +
"\n" +
"12495 SND\\redsolo_cp 2008-jun-27 13:21:25 changed and created one\n" +
"12493 SND\\redsolo_cp 2008-jun-27 13:19:41 changed and created one\n" +
"12492 SND\\redsolo_cp 2008-jun-27 13:11:15 first file\n" +
"12472 RNO\\_MCLWEB 2008-jun-20 11:16:06 Created team project folder $/tfsandbox via the Team Project Creation Wizard\n");
BriefHistoryCommand command = new BriefHistoryCommand(mock(ServerConfigurationProvider.class), "$/tfsandbox", Util.getCalendar(2008, 06, 21), null);
List<ChangeSet> list = command.parse(reader);
assertEquals("Number of change sets was incorrect", 3, list.size());
assertEquals("Version was incorrect", "12495", list.get(0).getVersion());
assertEquals("User was incorrect", "redsolo_cp", list.get(0).getUser());
assertEquals("Domain was incorrect", "SND", list.get(0).getDomain());
assertEquals("Comment was incorrect", "changed and created one", list.get(0).getComment());
}
@Test
public void assertPollChangesWithUsLocaleOutput() throws Exception {
Locale.setDefault(Locale.US);
StringReader reader = new StringReader(
"Changeset User Date Comment\n" +
"--------- ------------ ----------------------- ----------------------------------------------------------------------------\n" +
"\n" +
"59977 TLR\\U0000000 Jul 9, 2008 10:23:46 AM Test for Hudson TFS\n");
BriefHistoryCommand command = new BriefHistoryCommand(mock(ServerConfigurationProvider.class), "$/tfsandbox", Util.getCalendar(2008, 06, 01), null);
List<ChangeSet> list = command.parse(reader);
assertEquals("Number of change sets was incorrect", 1, list.size());
assertEquals("Version was incorrect", "59977", list.get(0).getVersion());
assertEquals("User was incorrect", "U0000000", list.get(0).getUser());
assertEquals("Domain was incorrect", "TLR", list.get(0).getDomain());
assertEquals("Comment was incorrect", "Test for Hudson TFS", list.get(0).getComment());
}
}