Coverage for accounts/tests/test_views.py: 97.67%
43 statements
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-04 11:03 -0700
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-04 11:03 -0700
1import pytest 1a
2from django.contrib.messages.middleware import MessageMiddleware 1a
3from django.contrib.sessions.middleware import SessionMiddleware 1a
4from django.http import HttpRequest 1a
5from django.test import RequestFactory 1a
6from django.urls import reverse 1a
8from ..forms import CustomUserChangeForm # noqa:F401 1a
9from ..models import CustomUser 1a
10from ..views import UserRedirectView, UserUpdateView 1a
12pytestmark = pytest.mark.django_db 1a
15class TestUserUpdateView: 1a
16 """TODO:
18 extracting view initialization code as class-scoped fixture
19 would be great if only pytest-django supported non-function-scoped
20 fixture db access -- this is a work-in-progress for now:
21 https://github.com/pytest-dev/pytest-django/pull/258
22 """
24 def dummy_get_response(self, request: HttpRequest): 1a
25 return None
27 def test_get_success_url(self, user: CustomUser, request_factory: RequestFactory): 1a
28 view = UserUpdateView() 1a
29 request = request_factory.get("/fake-url/") 1a
30 request.user = user 1a
32 view.request = request 1a
34 assert view.get_success_url() == f"/accounts/{user.username}/" 1a
36 def test_get_object(self, user: CustomUser, request_factory: RequestFactory): 1a
37 view = UserUpdateView() 1a
38 request = request_factory.get("/fake-url/") 1a
39 request.user = user 1a
41 view.request = request 1a
43 assert view.get_object() == user 1a
45 def test_form_valid(self, user: CustomUser, request_factory: RequestFactory): 1a
46 # view = UserUpdateView()
47 form_data = {"name": "John Doe"} 1a
48 request = request_factory.post(reverse("user_update"), form_data) 1a
50 # Add the session/message middleware to the request
51 SessionMiddleware(self.dummy_get_response).process_request(request) 1a
52 MessageMiddleware(self.dummy_get_response).process_request(request) 1a
53 request.user = user 1a
55 """ 1a
56 view.request = request
58 # Initialize the form
59 form = CustomUserChangeForm()
60 form.cleaned_data = {}
61 view.form_valid(form)
62 """
64 response = UserUpdateView.as_view()(request) 1a
65 user.refresh_from_db() 1a
67 assert response.status_code == 302 1a
68 assert user.name == form_data["name"] 1a
71class TestUserRedirectView: 1a
72 def test_get_redirect_url(self, user: CustomUser, request_factory: RequestFactory): 1a
73 view = UserRedirectView() 1a
74 request = request_factory.get("/fake-url") 1a
75 request.user = user 1a
77 view.request = request 1a
79 assert view.get_redirect_url() == f"/accounts/{user.username}/" 1a