diff options
author | Aurélien Bompard <aurelien@bompard.org> | 2013-05-24 14:44:11 +0200 |
---|---|---|
committer | Aurélien Bompard <aurelien@bompard.org> | 2013-05-24 14:44:11 +0200 |
commit | 2fa3326df18bbfd8b15a6f12b3b66629e93af59c (patch) | |
tree | dbc9552bc426e8dc2017eb29c954fea0d19336f0 /hyperkitty/tests | |
parent | 127944f9c2b3d1c07324d6a5dd3bec965f1d7f0a (diff) | |
download | hyperkitty-2fa3326df18bbfd8b15a6f12b3b66629e93af59c.tar.gz hyperkitty-2fa3326df18bbfd8b15a6f12b3b66629e93af59c.tar.xz hyperkitty-2fa3326df18bbfd8b15a6f12b3b66629e93af59c.zip |
Add a unit test for unread posts
Diffstat (limited to 'hyperkitty/tests')
-rw-r--r-- | hyperkitty/tests/test_views.py | 73 |
1 files changed, 70 insertions, 3 deletions
diff --git a/hyperkitty/tests/test_views.py b/hyperkitty/tests/test_views.py index 9351c30..9deab94 100644 --- a/hyperkitty/tests/test_views.py +++ b/hyperkitty/tests/test_views.py @@ -30,9 +30,14 @@ from django.test.client import Client, RequestFactory from django.test.utils import override_settings from django.contrib.auth.models import User, AnonymousUser from django.core.urlresolvers import reverse +from mailman.email.message import Message import django_assets.env -from hyperkitty.models import Rating +import kittystore +from kittystore.utils import get_message_id_hash +from kittystore.test import FakeList + +from hyperkitty.models import Rating, LastView @override_settings(USE_SSL=False, USE_INTERNAL_AUTH=True, DEBUG=True, ASSETS_DEBUG=True) @@ -52,7 +57,7 @@ class AccountViewsTestCase(TestCase): def test_profile(self): User.objects.create_user('testuser', 'test@example.com', 'testPass') - user = self.client.login(username='testuser', password='testPass') + self.client.login(username='testuser', password='testPass') response = self.client.get(reverse('user_profile')) self.assertEqual(response.status_code, 200) @@ -66,7 +71,7 @@ class AccountViewsTestCase(TestCase): def test_registration(self): User.objects.create_user('testuser', 'test@example.com', 'testPass') - user = self.client.login(username='testuser', password='testPass') + self.client.login(username='testuser', password='testPass') # If the user if already logged in, redirect to index page... # Don't let him register again @@ -81,6 +86,68 @@ class AccountViewsTestCase(TestCase): # @TODO: Try to register a user and verify its working +from hyperkitty.views.accounts import last_views +from hyperkitty.views.thread import thread_index + +@override_settings(DEBUG=True, ASSETS_DEBUG=True) +class LastViewsTestCase(TestCase): + + def setUp(self): + # Re-do the settings patching + # https://github.com/miracle2k/django-assets/issues/3 + django_assets.env.reset() + django_assets.env.get_env() + self.user = User.objects.create_user('testuser', 'test@example.com', 'testPass') + self.client.login(username='testuser', password='testPass') + store = kittystore.get_store("sqlite:", debug=False) + ml = FakeList("list@example.com") + ml.subject_prefix = u"[example] " + # Create 3 threads + messages = [] + for msgnum in range(3): + msg = Message() + msg["From"] = "dummy@example.com" + msg["Message-ID"] = "<id%d>" % (msgnum+1) + msg["Subject"] = "Dummy message" + msg.set_payload("Dummy message") + store.add_to_list(ml, msg) + messages.append(msg) + # 1st is unread, 2nd is read, 3rd is updated + LastView.objects.create(list_address="list@example.com", user=self.user, + threadid=get_message_id_hash("<id2>")) + LastView.objects.create(list_address="list@example.com", user=self.user, + threadid=get_message_id_hash("<id3>")) + msg4 = Message() + msg4["From"] = "dummy@example.com" + msg4["Message-ID"] = "<id4>" + msg4["Subject"] = "Dummy message" + msg4["In-Reply-To"] = "<id3>" + msg4.set_payload("Dummy message") + store.add_to_list(ml, msg4) + # Factory + defaults = {"kittystore.store": store, "HTTP_USER_AGENT": "testbot"} + self.factory = RequestFactory(**defaults) + + def test_profile(self): + request = self.factory.get(reverse('user_last_views')) + request.user = self.user + response = last_views(request) + self.assertContains(response, "<td>dummy@example.com</td>", + count=2, status_code=200, html=True) + + def test_thread(self): + responses = [] + for msgnum in range(3): + threadid = get_message_id_hash("<id%d>" % (msgnum+1)) + request = self.factory.get(reverse('thread', + args=["list@example.com", threadid])) + request.user = self.user + response = thread_index(request, "list@example.com", threadid) + responses.append(response) + self.assertContains(responses[0], "icon-eye-close", count=1, status_code=200) + self.assertNotContains(responses[1], "icon-eye-close", status_code=200) + self.assertContains(responses[2], "icon-eye-close", count=1, status_code=200) + from hyperkitty.views.message import vote |