diff tests/test_db.py @ 49:fb6ae96756c1

Added unit tests. Refactored core APIs to make them more testable. Removed unused stuff like caching the configuration in the SQL database. Fixed the web bootstrap. Some cosmetic changes to be PEP8 compliant.
author Ludovic Chabant <ludovic@chabant.com>
date Mon, 28 Jan 2013 23:13:04 -0800
parents
children 2733871775cd
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test_db.py	Mon Jan 28 23:13:04 2013 -0800
@@ -0,0 +1,42 @@
+import os.path
+from tests import WikkedTest
+from mock import MockFileSystem
+from wikked.fs import FileSystem
+from wikked.db import SQLiteDatabase
+
+
+class DatabaseTest(WikkedTest):
+    def tearDown(self):
+        if hasattr(self, 'wiki') and self.wiki:
+            self.wiki.db.close()
+        WikkedTest.tearDown(self)
+
+    def testEmpty(self):
+        self.wiki = self._getWikiFromStructure({})
+        self.assertEqual([], list(self.wiki.getPageUrls()))
+
+    def testOnePage(self):
+        self.wiki = self._getWikiFromStructure({
+            'foo.txt': 'A test page.'
+            })
+        self.assertEqual(['foo'], list(self.wiki.getPageUrls()))
+        page = self.wiki.getPage('foo')
+        self.assertEqual('foo', page.url)
+        self.assertEqual(os.path.join(self.root, 'foo.txt'), page.path)
+        self.assertEqual('A test page.', page.raw_text)
+
+    def _getWikiFromStructure(self, structure):
+        MockFileSystem.save_structure(self.root, structure)
+        wiki = self.getWiki(
+            db_factory=self._dbFactory,
+            fs_factory=self._fsFactory
+            )
+        wiki.db.open()
+        wiki.start()
+        return wiki
+
+    def _fsFactory(self, config):
+        return FileSystem(self.root)
+
+    def _dbFactory(self, config):
+        return SQLiteDatabase(':memory:')