summaryrefslogtreecommitdiffstats
path: root/askbot/tests
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-12-05 17:54:38 -0300
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-12-05 17:54:38 -0300
commit2011383985288497db3322a2d05c8aa6f8f5e8d6 (patch)
tree3782c3047ba7a435ff4993d1081ed6e98b207b04 /askbot/tests
parent56a3187a88927e8eb1bdc1c48f3f230ec5e42580 (diff)
downloadaskbot-2011383985288497db3322a2d05c8aa6f8f5e8d6.tar.gz
askbot-2011383985288497db3322a2d05c8aa6f8f5e8d6.tar.bz2
askbot-2011383985288497db3322a2d05c8aa6f8f5e8d6.zip
bugfixes: 1) global subscribers get emails even if frequency is zero; 2) if subscribed tag set is enabled users wont get emails on tag subscription; 3) if email is read-only email is lost upon editing user profile; 4) in some browsers there is horizontal scroll in the post body, which should not be there
Diffstat (limited to 'askbot/tests')
-rw-r--r--askbot/tests/email_alert_tests.py47
-rw-r--r--askbot/tests/page_load_tests.py68
2 files changed, 112 insertions, 3 deletions
diff --git a/askbot/tests/email_alert_tests.py b/askbot/tests/email_alert_tests.py
index bdb361e5..d11890a8 100644
--- a/askbot/tests/email_alert_tests.py
+++ b/askbot/tests/email_alert_tests.py
@@ -576,6 +576,16 @@ class InstantWholeForumEmailAlertTests(EmailAlertTests):
self.expected_results['q_ans'] = {'message_count': 1, }
self.expected_results['q_ans_new_answer'] = {'message_count': 2, }
+ def test_global_subscriber_with_zero_frequency_gets_no_email(self):
+ user = self.target_user
+ user.notification_subscriptions.update(frequency='n')
+ user.email_tag_filter_strategy = const.INCLUDE_ALL
+ user.save()
+ self.post_question(author=self.other_user)
+ outbox = django.core.mail.outbox
+ self.assertEqual(len(outbox), 0)
+
+
class BlankWeeklySelectedQuestionsEmailAlertTests(EmailAlertTests):
"""blank means that this is testing for the absence of email
because questions are not followed as set by default in the
@@ -739,12 +749,12 @@ class FeedbackTests(utils.AskbotTestCase):
class TagFollowedInstantWholeForumEmailAlertTests(utils.AskbotTestCase):
def setUp(self):
- self.create_user(
+ self.user1 = self.create_user(
username = 'user1',
notification_schedule = {'q_all': 'i'},
status = 'm'
)
- self.create_user(
+ self.user2 = self.create_user(
username = 'user2',
status = 'm'
)
@@ -773,7 +783,8 @@ class TagFollowedInstantWholeForumEmailAlertTests(utils.AskbotTestCase):
self.user1.email in outbox[0].recipients()
)
- def test_tag_based_subscription_on_new_question_works(self):
+ @with_settings(SUBSCRIBED_TAG_SELECTOR_ENABLED=False)
+ def test_tag_based_subscription_on_new_question_works1(self):
"""someone subscribes for an pre-existing tag
then another user asks a question with that tag
and the subcriber receives an alert
@@ -802,6 +813,36 @@ class TagFollowedInstantWholeForumEmailAlertTests(utils.AskbotTestCase):
self.user1.email in outbox[0].recipients()
)
+ @with_settings(SUBSCRIBED_TAG_SELECTOR_ENABLED=True)
+ def test_tag_based_subscription_on_new_question_works1(self):
+ """someone subscribes for an pre-existing tag
+ then another user asks a question with that tag
+ and the subcriber receives an alert
+ """
+ models.Tag(
+ name = 'something',
+ created_by = self.user1
+ ).save()
+
+ self.user1.email_tag_filter_strategy = const.INCLUDE_SUBSCRIBED
+ self.user1.save()
+ self.user1.mark_tags(
+ tagnames = ('something',),
+ reason = 'subscribed',
+ action = 'add'
+ )
+ self.user2.post_question(
+ title = 'some title',
+ body_text = 'some text for the question',
+ tags = 'something'
+ )
+ outbox = django.core.mail.outbox
+ self.assertEqual(len(outbox), 1)
+ self.assertEqual(len(outbox[0].recipients()), 1)
+ self.assertTrue(
+ self.user1.email in outbox[0].recipients()
+ )
+
class EmailReminderTestCase(utils.AskbotTestCase):
#subclass must define these (example below)
#enable_setting_name = 'ENABLE_UNANSWERED_REMINDERS'
diff --git a/askbot/tests/page_load_tests.py b/askbot/tests/page_load_tests.py
index 6c820fef..1e5ce903 100644
--- a/askbot/tests/page_load_tests.py
+++ b/askbot/tests/page_load_tests.py
@@ -720,3 +720,71 @@ class CommandViewTests(AskbotTestCase):
def test_load_object_description_fails(self):
response = self.client.get(reverse('load_object_description'))
self.assertEqual(response.status_code, 404)#bad request
+
+ def test_set_tag_filter_strategy(self):
+ user = self.create_user('someuser')
+
+ def run_test_for_setting(self, filter_type, value):
+ response = self.client.post(
+ reverse('set_tag_filter_strategy'),
+ data={
+ 'filter_type': filter_type,
+ 'filter_value': value
+ },
+ HTTP_X_REQUESTED_WITH='XMLHttpRequest'
+ )
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.content, '')
+
+ self.client.login(user_id=user.id, method='force')
+
+ from askbot import conf
+ values = dict(conf.get_tag_email_filter_strategy_choices()).keys()
+ for value in values:
+ run_test_for_setting(self, 'email', value)
+ user = self.reload_object(user)
+ self.assertEqual(user.email_tag_filter_strategy, value)
+
+ values = dict(conf.get_tag_display_filter_strategy_choices()).keys()
+ for value in values:
+ run_test_for_setting(self, 'display', value)
+ user = self.reload_object(user)
+ self.assertEqual(user.display_tag_filter_strategy, value)
+
+
+class UserProfilePageTests(AskbotTestCase):
+ def setUp(self):
+ self.user = self.create_user('user')
+
+ @with_settings(EDITABLE_EMAIL=False)
+ def test_user_cannot_change_email(self):
+ #log in
+ self.client.login(user_id=self.user.id, method='force')
+ email_before = self.user.email
+ response = self.client.post(
+ reverse('edit_user', kwargs={'id': self.user.id}),
+ data={
+ 'username': 'edited',
+ 'email': 'fake@example.com'
+ }
+ )
+ self.assertEqual(response.status_code, 302)
+ user = self.reload_object(self.user)
+ self.assertEqual(user.username, 'edited')
+ self.assertEqual(user.email, email_before)
+
+ @with_settings(EDITABLE_EMAIL=True)
+ def test_user_can_change_email(self):
+ self.client.login(user_id=self.user.id, method='force')
+ email_before = self.user.email
+ response = self.client.post(
+ reverse('edit_user', kwargs={'id': self.user.id}),
+ data={
+ 'username': 'edited',
+ 'email': 'new@example.com'
+ }
+ )
+ self.assertEqual(response.status_code, 302)
+ user = self.reload_object(self.user)
+ self.assertEqual(user.username, 'edited')
+ self.assertEqual(user.email, 'new@example.com')