Mercurial > wikked
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:')