diff options
author | Carlton Gibson <carlton.gibson@noumenal.es> | 2021-07-13 16:06:12 +0200 |
---|---|---|
committer | Carlton Gibson <carlton.gibson@noumenal.es> | 2021-07-14 09:47:03 +0200 |
commit | 3a45fea0832c5910acee6e0d29f230f347a50462 (patch) | |
tree | 7d273f954660f9489b03cd0b8ea6c6f202cc9122 /tests/messages_tests | |
parent | 37e8367c359cd115f109d82f99ff32be219f4928 (diff) | |
download | django-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.py | 5 | ||||
-rw-r--r-- | tests/messages_tests/test_mixins.py | 13 | ||||
-rw-r--r-- | tests/messages_tests/urls.py | 11 |
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)/$', |