// Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved. // Released under the terms of the CPL Common Public License version 1.0. package fitnesse.components; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Test; import fitnesse.wiki.InMemoryPage; import fitnesse.wiki.PageCrawler; import fitnesse.wiki.PageData; import fitnesse.wiki.PathParser; import fitnesse.wiki.WikiPage; public class SaveRecorderTest { public WikiPage somePage; public WikiPage root; private PageCrawler crawler; @Before public void setUp() throws Exception { root = InMemoryPage.makeRoot("RooT"); crawler = root.getPageCrawler(); somePage = crawler.addPage(root, PathParser.parse("SomePage"), "some page"); } @Test public void testTiming() throws Exception { PageData data = somePage.getData(); long savedTicket = 0; long editTicket = 1; long time = SaveRecorder.pageSaved(data, savedTicket); somePage.commit(data); assertTrue(SaveRecorder.changesShouldBeMerged(time - 1, editTicket, somePage.getData())); assertFalse(SaveRecorder.changesShouldBeMerged(time + 1, editTicket, somePage.getData())); } @Test public void testDefaultValues() throws Exception { WikiPage neverSaved = crawler.addPage(root, PathParser.parse("NeverSaved"), "never saved"); assertFalse(SaveRecorder.changesShouldBeMerged(12345, 0, neverSaved.getData())); } @Test public void testCanSaveOutOfOrderIfFromSameEditSession() throws Exception { PageData data = somePage.getData(); long ticket = 99; long time = SaveRecorder.pageSaved(data, ticket); somePage.commit(data); assertFalse(SaveRecorder.changesShouldBeMerged(time-1, ticket, data)); } }