def test_bad_lang_welcome(self, apply_updates, send_message): """Test sending welcome in english if user wants a lang that our newsletter doesn't support""" welcome = u'welcome' Newsletter.objects.create( slug='slug', vendor_id='VENDOR', welcome=welcome, languages='en,ru', ) token = "TOKEN" email = '*****@*****.**' lang = 'fr' format = 'H' # User who prefers French HTML messages user_data = { 'status': 'ok', 'confirmed': False, 'newsletters': ['slug'], 'format': format, 'lang': lang, 'token': token, 'email': email, } confirm_user(token, user_data) # They're getting English. And we don't append anything for HTML. expected_welcome = "en_%s" % welcome send_message.assert_called_with(expected_welcome, email, token, format)
def test_one_lang_welcome(self, send_message, get_user_data): """If a newsletter only has one language, the welcome message still gets a language prefix""" welcome = u'welcome' Newsletter.objects.create( slug='slug', vendor_id='VENDOR', welcome=welcome, languages='en', ) token = "TOKEN" email = '*****@*****.**' lang = 'pt-Br' format = 'H' get_user_data.return_value = { 'status': 'ok', 'confirmed': False, 'newsletters': ['slug'], 'format': format, 'lang': lang, 'token': token, 'email': email, } confirm_user(token) expected_welcome = 'en_' + welcome send_message.delay.assert_called_with(expected_welcome, email, token, format)
def test_html_welcome(self, apply_updates, send_message): """Test sending the right welcome message""" welcome = u'welcome' Newsletter.objects.create( slug='slug', vendor_id='VENDOR', welcome=welcome, languages='en,ru', ) token = "TOKEN" email = '*****@*****.**' lang = 'RU' # This guy had an uppercase lang code for some reason format = 'H' # User who prefers Russian HTML messages user_data = { 'status': 'ok', 'confirmed': False, 'newsletters': ['slug'], 'format': format, 'lang': lang, 'token': token, 'email': email, } confirm_user(token, user_data) # Lang code is lowercased. And we don't append anything for HTML. expected_welcome = "%s_%s" % (lang.lower(), welcome) send_message.assert_called_with(expected_welcome, email, token, format)
def test_text_welcome(self, send_message, get_user_data): """Test sending the right welcome message""" welcome = u'welcome' Newsletter.objects.create( slug='slug', vendor_id='VENDOR', welcome=welcome, languages='en,ru', ) token = "TOKEN" email = '*****@*****.**' lang = 'ru' format = 'T' # User who prefers Russian Text messages get_user_data.return_value = { 'status': 'ok', 'confirmed': False, 'newsletters': ['slug'], 'format': format, 'lang': lang, 'token': token, 'email': email, } confirm_user(token) expected_welcome = "%s_%s_%s" % (lang, welcome, format) send_message.delay.assert_called_with(expected_welcome, email, token, format)
def test_text_welcome(self, apply_updates, send_message): """Test sending the right welcome message""" welcome = u'welcome' Newsletter.objects.create( slug='slug', vendor_id='VENDOR', welcome=welcome, languages='en,ru', ) token = "TOKEN" email = '*****@*****.**' lang = 'ru' format = 'T' # User who prefers Russian Text messages user_data = { 'status': 'ok', 'confirmed': False, 'newsletters': ['slug'], 'format': format, 'lang': lang, 'token': token, 'email': email, } confirm_user(token, user_data) expected_welcome = "%s_%s_%s" % (lang, welcome, format) send_message.assert_called_with(expected_welcome, email, token, format)
def test_html_welcome(self, send_message, get_user_data): """Test sending the right welcome message""" welcome = u'welcome' Newsletter.objects.create( slug='slug', vendor_id='VENDOR', welcome=welcome, languages='en,ru', ) token = "TOKEN" email = '*****@*****.**' lang = 'RU' # This guy had an uppercase lang code for some reason format = 'H' # User who prefers Russian HTML messages get_user_data.return_value = { 'status': 'ok', 'confirmed': False, 'newsletters': ['slug'], 'format': format, 'lang': lang, 'token': token, 'email': email, } confirm_user(token) # Lang code is lowercased. And we don't append anything for HTML. expected_welcome = "%s_%s" % (lang.lower(), welcome) send_message.delay.assert_called_with(expected_welcome, email, token, format)
def test_bad_lang_welcome(self, send_message, get_user_data): """Test sending welcome in english if user wants a lang that our newsletter doesn't support""" welcome = u'welcome' Newsletter.objects.create( slug='slug', vendor_id='VENDOR', welcome=welcome, languages='en,ru', ) token = "TOKEN" email = '*****@*****.**' lang = 'fr' format = 'H' # User who prefers French HTML messages get_user_data.return_value = { 'status': 'ok', 'confirmed': False, 'newsletters': ['slug'], 'format': format, 'lang': lang, 'token': token, 'email': email, } confirm_user(token) # They're getting English. And we don't append anything for HTML. expected_welcome = "en_%s" % welcome send_message.delay.assert_called_with(expected_welcome, email, token, format)
def test_other_long_lang_welcome(self, send_message, get_user_data): """Test sending welcome in pt if the user wants pt-Br and the newsletter supports pt""" welcome = u'welcome' Newsletter.objects.create( slug='slug', vendor_id='VENDOR', welcome=welcome, languages='en,ru,pt', ) token = "TOKEN" email = '*****@*****.**' lang = 'pt-Br' format = 'H' get_user_data.return_value = { 'status': 'ok', 'confirmed': False, 'newsletters': ['slug'], 'format': format, 'lang': lang, 'token': token, 'email': email, } confirm_user(token) # They're getting pt. And we don't append anything for HTML. expected_welcome = "pt_%s" % welcome send_message.delay.assert_called_with(expected_welcome, email, token, format)
def test_one_lang_welcome(self, apply_updates, send_message): """If a newsletter only has one language, the welcome message still gets a language prefix""" welcome = u'welcome' Newsletter.objects.create( slug='slug', vendor_id='VENDOR', welcome=welcome, languages='en', ) token = "TOKEN" email = '*****@*****.**' lang = 'pt-Br' format = 'H' user_data = { 'status': 'ok', 'confirmed': False, 'newsletters': ['slug'], 'format': format, 'lang': lang, 'token': token, 'email': email, } confirm_user(token, user_data) expected_welcome = 'en_' + welcome send_message.assert_called_with(expected_welcome, email, token, format)
def test_other_long_lang_welcome(self, apply_updates, send_message): """Test sending welcome in pt if the user wants pt-Br and the newsletter supports pt""" welcome = u'welcome' Newsletter.objects.create( slug='slug', vendor_id='VENDOR', welcome=welcome, languages='en,ru,pt', ) token = "TOKEN" email = '*****@*****.**' lang = 'pt-Br' format = 'H' user_data = { 'status': 'ok', 'confirmed': False, 'newsletters': ['slug'], 'format': format, 'lang': lang, 'token': token, 'email': email, } confirm_user(token, user_data) # They're getting pt. And we don't append anything for HTML. expected_welcome = "pt_%s" % welcome send_message.assert_called_with(expected_welcome, email, token, format)
def test_user_not_found(self, get_user_data, apply_updates, send_welcomes): """If we can't find the user, raise exception""" get_user_data.return_value = None token = "TOKEN" with self.assertRaises(BasketError): confirm_user(token) self.assertFalse(apply_updates.called) self.assertFalse(send_welcomes.called)
def test_user_not_found(self, doi_mock, get_user_data, sfdc_mock): """If we can't find the user, try SFMC""" get_user_data.return_value = None doi_mock.return_value = None token = "TOKEN" confirm_user(token) doi_mock.assert_called_with(token) self.assertFalse(sfdc_mock.add.called) self.assertFalse(sfdc_mock.update.called)
def test_error(self, get_user_data, sfdc_mock): """ If user_data shows an error talking to ET, the task raises an exception so our task logic will retry """ get_user_data.side_effect = NewsletterException('Stuffs broke yo.') with self.assertRaises(NewsletterException): confirm_user('token') self.assertFalse(sfdc_mock.update.called)
def test_error(self, get_user_data, apply_updates, send_welcomes): """ If user_data shows an error talking to ET, the task raises an exception so our task logic will retry """ get_user_data.side_effect = NewsletterException('Stuffs broke yo.') with self.assertRaises(NewsletterException): confirm_user('token') self.assertFalse(apply_updates.called) self.assertFalse(send_welcomes.called)
def test_already_confirmed(self, get_user_data, sfdc_mock): """If user_data already confirmed, task does nothing""" user_data = { 'status': 'ok', 'optin': True, 'newsletters': Mock(), 'format': 'ZZ', } get_user_data.return_value = user_data token = "TOKEN" confirm_user(token) self.assertFalse(sfdc_mock.update.called)
def test_already_confirmed(self, apply_updates, send_welcomes): """If user_data already confirmed, task does nothing""" user_data = { 'status': 'ok', 'confirmed': True, 'newsletters': Mock(), 'format': 'ZZ', } token = "TOKEN" confirm_user(token, user_data) self.assertFalse(apply_updates.called) self.assertFalse(send_welcomes.called)
def test_normal(self, get_user_data, apply_updates, send_welcomes): """If user_data is okay, and not yet confirmed, the task calls the right stuff""" user_data = {'status': 'ok', 'confirmed': False, 'newsletters': Mock(), 'format': 'ZZ', 'email': '*****@*****.**', } get_user_data.return_value = user_data token = "TOKEN" confirm_user(token) apply_updates.assert_called_with(settings.EXACTTARGET_CONFIRMATION, {'TOKEN': token}) send_welcomes.assert_called_with(user_data, user_data['newsletters'], user_data['format'])
def test_user_not_found(self, apply_updates, send_welcomes): """If we can't find the user, raise exception""" # Can't patch get_user_data because confirm_user imports it # internally. But we can patch look_for_user, which get_user_data # will call with patch('news.views.look_for_user') as look_for_user: look_for_user.return_value = None user_data = None token = "TOKEN" with self.assertRaises(BasketError): confirm_user(token, user_data) self.assertFalse(apply_updates.called) self.assertFalse(send_welcomes.called)
def test_error(self, apply_updates, send_welcomes): """ If user_data shows an error talking to ET, the task raises an exception so our task logic will retry """ user_data = { 'status': 'error', 'desc': 'TESTERROR', } token = "TOKEN" with self.assertRaises(NewsletterException): confirm_user(token, user_data) self.assertFalse(apply_updates.called) self.assertFalse(send_welcomes.called)
def test_normal(self, get_user_data, sfdc_mock): """If user_data is okay, and not yet confirmed, the task calls the right stuff""" token = "TOKEN" user_data = { 'status': 'ok', 'optin': False, 'newsletters': Mock(), 'format': 'ZZ', 'email': '*****@*****.**', 'token': token } get_user_data.return_value = user_data confirm_user(token) sfdc_mock.update.assert_called_with(user_data, {'optin': True})
def test_normal(self, apply_updates, send_welcomes): """If user_data is okay, and not yet confirmed, the task calls the right stuff""" user_data = { 'status': 'ok', 'confirmed': False, 'newsletters': Mock(), 'format': 'ZZ', 'email': '*****@*****.**', } token = "TOKEN" confirm_user(token, user_data) apply_updates.assert_called_with(settings.EXACTTARGET_CONFIRMATION, {'TOKEN': token}) send_welcomes.assert_called_with(user_data, user_data['newsletters'], user_data['format'])