Coverage for cheese/users/tests/test_views.py: 100.00%
37 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-16 16:36 -0700
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-16 16:36 -0700
1import pytest
2from django.contrib.messages.middleware import MessageMiddleware # noqa:F401
3from django.contrib.sessions.middleware import SessionMiddleware # noqa:F401
4from django.test import RequestFactory
5from django.urls import reverse
7from cheese.users.models import User
8from cheese.users.views import (
9 UserRedirectView,
10 UserUpdateView,
11)
13pytestmark = pytest.mark.django_db
16class TestUserUpdateView:
17 """
18 TODO:
19 extracting view initialization code as class-scoped fixture
20 would be great if only pytest-django supported non-function-scoped
21 fixture db access -- this is a work-in-progress for now:
22 https://github.com/pytest-dev/pytest-django/pull/258
23 """
25 def test_get_success_url(self, user: User, request_factory: RequestFactory):
26 view = UserUpdateView() 1c
27 request = request_factory.get("/fake-url/") 1c
28 request.user = user 1c
30 view.request = request 1c
32 assert view.get_success_url() == f"/users/{user.username}/" 1c
34 def test_get_object(self, user: User, request_factory: RequestFactory):
35 view = UserUpdateView() 1d
36 request = request_factory.get("/fake-url/") 1d
37 request.user = user 1d
39 view.request = request 1d
41 assert view.get_object() == user 1d
43 def test_form_valid(self, user: User, request_factory: RequestFactory):
44 form_data = {"name": "John Doe"} 1b
45 request = request_factory.post(reverse("users:update"), form_data) 1b
46 request.user = user 1b
47 """ 1b
48 session_middleware = SessionMiddleware()
49 session_middleware.process_request(request)
50 msg_middleware = MessageMiddleware()
51 msg_middleware.process_request(request)
52 """
54 response = UserUpdateView.as_view()(request) 1b
55 user.refresh_from_db() 1b
57 assert response.status_code == 302 1b
58 assert user.name == form_data["name"] 1b
61class TestUserRedirectView:
62 def test_get_redirect_url(self, user: User, request_factory: RequestFactory):
63 view = UserRedirectView() 1e
64 request = request_factory.get("/fake-url") 1e
65 request.user = user 1e
67 view.request = request 1e
69 assert view.get_redirect_url() == f"/users/{user.username}/" 1e