diff options
Diffstat (limited to 'group_messaging')
-rw-r--r-- | group_messaging/models.py | 8 | ||||
-rw-r--r-- | group_messaging/tests.py | 53 | ||||
-rw-r--r-- | group_messaging/views.py | 2 |
3 files changed, 58 insertions, 5 deletions
diff --git a/group_messaging/models.py b/group_messaging/models.py index f0557a9d..d84b202f 100644 --- a/group_messaging/models.py +++ b/group_messaging/models.py @@ -5,7 +5,7 @@ from django.db import models from django.contrib.auth.models import Group from django.contrib.auth.models import User -MAX_TITLE_LENGTH = 80 +MAX_HEADLINE_LENGTH = 80 MAX_SENDERS_INFO_LENGTH = 64 #dummy parse message function @@ -144,7 +144,7 @@ class MessageManager(models.Manager): kwargs['root'] = root headline = kwargs.get('headline', kwargs['text']) - kwargs['headline'] = headline[:MAX_TITLE_LENGTH] + kwargs['headline'] = headline[:MAX_HEADLINE_LENGTH] kwargs['html'] = parse_message(kwargs['text']) message = super(MessageManager, self).create(**kwargs) @@ -184,6 +184,8 @@ class MessageManager(models.Manager): message.add_recipients(recipients) #add author of the parent as a recipient to parent parent.add_recipients([senders_group]) + #update headline + message.root.headline = text[:MAX_HEADLINE_LENGTH] #mark last active timestamp for the root message message.root.last_active_at = datetime.datetime.now() #update senders info - stuff that is shown in the thread heading @@ -231,7 +233,7 @@ class Message(models.Model): blank=True, related_name='children' ) - headline = models.CharField(max_length=MAX_TITLE_LENGTH) + headline = models.CharField(max_length=MAX_HEADLINE_LENGTH) text = models.TextField( null=True, blank=True, diff --git a/group_messaging/tests.py b/group_messaging/tests.py index d17c0ca5..badbbb5a 100644 --- a/group_messaging/tests.py +++ b/group_messaging/tests.py @@ -3,10 +3,12 @@ from django.contrib.auth.models import User, Group from group_messaging.models import Message from group_messaging.models import MessageMemo from group_messaging.models import SenderList +from group_messaging.models import LastVisitTime from group_messaging.models import get_personal_group from group_messaging.models import create_personal_group from group_messaging.views import ThreadsList from mock import Mock +import time MESSAGE_TEXT = 'test message text' @@ -213,3 +215,54 @@ class ModelTests(TestCase): recipient=self.sender, sender=self.recipient ) self.assertEqual(threads.count(), 0) + + def test_new_response_marks_thread_heading_as_new(self): + root = self.create_thread_for_user(self.recipient) + response = Message.objects.create_response( + sender=self.recipient, + text='some response', + parent=root + ) + #response must show as "new" to the self.sender + context = self.get_view_context( + ThreadsList, + data={'sender_id': '-1'}, + user=self.sender + ) + self.assertEqual(context['threads_data'][root.id]['status'], 'new') + #"visit" the thread + last_visit_time = LastVisitTime.objects.create( + user=self.sender, + message=root + ) + time.sleep(1.5) + + #response must show as "seen" + context = self.get_view_context( + ThreadsList, + data={'sender_id': '-1'}, + user=self.sender + ) + self.assertEqual(context['threads_data'][root.id]['status'], 'seen') + #self.recipient makes another response + response = Message.objects.create_response( + sender=self.recipient, + text='some response', + parent=response + ) + #thread must be "new" again + context = self.get_view_context( + ThreadsList, + data={'sender_id': '-1'}, + user=self.sender + ) + self.assertEqual(context['threads_data'][root.id]['status'], 'new') + + def test_response_updates_thread_headline(self): + root = self.create_thread_for_user(self.recipient) + response = Message.objects.create_response( + sender=self.recipient, + text='some response', + parent=root + ) + self.assertEqual(root.headline, 'some response') diff --git a/group_messaging/views.py b/group_messaging/views.py index 357c6457..3d973dbe 100644 --- a/group_messaging/views.py +++ b/group_messaging/views.py @@ -190,8 +190,6 @@ class ThreadsList(InboxView): if thread_data['thread'].last_active_at <= last_visit.at: thread_data['status'] = 'seen' - #after we have all the data - update the last visit time - last_visit_times.update(at=datetime.datetime.now()) return { 'threads': threads, 'threads_data': threads_data, |