Mercurial > wikked
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 + '\"' |