package com.orgzly.android.repos; import com.orgzly.android.Book; import com.orgzly.android.BookName; import com.orgzly.android.OrgzlyTest; import com.orgzly.android.Shelf; import com.orgzly.android.util.MiscUtils; import org.junit.Before; import org.junit.Test; import java.io.File; import java.io.IOException; import java.util.List; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertTrue; public class LocalDbRepoTest extends OrgzlyTest { @Before public void setUp() throws Exception { super.setUp(); shelfTestUtils.setupBook("local-book-1", "Content\n\n* Note"); } @Test public void testGetBooksFromAllRepos() throws IOException { shelfTestUtils.setupRepo("mock://repo-a"); shelfTestUtils.setupRook("mock://repo-a", "mock://repo-a/mock-book.org", "book content\n\n* First note\n** Second note", "rev1", 1234567890000L); List<VersionedRook> books = new Shelf(context).getBooksFromAllRepos(null); assertEquals(1, books.size()); VersionedRook vrook = books.get(0); assertEquals("mock-book", BookName.getInstance(context, vrook).getName()); assertEquals("mock://repo-a", vrook.getRepoUri().toString()); assertEquals("mock://repo-a/mock-book.org", vrook.getUri().toString()); assertEquals("rev1", vrook.getRevision()); assertEquals(1234567890000L, vrook.getMtime()); } @Test public void testStoringBook() throws IOException { Repo repo; long now = System.currentTimeMillis(); /* Write local book's content to a temporary file. */ Book book = shelf.getBook(1); // by bookId File tmpFile = shelf.getTempBookFile(); try { shelf.writeBookToFile(book, BookName.Format.ORG, tmpFile); repo = RepoFactory.getFromUri(context, "mock://repo-a"); repo.storeBook(tmpFile, BookName.fileName(book.getName(), BookName.Format.ORG)); } finally { tmpFile.delete(); } List<VersionedRook> books = repo.getBooks(); assertEquals(1, books.size()); VersionedRook vrook = books.get(0); assertEquals("local-book-1", BookName.getInstance(context, vrook).getName()); assertEquals("mock://repo-a", vrook.getRepoUri().toString()); assertTrue(vrook.getMtime() >= now); } @Test public void testRetrievingBook() throws IOException { shelfTestUtils.setupRepo("mock://repo-a"); shelfTestUtils.setupRook("mock://repo-a", "mock://repo-a/mock-book.org", "book content\n\n* First note\n** Second note", "rev1", 1234567890000L); Repo repo = RepoFactory.getFromUri(context, "mock://repo-a"); VersionedRook vrook = shelf.getBooksFromAllRepos(null).get(0); File tmpFile = shelf.getTempBookFile(); try { repo.retrieveBook(vrook.getUri(), tmpFile); String content = MiscUtils.readStringFromFile(tmpFile); assertEquals("book content\n" + "\n" + "* First note\n" + "** Second note", content); } finally { tmpFile.delete(); } } }