summaryrefslogtreecommitdiff
path: root/tests/messages_tests
diff options
context:
space:
mode:
authorCarlton Gibson <carlton.gibson@noumenal.es>2021-07-13 16:06:12 +0200
committerCarlton Gibson <carlton.gibson@noumenal.es>2021-07-14 09:47:03 +0200
commit3a45fea0832c5910acee6e0d29f230f347a50462 (patch)
tree7d273f954660f9489b03cd0b8ea6c6f202cc9122 /tests/messages_tests
parent37e8367c359cd115f109d82f99ff32be219f4928 (diff)
downloaddjango-3a45fea0832c5910acee6e0d29f230f347a50462.tar.gz
Fixed #21936 -- Allowed DeleteView to work with custom Forms and SuccessMessageMixin.
Thanks to Mariusz Felisiak for review. Co-authored-by: Demetris Stavrou <demestav@gmail.com> Co-authored-by: Caroline Simpson <github@hoojiboo.com>
Diffstat (limited to 'tests/messages_tests')
-rw-r--r--tests/messages_tests/models.py5
-rw-r--r--tests/messages_tests/test_mixins.py13
-rw-r--r--tests/messages_tests/urls.py11
3 files changed, 25 insertions, 4 deletions
diff --git a/tests/messages_tests/models.py b/tests/messages_tests/models.py
new file mode 100644
index 0000000000..8ee894894b
--- /dev/null
+++ b/tests/messages_tests/models.py
@@ -0,0 +1,5 @@
+from django.db import models
+
+
+class SomeObject(models.Model):
+ name = models.CharField(max_length=255)
diff --git a/tests/messages_tests/test_mixins.py b/tests/messages_tests/test_mixins.py
index 051ed82b6b..f4d0b26d28 100644
--- a/tests/messages_tests/test_mixins.py
+++ b/tests/messages_tests/test_mixins.py
@@ -1,12 +1,13 @@
from django.core.signing import b64_decode
-from django.test import SimpleTestCase, override_settings
+from django.test import TestCase, override_settings
from django.urls import reverse
-from .urls import ContactFormViewWithMsg
+from .models import SomeObject
+from .urls import ContactFormViewWithMsg, DeleteFormViewWithMsg
@override_settings(ROOT_URLCONF='messages_tests.urls')
-class SuccessMessageMixinTests(SimpleTestCase):
+class SuccessMessageMixinTests(TestCase):
def test_set_messages_success(self):
author = {'name': 'John Doe', 'slug': 'success-msg'}
@@ -17,3 +18,9 @@ class SuccessMessageMixinTests(SimpleTestCase):
req.cookies['messages'].value.split(":")[0].encode(),
).decode()
self.assertIn(ContactFormViewWithMsg.success_message % author, value)
+
+ def test_set_messages_success_on_delete(self):
+ object_to_delete = SomeObject.objects.create(name='MyObject')
+ delete_url = reverse('success_msg_on_delete', args=[object_to_delete.pk])
+ response = self.client.post(delete_url, follow=True)
+ self.assertContains(response, DeleteFormViewWithMsg.success_message)
diff --git a/tests/messages_tests/urls.py b/tests/messages_tests/urls.py
index 433a249bb8..983cb33d72 100644
--- a/tests/messages_tests/urls.py
+++ b/tests/messages_tests/urls.py
@@ -6,7 +6,9 @@ from django.template import engines
from django.template.response import TemplateResponse
from django.urls import path, re_path, reverse
from django.views.decorators.cache import never_cache
-from django.views.generic.edit import FormView
+from django.views.generic.edit import DeleteView, FormView
+
+from .models import SomeObject
TEMPLATE = """{% if messages %}
<ul class="messages">
@@ -63,9 +65,16 @@ class ContactFormViewWithMsg(SuccessMessageMixin, FormView):
success_message = "%(name)s was created successfully"
+class DeleteFormViewWithMsg(SuccessMessageMixin, DeleteView):
+ model = SomeObject
+ success_url = '/show/'
+ success_message = 'Object was deleted successfully'
+
+
urlpatterns = [
re_path('^add/(debug|info|success|warning|error)/$', add, name='add_message'),
path('add/msg/', ContactFormViewWithMsg.as_view(), name='add_success_msg'),
+ path('delete/msg/<int:pk>', DeleteFormViewWithMsg.as_view(), name='success_msg_on_delete'),
path('show/', show, name='show_message'),
re_path(
'^template_response/add/(debug|info|success|warning|error)/$',