summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--group_messaging/models.py8
-rw-r--r--group_messaging/tests.py53
-rw-r--r--group_messaging/views.py2
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,