wikify tests

This commit is contained in:
James Turk 2010-04-07 12:47:01 -04:00
parent 2fa60828fa
commit 6d4f8105e5
2 changed files with 37 additions and 18 deletions

View File

@ -1,10 +1,11 @@
import time
from django.core.cache import cache
from django.core.urlresolvers import reverse
from django.test import TestCase
from django.contrib.auth.models import User, AnonymousUser
from markupwiki.models import Article, PUBLIC, LOCKED, DELETED
from markupwiki import models
from markupwiki.utils import make_wiki_links, wikify_markup_wrapper
class ArticleTests(TestCase):
@ -39,7 +40,7 @@ class ArticleTests(TestCase):
self.assert_(deleted_article.is_editable_by_user(staff_user))
models.WRITE_LOCK_SECONDS = 3
models.WRITE_LOCK_SECONDS = 1
class ArticleWriteLockTests(TestCase):
@ -63,7 +64,7 @@ class ArticleWriteLockTests(TestCase):
def test_lock_timeout(self):
''' test that the lock times out properly '''
alice_initial_lock = self.article.get_write_lock(self.alice)
time.sleep(4)
time.sleep(2)
bob_wait_lock = self.article.get_write_lock(self.bob)
self.assertTrue(alice_initial_lock)
@ -86,3 +87,34 @@ class ArticleWriteLockTests(TestCase):
self.assertTrue(alice_initial_lock)
self.assertTrue(bob_immediate_lock)
class WikifyTests(TestCase):
def _get_url(self, link, name=None):
return '<a href="%s">%s</a>' % (reverse('view_article', args=[link]),
name or link)
def test_make_wiki_links_simple(self):
result = make_wiki_links('[[test]]')
self.assertEquals(result, self._get_url('test'))
result = make_wiki_links('[[two words ]]')
self.assertEquals(result, self._get_url('two words'))
result_ws = make_wiki_links('[[ test ]]')
self.assertEquals(result_ws, self._get_url('test'))
def test_make_wiki_links_named(self):
result = make_wiki_links('[[test|this link has a name]]')
self.assertEquals(result, self._get_url('test', 'this link has a name'))
def test_wikify_markup_wrapper(self):
wrapped_upper_filter = wikify_markup_wrapper(lambda text: text.upper())
result = wrapped_upper_filter('[[test]]')
self.assertEquals(result, self._get_url('TEST'))
def test_wikify_markup_wrapper_double_wrap(self):
''' ensure that wrapped functions can't be double wrapped '''
wrapped_upper_filter = wikify_markup_wrapper(lambda text: text.upper())
self.assertEquals(wrapped_upper_filter,
wikify_markup_wrapper(wrapped_upper_filter))

View File

@ -7,20 +7,7 @@ from django.core.urlresolvers import reverse
link_re = re.compile('\[\[(?P<link>.*?)(?:\|(?P<name>.*?))?\]\]')
__sample_content = '''
this is a sample
[[testlink]]
[[testlink|with a name]]
[[another test link]]
[[multi
line]]
'''
def link_repl_func(match_obj):
def _link_repl_func(match_obj):
gd = match_obj.groupdict()
name = gd['name'] or gd['link']
name = name.strip()
@ -28,7 +15,7 @@ def link_repl_func(match_obj):
return '<a href="%s">%s</a>' % (link, name)
def make_wiki_links(text):
return link_re.sub(link_repl_func, text)
return link_re.sub(_link_repl_func, text)
def wikify_markup_wrapper(f):
if not hasattr(f, 'wikified_markup'):