10
10
11
11
from sde_indexing_helper .users .forms import UserAdminChangeForm
12
12
from sde_indexing_helper .users .models import User
13
- from sde_indexing_helper .users .tests .factories import UserFactory
14
13
from sde_indexing_helper .users .views import (
15
14
UserRedirectView ,
16
15
UserUpdateView ,
22
21
23
22
class TestUserUpdateView :
24
23
"""
25
- TODO:
26
- extracting view initialization code as class-scoped fixture
27
- would be great if only pytest-django supported non-function-scoped
28
- fixture db access -- this is a work-in-progress for now:
29
- https://github.com/pytest-dev/pytest-django/pull/258
24
+ Tests for the UserUpdateView.
30
25
"""
31
26
32
- def dummy_get_response (self , request : HttpRequest ):
27
+ @staticmethod
28
+ def dummy_get_response (request : HttpRequest ):
29
+ """Dummy get_response method for middleware testing."""
33
30
return None
34
31
35
32
def test_get_success_url (self , user : User , rf : RequestFactory ):
33
+ """
34
+ Test that UserUpdateView redirects to the correct success URL.
35
+ """
36
36
view = UserUpdateView ()
37
37
request = rf .get ("/fake-url/" )
38
38
request .user = user
39
-
40
39
view .request = request
41
40
42
- assert view .get_success_url () == f"/users/{ user .username } /"
41
+ expected_url = f"/users/{ user .username } /"
42
+ assert view .get_success_url () == expected_url , f"Expected { expected_url } , got { view .get_success_url ()} "
43
43
44
44
def test_get_object (self , user : User , rf : RequestFactory ):
45
+ """
46
+ Test that UserUpdateView retrieves the correct user object.
47
+ """
45
48
view = UserUpdateView ()
46
49
request = rf .get ("/fake-url/" )
47
50
request .user = user
48
-
49
51
view .request = request
50
52
51
53
assert view .get_object () == user
52
54
53
55
def test_form_valid (self , user : User , rf : RequestFactory ):
56
+ """
57
+ Test that form submission in UserUpdateView processes correctly.
58
+ """
54
59
view = UserUpdateView ()
55
60
request = rf .get ("/fake-url/" )
56
61
57
- # Add the session/message middleware to the request
62
+ # Add session and message middleware
58
63
SessionMiddleware (self .dummy_get_response ).process_request (request )
59
64
MessageMiddleware (self .dummy_get_response ).process_request (request )
60
65
request .user = user
@@ -72,26 +77,43 @@ def test_form_valid(self, user: User, rf: RequestFactory):
72
77
73
78
74
79
class TestUserRedirectView :
80
+ """
81
+ Tests for the UserRedirectView.
82
+ """
83
+
75
84
def test_get_redirect_url (self , user : User , rf : RequestFactory ):
85
+ """
86
+ Test that UserRedirectView redirects to the "sde_collections:list" URL.
87
+ """
76
88
view = UserRedirectView ()
77
- request = rf .get ("/fake-url" )
89
+ request = rf .get ("/fake-url/ " )
78
90
request .user = user
79
-
80
91
view .request = request
81
92
82
- assert view .get_redirect_url () == f"/users/{ user .username } /"
93
+ expected_url = reverse ("sde_collections:list" )
94
+ assert view .get_redirect_url () == expected_url , f"Expected { expected_url } , got { view .get_redirect_url ()} "
83
95
84
96
85
97
class TestUserDetailView :
98
+ """
99
+ Tests for the user_detail_view function.
100
+ """
101
+
86
102
def test_authenticated (self , user : User , rf : RequestFactory ):
103
+ """
104
+ Test that an authenticated user can access their detail view.
105
+ """
87
106
request = rf .get ("/fake-url/" )
88
- request .user = UserFactory ()
107
+ request .user = user
89
108
90
109
response = user_detail_view (request , username = user .username )
91
110
92
111
assert response .status_code == 200
93
112
94
113
def test_not_authenticated (self , user : User , rf : RequestFactory ):
114
+ """
115
+ Test that an unauthenticated user is redirected to the login page.
116
+ """
95
117
request = rf .get ("/fake-url/" )
96
118
request .user = AnonymousUser ()
97
119
0 commit comments