package hudson.plugins.tfs; import static org.junit.Assert.*; import hudson.plugins.tfs.model.ChangeLogSet; import hudson.plugins.tfs.model.ChangeSet; import hudson.plugins.tfs.model.ChangeSet.Item; import java.io.Reader; import java.io.StringReader; import org.junit.Test; public class ChangeSetReaderTest { @Test public void assertParsingTwoXmlChangeSets() throws Exception { Reader reader = new StringReader("<?xml version=\"1.0\" encoding=\"UTF-8\"?><changelog>" + "<changeset version=\"1122\">" + "<date>2009-01-12T00:00:00Z</date>" + "<user>snd\\user</user>" + "<comment>comment</comment>" + "<items>" + "<item action=\"add\">path</item>" + "<item action=\"delete\">path2</item>" + "</items>" + "</changeset>" + "</changelog>"); ChangeSetReader changesetReader = new ChangeSetReader(); ChangeLogSet logset = changesetReader.parse(null, reader); ChangeSet changeset = logset.iterator().next(); assertEquals("User is incorrect", "user", changeset.getUser()); assertEquals("Domain is incorrect", "snd", changeset.getDomain()); assertEquals("Comment is incorrect", "comment", changeset.getComment()); assertEquals("Version is incorrect", "1122", changeset.getVersion()); assertEquals("Date is incorrect", Util.getCalendar(2009, 1, 12).getTime(), changeset.getDate()); assertEquals("Number of items in change set was incorrect", 2, changeset.getItems().size()); Item item = changeset.getItems().get(0); assertEquals("Action is incorrect", "add", item.getAction()); assertEquals("Path is incorrect", "path", item.getPath()); item = changeset.getItems().get(1); assertEquals("Action is incorrect", "delete", item.getAction()); assertEquals("Path is incorrect", "path2", item.getPath()); } @Test public void assertItemHasParent() throws Exception { Reader reader = new StringReader("<?xml version=\"1.0\" encoding=\"UTF-8\"?><changelog>" + "<changeset version=\"1122\">" + "<date>2009-01-12T00:00:00Z</date>" + "<user>snd\\user</user>" + "<comment>comment</comment>" + "<items>" + "<item action=\"add\">path</item>" + "<item action=\"delete\">path2</item>" + "</items>" + "</changeset>" + "</changelog>"); ChangeSetReader changesetReader = new ChangeSetReader(); ChangeLogSet logset = changesetReader.parse(null, reader); ChangeSet changeset = logset.iterator().next(); Item item = changeset.getItems().get(0); assertNotNull("The item's parent change set cant be null", item.getParent()); assertSame("The item's parent is not the same as the change set it belongs to", changeset, item.getParent()); } public void assertXmlWithEscapedCharsIsReadCorrectly() throws Exception { Reader reader = new StringReader("<?xml version=\"1.0\" encoding=\"UTF-8\"?><changelog>" + "<changeset version=\"1122\">" + "<date>2009-01-12T00:00:00Z</date>" + "<user>snd\\user</user>" + "<comment>Just <testing> "what" happens when I use the & character...Hudson does not seem to like it!</comment>" + "<items>" + "<item action=\"add\">path</item>" + "<item action=\"delete\">path2</item>" + "</items>" + "</changeset>" + "</changelog>"); ChangeSetReader changesetReader = new ChangeSetReader(); ChangeLogSet logset = changesetReader.parse(null, reader); ChangeSet changeset = logset.iterator().next(); assertEquals("The chage set's comment is incorrect", "Just <testing> \"what\" happens when I use the & character...Hudson does not seem to like it!", changeset.getComment()); } @Test public void assertParsingOfKeywordCheckedInByIsParsed() throws Exception { Reader reader = new StringReader("<?xml version=\"1.0\" encoding=\"UTF-8\"?><changelog>" + "<changeset version=\"1122\">" + "<date>2009-01-12T00:00:00Z</date>" + "<user>snd\\user</user>" + "<checked_in_by_user>snd\\other_user</checked_in_by_user>" + "<comment>comment</comment>" + "<items>" + "<item action=\"add\">path</item>" + "<item action=\"delete\">path2</item>" + "</items>" + "</changeset>" + "</changelog>"); ChangeSetReader changesetReader = new ChangeSetReader(); ChangeLogSet logset = changesetReader.parse(null, reader); ChangeSet changeset = logset.iterator().next(); assertEquals("Checked in by user is incorrect", "snd\\other_user", changeset.getCheckedInBy()); } }