comparison tests/__init__.py @ 225:ebb12ff21cb2

Updated unit tests to be able to run.
author Ludovic Chabant <ludovic@chabant.com>
date Wed, 12 Mar 2014 23:02:40 -0700
parents 65f83a9b42f1
children 03e3e793fa22
comparison
equal deleted inserted replaced
224:d45450a0256a 225:ebb12ff21cb2
1 import os 1 import os
2 import os.path 2 import os.path
3 import urllib
3 import shutil 4 import shutil
4 import unittest 5 import unittest
5 from wikked.wiki import Wiki 6 from wikked.wiki import Wiki
7 from wikked.db.sql import SQLDatabase
6 from mock import MockWikiParameters, MockFileSystem 8 from mock import MockWikiParameters, MockFileSystem
9
10
11 class MockWikiParametersWithStructure(MockWikiParameters):
12 def __init__(self, structure, root=None):
13 super(MockWikiParametersWithStructure, self).__init__(root)
14 self.structure = structure
15
16 def fs_factory(self):
17 return MockFileSystem(self.root, self.config, self.structure)
7 18
8 19
9 class WikkedTest(unittest.TestCase): 20 class WikkedTest(unittest.TestCase):
10 def setUp(self): 21 def setUp(self):
11 # Directory you can use for temporary files. 22 # Directory you can use for temporary files.
12 self.root = os.path.join( 23 self.test_data_dir = os.path.join(
13 os.path.dirname(os.path.dirname(__file__)), 24 os.path.dirname(os.path.dirname(__file__)),
14 'test_data') 25 'test_data')
15 26
16 def tearDown(self): 27 def tearDown(self):
17 if hasattr(self, 'root') and os.path.isdir(self.root): 28 if hasattr(self, 'wiki') and self.wiki is not None:
18 shutil.rmtree(self.root) 29 self.wiki.db.close(False, None)
19 30
20 def getWiki(self, **kwargs): 31 if os.path.isdir(self.test_data_dir):
21 parameters = self.getParameters() 32 shutil.rmtree(self.test_data_dir)
33
34 def _getParameters(self, root=None):
35 return MockWikiParameters(root)
36
37 def _getWiki(self, parameters=None, **kwargs):
38 parameters = parameters or self._getParameters()
22 for key in kwargs: 39 for key in kwargs:
23 setattr(parameters, key, kwargs[key]) 40 setattr(parameters, key, kwargs[key])
24 wiki = Wiki(parameters) 41 self.wiki = Wiki(parameters)
42 self._onWikiCreated(self.wiki)
43 return self.wiki
44
45 def _getStartedWiki(self, **kwargs):
46 wiki = self._getWiki(**kwargs)
47 wiki.start()
48 self._onWikiStarted(wiki)
25 return wiki 49 return wiki
26 50
27 def getStartedWiki(self, **kwargs): 51 def _getWikiFromStructure(self, structure, root='/'):
28 wiki = self.getWiki(**kwargs) 52 params = self._getParameters(root)
29 wiki.start() 53 params.fs_factory = lambda: MockFileSystem(
54 params.root, params.config, structure)
55 params.db_factory = lambda: SQLDatabase(params.config)
56 params.config_text = "[wiki]\ndatabase_url = sqlite://\n"
57 wiki = self._getStartedWiki(parameters=params)
30 return wiki 58 return wiki
31 59
32 def getParameters(self): 60 def _onWikiCreated(self, wiki):
33 return MockWikiParameters() 61 pass
34 62
35 def _getWikiFromStructure(self, structure): 63 def _onWikiStarted(self, wiki):
36 wiki = self.getWiki(use_db=False, fs_factory=lambda cfg: MockFileSystem(structure)) 64 wiki.reset()
37 wiki.start()
38 return wiki
39 65
40 66
41 def format_link(title, url, missing=False, mod=None): 67 def format_link(title, url, missing=False, mod=None):
42 res = '<a class=\"wiki-link' 68 res = '<a class=\"wiki-link'
43 if missing: 69 if missing:
44 res += ' missing' 70 res += ' missing'
71 url = urllib.quote(url)
45 res += '\" data-wiki-url=\"' + url + '\"' 72 res += '\" data-wiki-url=\"' + url + '\"'
46 if mod: 73 if mod:
47 res += ' data-wiki-mod=\"' + mod + '\"' 74 res += ' data-wiki-mod=\"' + mod + '\"'
48 res += '>' + title + '</a>' 75 res += '>' + title + '</a>'
49 return res 76 return res
77
50 78
51 def format_include(url, args=None, mod=None): 79 def format_include(url, args=None, mod=None):
52 res = '<div class=\"wiki-include\" data-wiki-url=\"' + url + '\"' 80 res = '<div class=\"wiki-include\" data-wiki-url=\"' + url + '\"'
53 if mod: 81 if mod:
54 res += ' data-wiki-mod=\"' + mod + '\"' 82 res += ' data-wiki-mod=\"' + mod + '\"'