package fitnesse.wiki.fs;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.io.File;
import java.util.Iterator;
import fitnesse.wiki.PageData;
import fitnesse.wiki.SystemVariableSource;
import fitnesse.wiki.VersionInfo;
import fitnesse.wiki.WikiPage;
import fitnesse.wiki.fs.FileSystem;
import fitnesse.wiki.fs.FileSystemPageFactory;
import fitnesse.wiki.fs.MemoryFileSystem;
import fitnesse.wiki.fs.MemoryVersionsController;
import org.junit.Before;
import org.junit.Test;
public class MemoryVersionsControllerTest {
private FileSystemPageFactory wikiPageFactory;
@Before
public void setUp() {
FileSystem fileSystem = new MemoryFileSystem();
MemoryVersionsController memoryVersionsController = new MemoryVersionsController(fileSystem);
wikiPageFactory = new FileSystemPageFactory(fileSystem, memoryVersionsController, new SystemVariableSource());
}
@Test
public void shouldStoreFirstVersionAsZero() {
WikiPage root = wikiPageFactory.makePage(new File(""), "RooT", null);
root.commit(root.getData());
assertEquals(1, root.getVersions().size());
assertEquals("0", root.getVersions().iterator().next().getName());
}
@Test
public void shouldStoreSecondVersionAsOne() {
WikiPage root = wikiPageFactory.makePage(new File(""), "RooT", null);
root.commit(root.getData());
root.commit(root.getData());
assertEquals(2, root.getVersions().size());
Iterator<VersionInfo> iterator = root.getVersions().iterator();
assertEquals("0", iterator.next().getName());
assertEquals("1", iterator.next().getName());
}
@Test
public void shouldStoreFirstVersionAsZeroForSecondPage() {
WikiPage root = wikiPageFactory.makePage(new File(""), "RooT", null);
root.commit(root.getData());
WikiPage page = root.addChildPage("PageOne");
page.commit(root.getData());
assertEquals(1, root.getVersions().size());
assertEquals("0", root.getVersions().iterator().next().getName());
assertEquals(1, page.getVersions().size());
assertEquals("0", page.getVersions().iterator().next().getName());
}
@Test
public void shouldLoadMostRecentVersion() {
WikiPage root = wikiPageFactory.makePage(new File("."), "RooT", null);
VersionInfo version = root.commit(root.getData());
WikiPage versionData = root.getVersion(version.getName());
PageData newData = versionData.getData();
assertEquals("0", version.getName());
assertNotNull(newData);
}
}