Author: vmassol Date: 2008-01-27 14:32:24 +0100 (Sun, 27 Jan 2008) New Revision: 7093
Modified: xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/doc/XWikiDocumentArchiveTest.java Log: Added a unit test to prove that the diff and full content revision algorithm works fine Modified: xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/doc/XWikiDocumentArchiveTest.java =================================================================== --- xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/doc/XWikiDocumentArchiveTest.java 2008-01-26 14:44:08 UTC (rev 7092) +++ xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/doc/XWikiDocumentArchiveTest.java 2008-01-27 13:32:24 UTC (rev 7093) @@ -210,11 +210,7 @@ doc.setDocumentArchive(archive); String author = "XWiki.some author"; - doc.setContent("content 1.1"); - doc.setAuthor(author); - doc.setComment("initial, 1.1"); - doc.setDate(new Date()); - archive.updateArchive(doc, doc.getAuthor(), doc.getDate(), doc.getComment(), null, context); + addRevisionToHistory(archive, doc, "content 1.1", author, "initial 1.1"); XWikiDocument doc11 = (XWikiDocument) doc.clone(); doc.setContent("content 2.1\nqwe @ "); @@ -253,11 +249,7 @@ doc.setDocumentArchive(archive); String author = "XWiki.some author"; - doc.setContent("content 1.1"); - doc.setAuthor(author); - doc.setComment("initial, 1.1"); - doc.setDate(new Date()); - archive.updateArchive(doc, doc.getAuthor(), doc.getDate(), doc.getComment(), null, context); + addRevisionToHistory(archive, doc, "content 1.1", author, "initial 1.1"); Date creationDate = doc.getCreationDate(); @@ -272,4 +264,60 @@ assertEquals(creationDate, latest.getCreationDate()); } + + public void testVerifyDiffAndFullRevisionAlgorithm() throws Exception + { + XWikiDocument doc = new XWikiDocument("Test", "Test"); + XWikiDocumentArchive archive = new XWikiDocumentArchive(doc.getId()); + doc.setDocumentArchive(archive); + String author = "XWiki.some author"; + + // The first revision is always a full revision (not a diff) + addRevisionToHistory(archive, doc, "content 1.1", author, "1.1"); + assertFalse(archive.getNode(new Version(1, 1)).isDiff()); + + // When a new revision is added the new revision is always the full revision but the previous one is + // modified to be a diff. + addRevisionToHistory(archive, doc, "content 2.1", author, "2.1"); + assertTrue(archive.getNode(new Version(1, 1)).isDiff()); + assertFalse(archive.getNode(new Version(2, 1)).isDiff()); + + addRevisionToHistory(archive, doc, "content 3.1", author, "3.1"); + assertTrue(archive.getNode(new Version(1, 1)).isDiff()); + assertTrue(archive.getNode(new Version(2, 1)).isDiff()); + assertFalse(archive.getNode(new Version(3, 1)).isDiff()); + + addRevisionToHistory(archive, doc, "content 4.1", author, "4.1"); + assertTrue(archive.getNode(new Version(1, 1)).isDiff()); + assertTrue(archive.getNode(new Version(2, 1)).isDiff()); + assertTrue(archive.getNode(new Version(3, 1)).isDiff()); + assertFalse(archive.getNode(new Version(4, 1)).isDiff()); + + // Every 5th revision we save the full content and not a diff + addRevisionToHistory(archive, doc, "content 5.1", author, "5.1"); + assertTrue(archive.getNode(new Version(1, 1)).isDiff()); + assertTrue(archive.getNode(new Version(2, 1)).isDiff()); + assertTrue(archive.getNode(new Version(3, 1)).isDiff()); + assertTrue(archive.getNode(new Version(4, 1)).isDiff()); + assertFalse(archive.getNode(new Version(5, 1)).isDiff()); + + // Verify that the 5th revision is kept as a full content revision when the 6th is added + addRevisionToHistory(archive, doc, "content 6.1", author, "6.1"); + assertTrue(archive.getNode(new Version(1, 1)).isDiff()); + assertTrue(archive.getNode(new Version(2, 1)).isDiff()); + assertTrue(archive.getNode(new Version(3, 1)).isDiff()); + assertTrue(archive.getNode(new Version(4, 1)).isDiff()); + assertFalse(archive.getNode(new Version(5, 1)).isDiff()); + assertFalse(archive.getNode(new Version(6, 1)).isDiff()); + } + + private void addRevisionToHistory(XWikiDocumentArchive archive, XWikiDocument document, String content, + String author, String comment) throws XWikiException + { + document.setContent(content); + document.setAuthor(author); + document.setComment(comment); + document.setDate(new Date()); + archive.updateArchive(document, document.getAuthor(), document.getDate(), document.getComment(), null, context); + } } _______________________________________________ notifications mailing list notifications@xwiki.org http://lists.xwiki.org/mailman/listinfo/notifications