49
|
1 import os.path
|
|
2 from tests import WikkedTest
|
|
3 from mock import MockFileSystem
|
|
4 from wikked.fs import FileSystem
|
|
5 from wikked.db import SQLiteDatabase
|
|
6
|
|
7
|
|
8 class DatabaseTest(WikkedTest):
|
|
9 def tearDown(self):
|
|
10 if hasattr(self, 'wiki') and self.wiki:
|
|
11 self.wiki.db.close()
|
|
12 WikkedTest.tearDown(self)
|
|
13
|
|
14 def testEmpty(self):
|
|
15 self.wiki = self._getWikiFromStructure({})
|
|
16 self.assertEqual([], list(self.wiki.getPageUrls()))
|
|
17
|
|
18 def testOnePage(self):
|
|
19 self.wiki = self._getWikiFromStructure({
|
|
20 'foo.txt': 'A test page.'
|
|
21 })
|
|
22 self.assertEqual(['foo'], list(self.wiki.getPageUrls()))
|
|
23 page = self.wiki.getPage('foo')
|
|
24 self.assertEqual('foo', page.url)
|
|
25 self.assertEqual(os.path.join(self.root, 'foo.txt'), page.path)
|
|
26 self.assertEqual('A test page.', page.raw_text)
|
|
27
|
|
28 def _getWikiFromStructure(self, structure):
|
|
29 MockFileSystem.save_structure(self.root, structure)
|
|
30 wiki = self.getWiki(
|
|
31 db_factory=self._dbFactory,
|
|
32 fs_factory=self._fsFactory
|
|
33 )
|
51
|
34
|
|
35 # Open the DB before we do anything so that it will be closed
|
|
36 # only on `tearDown` (memory DBs are discarded when the
|
|
37 # connection is closed.
|
49
|
38 wiki.db.open()
|
51
|
39
|
49
|
40 wiki.start()
|
|
41 return wiki
|
|
42
|
|
43 def _fsFactory(self, config):
|
|
44 return FileSystem(self.root)
|
|
45
|
|
46 def _dbFactory(self, config):
|
|
47 return SQLiteDatabase(':memory:')
|