summaryrefslogtreecommitdiffstats
path: root/forum/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'forum/tests.py')
-rw-r--r--forum/tests.py196
1 files changed, 190 insertions, 6 deletions
diff --git a/forum/tests.py b/forum/tests.py
index 8419dd86..dca9cfad 100644
--- a/forum/tests.py
+++ b/forum/tests.py
@@ -2,8 +2,11 @@ from django.test import Client, TestCase
from django.contrib.auth.models import User
from forum import models
import datetime
+from django.template import defaultfilters
from django.core.urlresolvers import reverse
+
+
class AnonymousVisitorTests(TestCase):
fixtures = ['forum/fixtures/full_dump.json',]
@@ -20,34 +23,110 @@ class AnonymousVisitorTests(TestCase):
print 'index works'
def test_reader_urls(self):
- #todo: test redirects better
+ """test all reader views thoroughly
+ on non-crashiness (no correcteness tests here)
+ """
+
def try_url(
url_name, status_code=200, template=None,
- kwargs={}, redirect_url=None, follow=False
+ kwargs={}, redirect_url=None, follow=False,
+ data = {}
):
url = reverse(url_name, kwargs = kwargs)
- print 'getting url %s' % url
- r = self.client.get(url, follow=follow)
+ url_info = 'getting url %s' % url
+ if data:
+ url_info += '?' + '&'.join(['%s=%s' % (k,v) for k,v in data.iteritems()])
+ print url_info
+
+ r = self.client.get(url, data=data, follow=follow)
if hasattr(self.client, 'redirect_chain'):
- print self.client.redirect_chain
+ print 'redirect chain: %s' % ','.join(self.client.redirect_chain)
+
self.assertEqual(r.status_code, status_code)
+
if template:
#asuming that there is more than one template
+ print 'templates are %s' % ','.join([t.name for t in r.template])
self.assertEqual(r.template[0].name, template)
+
try_url('sitemap')
try_url('about', template='about.html')
try_url('privacy', template='privacy.html')
try_url('logout', template='logout.html')
try_url('user_signin', template='authopenid/signin.html')
+ #todo: test different tabs
try_url('tags', template='tags.html')
+ try_url('tags', data={'sort':'name'}, template='tags.html')
+ try_url('tags', data={'sort':'used'}, template='tags.html')
try_url('badges', template='badges.html')
try_url(
'answer_revisions',
template='revisions_answer.html',
kwargs={'id':38}
)
+ #todo: test different sort methods and scopes
+ try_url(
+ 'questions',
+ template='questions.html'
+ )
+ try_url(
+ 'questions',
+ data={'start_over':'true'},
+ template='questions.html'
+ )
+ try_url(
+ 'questions',
+ data={'scope':'unanswered'},
+ template='questions.html'
+ )
+ try_url(
+ 'questions',
+ data={'scope':'all'},
+ template='questions.html'
+ )
+ try_url(
+ 'questions',
+ data={'scope':'favorite'},
+ template='questions.html'
+ )
+ try_url(
+ 'questions',
+ data={'scope':'unanswered', 'sort':'latest'},
+ template='questions.html'
+ )
+ try_url(
+ 'questions',
+ data={'scope':'unanswered', 'sort':'oldest'},
+ template='questions.html'
+ )
+ try_url(
+ 'questions',
+ data={'scope':'unanswered', 'sort':'active'},
+ template='questions.html'
+ )
+ try_url(
+ 'questions',
+ data={'scope':'unanswered', 'sort':'inactive'},
+ template='questions.html'
+ )
+ try_url(
+ 'questions',
+ data={'sort':'hottest'},
+ template='questions.html'
+ )
try_url(
'questions',
+ data={'sort':'coldest'},
+ template='questions.html'
+ )
+ try_url(
+ 'questions',
+ data={'sort':'mostvoted'},
+ template='questions.html'
+ )
+ try_url(
+ 'questions',
+ data={'sort':'leastvoted'},
template='questions.html'
)
try_url(
@@ -67,9 +146,67 @@ class AnonymousVisitorTests(TestCase):
kwargs={'id':17},
template='revisions_question.html'
)
+ try_url('users', template='users.html')
+ #todo: really odd naming conventions for sort methods
+ try_url(
+ 'users',
+ template='users.html',
+ data={'sort':'reputation'},
+ )
+ try_url(
+ 'users',
+ template='users.html',
+ data={'sort':'newest'},
+ )
+ try_url(
+ 'users',
+ template='users.html',
+ data={'sort':'last'},
+ )
+ try_url(
+ 'users',
+ template='users.html',
+ data={'sort':'user'},
+ )
+ try_url(
+ 'users',
+ template='users.html',
+ data={'sort':'reputation', 'page':2},
+ )
try_url(
'users',
- template='users.html'
+ template='users.html',
+ data={'sort':'newest', 'page':2},
+ )
+ try_url(
+ 'users',
+ template='users.html',
+ data={'sort':'last', 'page':2},
+ )
+ try_url(
+ 'users',
+ template='users.html',
+ data={'sort':'user', 'page':2},
+ )
+ try_url(
+ 'users',
+ template='users.html',
+ data={'sort':'reputation', 'page':1},
+ )
+ try_url(
+ 'users',
+ template='users.html',
+ data={'sort':'newest', 'page':1},
+ )
+ try_url(
+ 'users',
+ template='users.html',
+ data={'sort':'last', 'page':1},
+ )
+ try_url(
+ 'users',
+ template='users.html',
+ data={'sort':'user', 'page':1},
)
try_url(
'edit_user',
@@ -78,3 +215,50 @@ class AnonymousVisitorTests(TestCase):
status_code=200,
follow=True,
)
+ u = User.objects.get(id=2)
+ name_slug = defaultfilters.slugify(u.username)
+ try_url(
+ 'user_profile',
+ kwargs={'id': 2, 'slug': name_slug},
+ data={'sort':'stats'},
+ template='user_stats.html'
+ )
+ try_url(
+ 'user_profile',
+ kwargs={'id': 2, 'slug': name_slug},
+ data={'sort':'recent'},
+ template='user_recent.html'
+ )
+ try_url(
+ 'user_profile',
+ kwargs={'id': 2, 'slug': name_slug},
+ data={'sort':'responses'},
+ status_code=404,
+ template='404.html'
+ )
+ try_url(
+ 'user_profile',
+ kwargs={'id': 2, 'slug': name_slug},
+ data={'sort':'reputation'},
+ template='user_reputation.html'
+ )
+ try_url(
+ 'user_profile',
+ kwargs={'id': 2, 'slug': name_slug},
+ data={'sort':'votes'},
+ status_code=404,
+ template='404.html'
+ )
+ try_url(
+ 'user_profile',
+ kwargs={'id': 2, 'slug': name_slug},
+ data={'sort':'favorites'},
+ template='user_favorites.html'
+ )
+ try_url(
+ 'user_profile',
+ kwargs={'id': 2, 'slug': name_slug},
+ data={'sort':'email_subscriptions'},
+ status_code=404,
+ template='404.html'
+ )