Fix tests for Python 3

- drop Python 2 __future__ imports
- fix tests to handle new Django and Python 3 module names
- reformat changed files with black
This commit is contained in:
Jan Dittberner 2019-01-30 21:27:25 +01:00
parent ddec6b4184
commit 3d18392b67
32 changed files with 2707 additions and 2675 deletions

View file

@ -2,26 +2,18 @@
Tests for :py:mod:`contact_form.forms`.
"""
from __future__ import absolute_import, unicode_literals
from unittest.mock import MagicMock, Mock, patch
import mock
from mock import MagicMock, Mock
from django.core.urlresolvers import reverse
from django.test import TestCase
from django.contrib.sites.models import Site
from django.test import TestCase
from django.urls import reverse
from contact_form.forms import ContactForm
TEST_DATA = {
'name': 'Test User',
'email': 'test@example.org',
'body': 'Test message'
}
TEST_DATA = {"name": "Test User", "email": "test@example.org", "body": "Test message"}
class ContactFormTest(TestCase):
def test_constructor_needs_request(self):
with self.assertRaises(KeyError):
ContactForm()
@ -29,63 +21,63 @@ class ContactFormTest(TestCase):
def test_constructor(self):
request = MagicMock()
form = ContactForm(request=request)
self.assertTrue(hasattr(form, 'request'))
self.assertTrue(hasattr(form, "request"))
self.assertEqual(form.request, request)
self.assertTrue(hasattr(form, 'helper'))
self.assertEqual(form.helper.form_action, reverse('contact_form'))
self.assertTrue(hasattr(form, "helper"))
self.assertEqual(form.helper.form_action, reverse("contact_form"))
self.assertEqual(len(form.helper.inputs), 1)
self.assertEqual(form.helper.inputs[0].name, 'submit')
self.assertEqual(form.helper.inputs[0].name, "submit")
def test_constructor_fields(self):
request = MagicMock()
form = ContactForm(request=request)
self.assertEqual(len(form.fields), 3)
self.assertIn('email', form.fields)
self.assertIn('name', form.fields)
self.assertIn('body', form.fields)
self.assertIn("email", form.fields)
self.assertIn("name", form.fields)
self.assertIn("body", form.fields)
self.assertEqual(len(form.data), 0)
def test_get_context_invalid(self):
request = MagicMock()
form = ContactForm(request=request)
with self.assertRaisesMessage(
ValueError,
'Cannot generate context from invalid contact form'):
ValueError, "Cannot generate context from invalid contact form"
):
form.get_context()
def test_get_context_valid_site_installed(self):
request = MagicMock()
form = ContactForm(request=request, data=TEST_DATA)
context = form.get_context()
self.assertIn('site', context)
self.assertIn('name', context)
self.assertIn('email', context)
self.assertIn('body', context)
self.assertIn("site", context)
self.assertIn("name", context)
self.assertIn("email", context)
self.assertIn("body", context)
def test_get_context_valid_site_not_installed(self):
request = MagicMock()
form = ContactForm(request=request, data=TEST_DATA)
with mock.patch('contact_form.forms.Site') as sitemock:
with patch("contact_form.forms.Site") as sitemock:
sitemock._meta.installed = False
context = form.get_context()
self.assertIn('site', context)
self.assertIn('name', context)
self.assertIn('email', context)
self.assertIn('body', context)
self.assertIn("site", context)
self.assertIn("name", context)
self.assertIn("email", context)
self.assertIn("body", context)
def test_message(self):
request = Mock()
request.META = {'REMOTE_ADDR': '127.0.0.1'}
request.META = {"REMOTE_ADDR": "127.0.0.1"}
form = ContactForm(request=request, data=TEST_DATA)
message = form.message()
self.assertIn(TEST_DATA['name'], message)
self.assertIn(TEST_DATA['email'], message)
self.assertIn(TEST_DATA['body'], message)
self.assertIn('127.0.0.1', message)
self.assertIn(TEST_DATA["name"], message)
self.assertIn(TEST_DATA["email"], message)
self.assertIn(TEST_DATA["body"], message)
self.assertIn("127.0.0.1", message)
def test_subject(self):
request = Mock()
form = ContactForm(request=request, data=TEST_DATA)
subject = form.subject()
self.assertIn(Site.objects.get_current().name, subject)
self.assertIn(TEST_DATA['name'], subject)
self.assertIn(TEST_DATA["name"], subject)

View file

@ -2,126 +2,122 @@
Tests for :py:mod:`contact_form.views`.
"""
from __future__ import absolute_import, unicode_literals
from django.core import mail
from django.core.urlresolvers import reverse
from django.test import TestCase
from django.contrib.auth import get_user_model
from django.core import mail
from django.test import TestCase
from django.urls import reverse
User = get_user_model()
TEST_USER = 'test'
TEST_PASSWORD = 'secret'
TEST_EMAIL = 'test@example.org'
TEST_NAME = 'Example Tester'.split()
TEST_MESSAGE = '''
TEST_USER = "test"
TEST_PASSWORD = "secret"
TEST_EMAIL = "test@example.org"
TEST_NAME = "Example Tester".split()
TEST_MESSAGE = """
This is a really unimportant test message.
'''
"""
class ContactFormViewTest(TestCase):
def _setup_user(self, **kwargs):
return User.objects.create_user(
TEST_USER, email=TEST_EMAIL, password=TEST_PASSWORD,
**kwargs)
TEST_USER, email=TEST_EMAIL, password=TEST_PASSWORD, **kwargs
)
def test_get_contact_form_template(self):
response = self.client.get(reverse('contact_form'))
self.assertTemplateUsed(response, 'contact_form/contact_form.html')
response = self.client.get(reverse("contact_form"))
self.assertTemplateUsed(response, "contact_form/contact_form.html")
def test_get_contact_form_anonymous_status(self):
response = self.client.get(reverse('contact_form'))
response = self.client.get(reverse("contact_form"))
self.assertEqual(response.status_code, 200)
def test_get_contact_form_anonymous_has_empty_form(self):
response = self.client.get(reverse('contact_form'))
self.assertIn('form', response.context)
form = response.context['form']
response = self.client.get(reverse("contact_form"))
self.assertIn("form", response.context)
form = response.context["form"]
self.assertEqual(len(form.initial), 0)
def test_get_contact_form_fields_anonymous(self):
response = self.client.get(reverse('contact_form'))
for name in ('name', 'email', 'body'):
self.assertIn(name, response.context['form'].fields)
response = self.client.get(reverse("contact_form"))
for name in ("name", "email", "body"):
self.assertIn(name, response.context["form"].fields)
def test_post_empty_form_template(self):
response = self.client.post(reverse('contact_form'), {})
self.assertTemplateUsed(response, 'contact_form/contact_form.html')
response = self.client.post(reverse("contact_form"), {})
self.assertTemplateUsed(response, "contact_form/contact_form.html")
def test_post_empty_form_status(self):
response = self.client.post(reverse('contact_form'), {})
response = self.client.post(reverse("contact_form"), {})
self.assertEqual(response.status_code, 200)
def test_post_empty_form_validation_errors(self):
response = self.client.post(reverse('contact_form'), {})
self.assertIn('form', response.context)
form = response.context['form']
response = self.client.post(reverse("contact_form"), {})
self.assertIn("form", response.context)
form = response.context["form"]
self.assertFalse(form.is_valid())
self.assertEqual(len(form.errors), 3)
def test_post_empty_form_no_mail(self):
self.client.post(reverse('contact_form'), {})
self.client.post(reverse("contact_form"), {})
self.assertEqual(len(mail.outbox), 0)
def test_get_contact_form_logged_in_no_fullname_initial(self):
self._setup_user()
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
response = self.client.get(reverse('contact_form'))
self.assertIn('form', response.context)
form = response.context['form']
self.assertEqual(
form.initial, {'name': TEST_USER, 'email': TEST_EMAIL})
response = self.client.get(reverse("contact_form"))
self.assertIn("form", response.context)
form = response.context["form"]
self.assertEqual(form.initial, {"name": TEST_USER, "email": TEST_EMAIL})
def test_get_contact_form_logged_in_fullname_initial(self):
self._setup_user(
first_name=TEST_NAME[0], last_name=TEST_NAME[1])
self._setup_user(first_name=TEST_NAME[0], last_name=TEST_NAME[1])
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
response = self.client.get(reverse('contact_form'))
self.assertIn('form', response.context)
form = response.context['form']
response = self.client.get(reverse("contact_form"))
self.assertIn("form", response.context)
form = response.context["form"]
self.assertEqual(
form.initial,
{'name': " ".join(TEST_NAME), 'email': TEST_EMAIL})
form.initial, {"name": " ".join(TEST_NAME), "email": TEST_EMAIL}
)
def test_post_filled_form_anonymous_redirects(self):
response = self.client.post(reverse('contact_form'), {
'name': TEST_USER, 'email': TEST_EMAIL, 'body': TEST_MESSAGE})
self.assertRedirects(response, reverse('contact_success'))
response = self.client.post(
reverse("contact_form"),
{"name": TEST_USER, "email": TEST_EMAIL, "body": TEST_MESSAGE},
)
self.assertRedirects(response, reverse("contact_success"))
def test_post_filled_form_anonymous_mail(self):
self.client.post(reverse('contact_form'), {
'name': TEST_USER, 'email': TEST_EMAIL, 'body': TEST_MESSAGE})
self.client.post(
reverse("contact_form"),
{"name": TEST_USER, "email": TEST_EMAIL, "body": TEST_MESSAGE},
)
self.assertEqual(len(mail.outbox), 1)
def test_post_filled_form_logged_in_redirects(self):
self._setup_user(
first_name=TEST_NAME[0], last_name=TEST_NAME[1])
self._setup_user(first_name=TEST_NAME[0], last_name=TEST_NAME[1])
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
response = self.client.post(reverse('contact_form'), {
'name': " ".join(TEST_NAME), 'email': TEST_EMAIL,
'body': TEST_MESSAGE})
self.assertRedirects(response, reverse('contact_success'))
response = self.client.post(
reverse("contact_form"),
{"name": " ".join(TEST_NAME), "email": TEST_EMAIL, "body": TEST_MESSAGE},
)
self.assertRedirects(response, reverse("contact_success"))
def test_post_filled_form_logged_in_mail(self):
self._setup_user(
first_name=TEST_NAME[0], last_name=TEST_NAME[1])
self._setup_user(first_name=TEST_NAME[0], last_name=TEST_NAME[1])
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
self.client.post(reverse('contact_form'), {
'name': " ".join(TEST_NAME), 'email': TEST_EMAIL,
'body': TEST_MESSAGE})
self.client.post(
reverse("contact_form"),
{"name": " ".join(TEST_NAME), "email": TEST_EMAIL, "body": TEST_MESSAGE},
)
self.assertEqual(len(mail.outbox), 1)
class ContactSuccessViewTest(TestCase):
def test_get_template(self):
response = self.client.get(reverse('contact_success'))
self.assertTemplateUsed(response, 'contact_form/contact_success.html')
response = self.client.get(reverse("contact_success"))
self.assertTemplateUsed(response, "contact_form/contact_success.html")
def test_get_status(self):
response = self.client.get(reverse('contact_success'))
response = self.client.get(reverse("contact_success"))
self.assertEqual(response.status_code, 200)