Source code for mailjet.contrib.django_mailjet.tests

import time

from django.test import TestCase

import mailjet

from .forms import SubscriptionForm


[docs]class SubscriptionFormTest(TestCase):
[docs] def list_name_and_label(self): ts = int(time.time()) result = (u'Test%s' % ts, u'test%s' % ts) self.temporary_lists.append(result) return result
[docs] def setUp(self): self.temporary_lists = [] self.list_name, self.list_label = self.list_name_and_label() self.api = mailjet.Api()
[docs] def tearDown(self): lists = self.api.lists.all()['lists'] for temporary_list in self.temporary_lists: for l in lists: if l['name'] == temporary_list[0]: self.api.lists.delete(method='POST', id=l['id'])
[docs] def test_add_contact(self): form = SubscriptionForm( data={'email': 'james@example.com'}, list_name=self.list_name, list_label=self.list_label) self.assertTrue( form.is_valid(), 'Form should be valid for test to continue') form.add_contact() for c in self.api.lists.contacts(id=form.list_id)['result']: if c['email'] == 'james@example.com': return self.fail('Contact was not created')
[docs] def test_settings_override(self): name_fixture, label_fixture = self.list_name_and_label() with self.settings(MAILJET_LIST_NAME=name_fixture): form = SubscriptionForm() self.assertEqual(name_fixture, form.list_name) form = SubscriptionForm(list_name=self.list_name) self.assertEqual(self.list_name, form.list_name) # self.settings context manager cannot be used to override 2 settings with self.settings(MAILJET_LIST_LABEL=label_fixture): form = SubscriptionForm() self.assertEqual(label_fixture, form.list_label) form = SubscriptionForm(list_label=self.list_label) self.assertEqual(self.list_label, form.list_label)
[docs] def test_save(self): def contact_in_list(email): for c in self.api.lists.contacts(id=form.list_id)['result']: if c['email'] == email: return True return False form = SubscriptionForm( data={'email': 'james@example.com'}, list_name=self.list_name, list_label=self.list_label) self.assertTrue( form.is_valid(), 'Form should be valid for test to continue') self.assertFalse( contact_in_list('james@example.com'), 'Contact must not be in list for test to continue') form.save() self.assertTrue(contact_in_list('james@example.com')) form = SubscriptionForm( data={'email': 'rick@example.com'}, list_name=self.list_name, list_label=self.list_label) self.assertTrue( form.is_valid(), 'Form should be valid for test to continue') self.assertFalse( contact_in_list('rick@example.com'), 'Contact must not be in list for test to continue') form.save() self.assertTrue(contact_in_list('rick@example.com'))
[docs] def test_clean_email(self): form = SubscriptionForm( data={'email': 'james@example.com'}, list_name=self.list_name, list_label=self.list_label) self.assertTrue( form.is_valid(), 'Form should be valid for test to continue') form.save() form = SubscriptionForm( data={'email': 'james@example.com'}, list_name=self.list_name, list_label=self.list_label) self.assertFalse( form.is_valid(), 'Form should detect duplicate email')