package hudson.plugins.tfs; import static org.custommonkey.xmlunit.XMLAssert.*; import java.io.StringWriter; import java.util.ArrayList; import hudson.plugins.tfs.model.ChangeSet; import org.custommonkey.xmlunit.XMLUnit; import org.junit.Before; import org.junit.Test; public class ChangeSetWriterTest { @Before public void setUp() { XMLUnit.setIgnoreWhitespace(true); XMLUnit.setNormalizeWhitespace(true); XMLUnit.setIgnoreComments(true); } @Test public void assertWriterOutputsCorrectChangeLogXml() throws Exception { ChangeSet changeset = new ChangeSet("1122", Util.getCalendar(2008, 12, 12).getTime(), "rnd\\user", "comment"); changeset.getItems().add(new ChangeSet.Item("path", "add")); changeset.getItems().add(new ChangeSet.Item("path2", "delete")); ArrayList<ChangeSet> sets = new ArrayList<ChangeSet>(); sets.add(changeset); ChangeSetWriter changesetWriter = new ChangeSetWriter(); StringWriter output = new StringWriter(); changesetWriter.write(sets, output); assertXMLEqual("<?xml version=\"1.0\" encoding=\"UTF-8\"?><changelog>" + "<changeset version=\"1122\">" + "<date>2008-12-12T00:00:00Z</date>" + "<user>rnd\\user</user>" + "<comment>comment</comment>" + "<items>" + "<item action=\"add\">path</item>" + "<item action=\"delete\">path2</item>" + "</items>" + "</changeset>" + "</changelog>", output.getBuffer().toString()); } @Test public void assertWriterIgnoredNullDomain() throws Exception { ChangeSet changeset = new ChangeSet("1122", Util.getCalendar(2008, 12, 12).getTime(), "user", "comment"); ArrayList<ChangeSet> sets = new ArrayList<ChangeSet>(); sets.add(changeset); ChangeSetWriter changesetWriter = new ChangeSetWriter(); StringWriter output = new StringWriter(); changesetWriter.write(sets, output); assertXMLEqual("<?xml version=\"1.0\" encoding=\"UTF-8\"?><changelog>" + "<changeset version=\"1122\">" + "<date>2008-12-12T00:00:00Z</date>" + "<user>user</user>" + "<comment>comment</comment>" + "</changeset>" + "</changelog>", output.getBuffer().toString()); } @Test public void assertXmlCharsAreEscaped() throws Exception { ChangeSet changeset = new ChangeSet("1122", Util.getCalendar(2008, 12, 12).getTime(), "user", "Just <testing> \"what\" happens when I use the & character...Hudson does not seem to like it!"); ArrayList<ChangeSet> sets = new ArrayList<ChangeSet>(); sets.add(changeset); ChangeSetWriter changesetWriter = new ChangeSetWriter(); StringWriter output = new StringWriter(); changesetWriter.write(sets, output); assertXMLEqual("<?xml version=\"1.0\" encoding=\"UTF-8\"?><changelog>" + "<changeset version=\"1122\">" + "<date>2008-12-12T00:00:00Z</date>" + "<user>user</user>" + "<comment>Just <testing> "what" happens when I use the & character...Hudson does not seem to like it!</comment>" + "</changeset>" + "</changelog>", output.getBuffer().toString()); } @Test public void assertCheckedInByUserIsWritten() throws Exception { ChangeSet changeset = new ChangeSet("1122", Util.getCalendar(2008, 12, 12).getTime(), "user", "Just <testing> \"what\" happens when I use the & character...Hudson does not seem to like it!"); changeset.setCheckedInBy("another_user"); ArrayList<ChangeSet> sets = new ArrayList<ChangeSet>(); sets.add(changeset); ChangeSetWriter changesetWriter = new ChangeSetWriter(); StringWriter output = new StringWriter(); changesetWriter.write(sets, output); assertXMLEqual("<?xml version=\"1.0\" encoding=\"UTF-8\"?><changelog>" + "<changeset version=\"1122\">" + "<date>2008-12-12T00:00:00Z</date>" + "<user>user</user>" + "<checked_in_by_user>another_user</checked_in_by_user>" + "<comment>Just <testing> "what" happens when I use the & character...Hudson does not seem to like it!</comment>" + "</changeset>" + "</changelog>", output.getBuffer().toString()); } }