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

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 

6 

7from cheese.users.models import User 

8from cheese.users.views import ( 

9 UserRedirectView, 

10 UserUpdateView, 

11) 

12 

13pytestmark = pytest.mark.django_db 

14 

15 

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 """ 

24 

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

29 

30 view.request = request 1c

31 

32 assert view.get_success_url() == f"/users/{user.username}/" 1c

33 

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

38 

39 view.request = request 1d

40 

41 assert view.get_object() == user 1d

42 

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 """ 

53 

54 response = UserUpdateView.as_view()(request) 1b

55 user.refresh_from_db() 1b

56 

57 assert response.status_code == 302 1b

58 assert user.name == form_data["name"] 1b

59 

60 

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

66 

67 view.request = request 1e

68 

69 assert view.get_redirect_url() == f"/users/{user.username}/" 1e