// no way to compare two versions from two different pagination pages using the UI. Thus we have to build the
// URL and load the compare page manually. Update the code when we remove this UI limitation.
// ChangesPane changesPane = historyTab.compare("1.1", currentVersion).getChangesPane();
String queryString = String.format("viewer=changes&rev1=1.1&rev2=%s", currentVersion);
getUtil().gotoPage(getTestClassName(), testPage.getMetaDataValue("page"), "view", queryString);
ChangesPane changesPane = new ChangesPane();
// Version summary.
String today = new SimpleDateFormat("yyyy/MM/dd").format(new Date());
Assert.assertTrue(changesPane.getFromVersionSummary().startsWith(
"From version 1.1\nedited by Administrator\non " + today));
Assert.assertTrue(changesPane.getToVersionSummary().startsWith(
"To version " + currentVersion + "\nedited by Alice\non " + today));
Assert.assertEquals("Change comment: Deleted object", changesPane.getChangeComment());
// Meta data changes.
Assert.assertEquals(Arrays.asList("Title", "Parent", "Document author", "Tags"),
changesPane.getChangedMetaData());
Assert.assertEquals("<del>T</del><ins>Compar</ins>e<ins> ver</ins>s<ins>ions </ins>t<ins>est</ins>",
changesPane.getMetaDataChanges("Title"));
Assert.assertEquals("<ins>Sandbox.WebHome</ins>", changesPane.getMetaDataChanges("Parent"));
Assert.assertEquals("XWiki.A<del>dm</del><ins>l</ins>i<del>n</del><ins>ce</ins>",
changesPane.getMetaDataChanges("Document author"));
Assert.assertEquals("<ins>bar</ins>", changesPane.getMetaDataChanges("Tags"));
// Content changes.
Assert.assertEquals("@@ -1,3 +1,3 @@\n one\n-two\n-<del>th</del>r<del>ee</del>\n"
+ "+<ins>**</ins>two<ins>**</ins>\n+<ins>fou</ins>r", changesPane.getContentChanges());
// Attachment changes.
Assert.assertEquals(Arrays.asList("SmallAttachment.txt: Attachment has been added"),
changesPane.getAttachmentChanges());
// Comment changes.
Assert.assertEquals(Arrays.asList("Comment number 0 added"), changesPane.getCommentChangeSummaries());
Assert.assertEquals("@@ -1,0 +1,3 @@\n+first line\n+line in between\n+second line",
changesPane.getCommentChanges(0, "Comment content"));
// Object changes.
Assert.assertEquals(Arrays.asList("Object number 0 of type XWiki.JavaScriptExtension added"),
changesPane.getObjectChangeSummaries());
Assert.assertEquals("<ins>onDemand</ins>",
changesPane.getObjectChanges("XWiki.JavaScriptExtension", 0, "Use this extension"));
// Class changes.
Assert.assertEquals(Arrays.asList("Added property age"), changesPane.getClassChanges());
}