Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 2 additions & 5 deletions apps/messages/tests/test_context_processors.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,16 @@
import mock
from nose.tools import eq_
from test_utils import RequestFactory
import waffle

import messages
from messages.context_processors import unread_message_count
from sumo.tests import TestCase
from users.tests import get_user
from users.tests import user


class UnreadCountTests(TestCase):
"""Tests for unread_message_count."""

fixtures = ['users.json']

@mock.patch.object(messages, 'unread_count_for')
def test_anonymous(self, unread_count_for):
"""Test anonymous user with flag active."""
Expand All @@ -32,6 +29,6 @@ def test_authenticated(self, unread_count_for):
unread_count_for.return_value = 3
rf = RequestFactory()
request = rf.get('/')
request.user = get_user('rrosario')
request.user = user(save=True)
eq_(3, unread_message_count(request)['unread_message_count'])
assert unread_count_for.called
12 changes: 5 additions & 7 deletions apps/messages/tests/test_internal_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,15 @@
from messages import send_message
from messages.models import InboxMessage, OutboxMessage
from sumo.tests import TestCase
from users.tests import get_user
from users.tests import user


class SendTests(TestCase):
"""Tests for the internal send API."""

fixtures = ['users.json']

def test_send_message(self):
to = [get_user('jsocol'), get_user('pcraciunoiu')]
sender = get_user('rrosario')
to = [user(save=True), user(save=True)]
sender = user(save=True)
msg_text = "hi there!"
send_message(to=to, text=msg_text, sender=sender)

Expand All @@ -23,8 +21,8 @@ def test_send_message(self):
msg_out = msgs_out[0]
eq_(sender, msg_out.sender)
eq_(msg_text, msg_out.message)
for user in msg_out.to.all():
assert user in to
for u in msg_out.to.all():
assert u in to
eq_(2, msgs_in.count())
for message in msgs_in:
eq_(sender, message.sender)
Expand Down
37 changes: 20 additions & 17 deletions apps/messages/tests/test_notifications.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
from django.contrib.auth.models import User
from django.contrib.sites.models import Site
from django.core import mail

Expand All @@ -7,13 +6,20 @@
from kbforums.tests import KBForumTestCase
from sumo.tests import post, attrs_eq, starts_with
from users.models import Setting
from users.tests import user

PRIVATE_MESSAGE_EMAIL = '{sender} sent you the following'


class NotificationsTests(KBForumTestCase):
"""Test that notifications get sent."""

def setUp(self):
super(NotificationsTests, self).setUp()

self.sender = user(save=True)
self.to = user(save=True)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I would specify usernames here given that you're testing usernames later.

Sure, if not specified, usernames are randomly generated. But given that it's part of the test, I think it's better to define it in the test. e.g.

self.sender = user(username=u'Alice', save=True)
self.to = user(username=u'Bob', save=True)


@mock.patch.object(Site.objects, 'get_current')
def test_private_message_sends_email(self, get_current):
"""
Expand All @@ -22,24 +28,23 @@ def test_private_message_sends_email(self, get_current):
"""
get_current.return_value.domain = 'testserver'

to = User.objects.all()[1]
s, c = Setting.objects.get_or_create(user=to,
s, c = Setting.objects.get_or_create(user=self.to,
name='email_private_messages')
s.value = True
s.save()
# User has setting, and should recieve notification email.

assert Setting.get_for_user(to, 'email_private_messages')
assert Setting.get_for_user(self.to, 'email_private_messages')

self.client.login(username='jsocol', password='testpass')
res = post(self.client, 'messages.new',
{'to': to, 'message': 'a message'})
self.client.login(username=self.sender.username, password='testpass')
post(self.client, 'messages.new',
{'to': self.to, 'message': 'a message'})
subject = u'[SUMO] You have a new private message from [{sender}]'

attrs_eq(mail.outbox[0], to=[to.email],
subject=subject.format(sender='jsocol'))
attrs_eq(mail.outbox[0], to=[self.to.email],
subject=subject.format(sender=self.sender.username))
starts_with(mail.outbox[0].body,
PRIVATE_MESSAGE_EMAIL.format(sender='jsocol'))
PRIVATE_MESSAGE_EMAIL.format(sender=self.sender.username))

@mock.patch.object(Site.objects, 'get_current')
def test_private_message_not_sends_email(self, get_current):
Expand All @@ -49,17 +54,15 @@ def test_private_message_not_sends_email(self, get_current):
"""
get_current.return_value.domain = 'testserver'

to = User.objects.all()[1]
s, c = Setting.objects.get_or_create(user=to,
s, c = Setting.objects.get_or_create(user=self.to,
name='email_private_messages')
# Now usershould not recieve email.
s.value = False
s.save()
assert not Setting.get_for_user(to, 'email_private_messages')
assert not Setting.get_for_user(self.to, 'email_private_messages')

self.client.login(username='jsocol', password='testpass')
res = post(self.client, 'messages.new',
{'to': to, 'message': 'a message'})
subject = u'You have a new private message from [{sender}]'
self.client.login(username=self.sender.username, password='testpass')
post(self.client, 'messages.new',
{'to': self.to, 'message': 'a message'})

assert not mail.outbox