diff 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
line wrap: on
line diff
--- a/tests/__init__.py	Mon Mar 10 16:47:21 2014 -0700
+++ b/tests/__init__.py	Wed Mar 12 23:02:40 2014 -0700
@@ -1,53 +1,81 @@
 import os
 import os.path
+import urllib
 import shutil
 import unittest
 from wikked.wiki import Wiki
+from wikked.db.sql import SQLDatabase
 from mock import MockWikiParameters, MockFileSystem
 
 
+class MockWikiParametersWithStructure(MockWikiParameters):
+    def __init__(self, structure, root=None):
+        super(MockWikiParametersWithStructure, self).__init__(root)
+        self.structure = structure
+
+    def fs_factory(self):
+        return MockFileSystem(self.root, self.config, self.structure)
+
+
 class WikkedTest(unittest.TestCase):
     def setUp(self):
         # Directory you can use for temporary files.
-        self.root = os.path.join(
+        self.test_data_dir = os.path.join(
             os.path.dirname(os.path.dirname(__file__)),
             'test_data')
 
     def tearDown(self):
-        if hasattr(self, 'root') and os.path.isdir(self.root):
-            shutil.rmtree(self.root)
+        if hasattr(self, 'wiki') and self.wiki is not None:
+            self.wiki.db.close(False, None)
+
+        if os.path.isdir(self.test_data_dir):
+            shutil.rmtree(self.test_data_dir)
 
-    def getWiki(self, **kwargs):
-        parameters = self.getParameters()
+    def _getParameters(self, root=None):
+        return MockWikiParameters(root)
+
+    def _getWiki(self, parameters=None, **kwargs):
+        parameters = parameters or self._getParameters()
         for key in kwargs:
             setattr(parameters, key, kwargs[key])
-        wiki = Wiki(parameters)
+        self.wiki = Wiki(parameters)
+        self._onWikiCreated(self.wiki)
+        return self.wiki
+
+    def _getStartedWiki(self, **kwargs):
+        wiki = self._getWiki(**kwargs)
+        wiki.start()
+        self._onWikiStarted(wiki)
         return wiki
 
-    def getStartedWiki(self, **kwargs):
-        wiki = self.getWiki(**kwargs)
-        wiki.start()
+    def _getWikiFromStructure(self, structure, root='/'):
+        params = self._getParameters(root)
+        params.fs_factory = lambda: MockFileSystem(
+                params.root, params.config, structure)
+        params.db_factory = lambda: SQLDatabase(params.config)
+        params.config_text = "[wiki]\ndatabase_url = sqlite://\n"
+        wiki = self._getStartedWiki(parameters=params)
         return wiki
 
-    def getParameters(self):
-        return MockWikiParameters()
+    def _onWikiCreated(self, wiki):
+        pass
 
-    def _getWikiFromStructure(self, structure):
-        wiki = self.getWiki(use_db=False, fs_factory=lambda cfg: MockFileSystem(structure))
-        wiki.start()
-        return wiki
+    def _onWikiStarted(self, wiki):
+        wiki.reset()
 
 
 def format_link(title, url, missing=False, mod=None):
     res = '<a class=\"wiki-link'
     if missing:
         res += ' missing'
+    url = urllib.quote(url)
     res += '\" data-wiki-url=\"' + url + '\"'
     if mod:
         res += ' data-wiki-mod=\"' + mod + '\"'
     res += '>' + title + '</a>'
     return res
 
+
 def format_include(url, args=None, mod=None):
     res = '<div class=\"wiki-include\" data-wiki-url=\"' + url + '\"'
     if mod: