diff options
author | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2012-12-05 17:54:38 -0300 |
---|---|---|
committer | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2012-12-05 17:54:38 -0300 |
commit | 2011383985288497db3322a2d05c8aa6f8f5e8d6 (patch) | |
tree | 3782c3047ba7a435ff4993d1081ed6e98b207b04 /askbot/tests | |
parent | 56a3187a88927e8eb1bdc1c48f3f230ec5e42580 (diff) | |
download | askbot-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.py | 47 | ||||
-rw-r--r-- | askbot/tests/page_load_tests.py | 68 |
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') |