From d2ec1eca12ee2f6356a96009e65f60b1975f9ecd Mon Sep 17 00:00:00 2001 From: Thorrak Date: Thu, 26 Nov 2020 10:15:04 -0500 Subject: [PATCH 1/3] Fix typo in message --- .../{{cookiecutter.project_slug}}/users/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/views.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/views.py index 520b1e52c..fe41938d7 100644 --- a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/views.py +++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/views.py @@ -31,7 +31,7 @@ class UserUpdateView(LoginRequiredMixin, UpdateView): def form_valid(self, form): messages.add_message( - self.request, messages.INFO, _("Infos successfully updated") + self.request, messages.INFO, _("Information successfully updated") ) return super().form_valid(form) From 894dbce6459d5aa63f83f71bffaca12708b739c3 Mon Sep 17 00:00:00 2001 From: Thorrak Date: Thu, 26 Nov 2020 10:17:20 -0500 Subject: [PATCH 2/3] Add test for users.form_valid Ensures that the message is added to the request when a form is submitted --- .../users/tests/test_views.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_views.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_views.py index 3638c8f63..23d4ab3c8 100644 --- a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_views.py +++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_views.py @@ -1,8 +1,12 @@ import pytest +from django.contrib import messages from django.contrib.auth.models import AnonymousUser +from django.contrib.messages.middleware import MessageMiddleware +from django.contrib.sessions.middleware import SessionMiddleware from django.http.response import Http404 from django.test import RequestFactory +from {{ cookiecutter.project_slug }}.users.forms import UserChangeForm from {{ cookiecutter.project_slug }}.users.models import User from {{ cookiecutter.project_slug }}.users.tests.factories import UserFactory from {{ cookiecutter.project_slug }}.users.views import ( @@ -41,6 +45,24 @@ class TestUserUpdateView: assert view.get_object() == user + def test_form_valid(self, user: User, rf: RequestFactory): + view = UserUpdateView() + request = rf.get("/fake-url/") + + # Add the session/message middleware to the request + SessionMiddleware().process_request(request) + MessageMiddleware().process_request(request) + request.user = user + + view.request = request + + # Initialize the form + form = UserChangeForm() + form.cleaned_data = [] + view.form_valid(form) + + assert messages.get_messages(request)._queued_messages[0].message == "Information successfully updated" + class TestUserRedirectView: def test_get_redirect_url(self, user: User, rf: RequestFactory): From ed69df44032c5b9911640e25ec3b30f238d3b46e Mon Sep 17 00:00:00 2001 From: Thorrak Date: Thu, 26 Nov 2020 11:23:46 -0500 Subject: [PATCH 3/3] Change test to iterate through messages instead of accessing _queued_messages directly --- .../{{cookiecutter.project_slug}}/users/tests/test_views.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_views.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_views.py index 23d4ab3c8..52d146065 100644 --- a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_views.py +++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_views.py @@ -61,7 +61,11 @@ class TestUserUpdateView: form.cleaned_data = [] view.form_valid(form) - assert messages.get_messages(request)._queued_messages[0].message == "Information successfully updated" + found_message = False + for message in messages.get_messages(request): + assert message.message == "Information successfully updated" + found_message = True + assert found_message class TestUserRedirectView: