Skip to content

Commit 8ddd3b1

Browse files
authored
Peripheral: Update what we test against (#19)
* Peripheral: Update what we test against * Peripheral: Update what we test against * Peripheral: Add tests for basic contact form * Peripheral: Change inheritance * Update CHANGELOG.md
1 parent faa4ccc commit 8ddd3b1

File tree

7 files changed

+57
-23
lines changed

7 files changed

+57
-23
lines changed

.github/workflows/django.yml

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,23 @@ jobs:
1414
fail-fast: false
1515
max-parallel: 4
1616
matrix:
17-
python-version: ['3.8', '3.9', '3.10']
18-
django-version: ['2.2', '3.2', '4.0']
17+
python-version: ['3.10', '3.11', '3.12']
18+
django-version: ['4.2', '5.2']
1919
include:
20-
- python-version: '3.7'
20+
- python-version: '3.8'
2121
django-version: '2.2'
22-
- python-version: '3.7'
22+
- python-version: '3.8'
2323
django-version: '3.2'
24+
- python-version: '3.8'
25+
django-version: '4.2'
26+
- python-version: '3.9'
27+
django-version: '3.2'
28+
- python-version: '3.9'
29+
django-version: '4.2'
30+
- python-version: '3.10'
31+
django-version: '3.2'
32+
- python-version: '3.13'
33+
django-version: '5.2'
2434

2535
steps:
2636
- uses: actions/checkout@v3

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
## [0.9.0] - 2025-04-07
2+
- Added: Django 5.2 support
3+
- Added: Python 3.13 support
4+
- Bug Fix: Fix Inheritance order with Django 4.2 and 5.2

contact_form/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11

2-
VERSION = '0.8.0'
2+
VERSION = '0.9.0'

contact_form/forms.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,13 @@ def send_email(self, request, fail_silently=False):
7979
fail_silently=fail_silently)
8080

8181

82-
class ContactForm(forms.Form, BaseEmailFormMixin):
82+
class ContactForm(BaseEmailFormMixin, forms.Form):
8383
"""
8484
Subclass this and declare your own fields.
8585
"""
8686

8787

88-
class ContactModelForm(forms.ModelForm, BaseEmailFormMixin):
88+
class ContactModelForm(BaseEmailFormMixin, forms.ModelForm):
8989
"""
9090
You'll need to declare the model yourself.
9191
"""

contact_form/templates/contact_form/email_template.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{% load i18n %}{% trans "Hi there," %}
22

3-
{% trans "You have receive a contact request." %}
3+
{% trans "You have received a contact request." %}
44

55
{% trans "Name:" %} {{ name }}
66
{% trans "Email:" %} {{ email }}

contact_form/tests.py

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,22 @@ def get_email_headers(self):
4949

5050

5151
class BaseEmailFormMixinTests(test.TestCase):
52-
@mock.patch('django.template.loader.render_to_string')
53-
def test_get_message_returns_rendered_message_template(
54-
self, render_to_string):
55-
context = {'message': 'an example message.'}
52+
53+
def test_get_message_returns_rendered_message_template(self):
54+
context = {'body': 'an example message.', "name": "tester", "email": "a@b.com"}
5655

5756
class TestForm(forms.BaseEmailFormMixin):
58-
message_template_name = "my_template.html"
57+
message_template_name = "contact_form/email_template.txt"
5958

6059
def get_context(self):
6160
return context
6261

6362
form = TestForm()
6463

6564
message = form.get_message()
66-
self.assertEqual(render_to_string.return_value, message)
67-
render_to_string.assert_called_once_with(form.message_template_name,
68-
context)
65+
self.assertIn("an example message.", message)
66+
self.assertIn("a@b.com", message)
67+
self.assertIn("tester", message)
6968

7069
@mock.patch('django.template.loader.render_to_string')
7170
def test_get_subject_returns_single_line_rendered_subject_template(
@@ -238,3 +237,22 @@ def test_has_valid_message_template(self):
238237
template_exists = 0
239238
self.assertTrue(template_exists,
240239
"Email message template does not exist")
240+
241+
242+
class BasicContactFormTests(test.TestCase):
243+
244+
def test_basic_contact_form_get_message_dict_shows_rendered_template_values(self):
245+
form = forms.BasicContactForm(data={"name": "Tester", "email": "a@b.com", "body": "Contact Me!"})
246+
form.request = test.RequestFactory().get("/")
247+
message_dict = form.get_message_dict()
248+
249+
self.assertIn("Contact Me!", message_dict['body'])
250+
self.assertIn("Tester", message_dict['body'])
251+
self.assertIn("a@b.com", message_dict['body'])
252+
253+
def test_basic_contact_form_get_message_dict_shows_subject_from_template(self):
254+
form = forms.BasicContactForm(data={"name": "Tester", "email": "a@b.com", "body": "Contact Me!"})
255+
form.request = test.RequestFactory().get("/")
256+
message_dict = form.get_message_dict()
257+
258+
self.assertIn("Contact request received", message_dict['subject'])

setup.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,20 @@
2626
"Development Status :: 5 - Production/Stable",
2727
"Environment :: Web Environment",
2828
"Framework :: Django",
29-
"Framework :: Django :: 1.11",
30-
"Framework :: Django :: 2.0",
31-
"Framework :: Django :: 2.1",
3229
"Framework :: Django :: 2.2",
30+
"Framework :: Django :: 3.2",
31+
"Framework :: Django :: 4.2",
32+
"Framework :: Django :: 5.2",
3333
"Intended Audience :: Developers",
3434
"License :: OSI Approved :: BSD License",
3535
"Operating System :: OS Independent",
3636
"Programming Language :: Python",
37-
"Programming Language :: Python :: 3.4",
38-
"Programming Language :: Python :: 3.5",
39-
"Programming Language :: Python :: 3.6",
40-
"Programming Language :: Python :: 3.7",
37+
"Programming Language :: Python :: 3.8",
38+
"Programming Language :: Python :: 3.9",
39+
"Programming Language :: Python :: 3.10",
40+
"Programming Language :: Python :: 3.11",
41+
"Programming Language :: Python :: 3.12",
42+
"Programming Language :: Python :: 3.13",
4143
"Topic :: Software Development",
4244
"Topic :: Software Development :: Libraries :: Application Frameworks",
4345
],

0 commit comments

Comments
 (0)