@@ -60,14 +60,30 @@ def test_cleanup_view_get(self, factory, admin_user, eventlog_admin):
6060 assert b"Clean up Events" in response .content
6161 assert b"Days to keep events" in response .content
6262
63+ def test_cleanup_view_post_shows_confirmation (self , client , admin_user , baker ):
64+ # Create some test events
65+ now = timezone .now ()
66+ baker .make (EventLog , _quantity = 3 , received_at = now - datetime .timedelta (days = 10 ))
67+ baker .make (EventLog , _quantity = 2 , received_at = now - datetime .timedelta (days = 2 ))
68+
69+ client .login (username = "admin" , password = "adminpass" )
70+ response = client .post (
71+ reverse ("admin:django_github_app_eventlog_cleanup" ),
72+ {"days_to_keep" : "5" },
73+ )
74+
75+ assert response .status_code == 200
76+ assert b"You are about to delete 3 events" in response .content
77+ assert b"Yes, I" in response .content and b"m sure" in response .content
78+
6379 @patch ("django_github_app.models.EventLog.objects.cleanup_events" )
64- def test_cleanup_view_post (self , mock_cleanup , client , admin_user ):
80+ def test_cleanup_view_confirm_deletion (self , mock_cleanup , client , admin_user ):
6581 mock_cleanup .return_value = (5 , {"django_github_app.EventLog" : 5 })
6682
6783 client .login (username = "admin" , password = "adminpass" )
6884 response = client .post (
6985 reverse ("admin:django_github_app_eventlog_cleanup" ),
70- {"days_to_keep" : "3" },
86+ {"post" : "yes" , " days_to_keep" : "3" },
7187 )
7288
7389 assert response .status_code == 302
@@ -77,7 +93,45 @@ def test_cleanup_view_post(self, mock_cleanup, client, admin_user):
7793 # Check success message
7894 messages = list (get_messages (response .wsgi_request ))
7995 assert len (messages ) == 1
80- assert "Successfully deleted 5 event(s)" in str (messages [0 ])
96+ assert "Successfully deleted 5 events older than 3 days" in str (messages [0 ])
97+
98+ @patch ("django_github_app.models.EventLog.objects.cleanup_events" )
99+ def test_cleanup_view_confirm_deletion_singular_day (
100+ self , mock_cleanup , client , admin_user
101+ ):
102+ mock_cleanup .return_value = (2 , {"django_github_app.EventLog" : 2 })
103+
104+ client .login (username = "admin" , password = "adminpass" )
105+ response = client .post (
106+ reverse ("admin:django_github_app_eventlog_cleanup" ),
107+ {"post" : "yes" , "days_to_keep" : "1" },
108+ )
109+
110+ assert response .status_code == 302
111+
112+ # Check success message uses singular "day" and plural "events"
113+ messages = list (get_messages (response .wsgi_request ))
114+ assert len (messages ) == 1
115+ assert "Successfully deleted 2 events older than 1 day" in str (messages [0 ])
116+
117+ @patch ("django_github_app.models.EventLog.objects.cleanup_events" )
118+ def test_cleanup_view_confirm_deletion_zero_events (
119+ self , mock_cleanup , client , admin_user
120+ ):
121+ mock_cleanup .return_value = (0 , {})
122+
123+ client .login (username = "admin" , password = "adminpass" )
124+ response = client .post (
125+ reverse ("admin:django_github_app_eventlog_cleanup" ),
126+ {"post" : "yes" , "days_to_keep" : "7" },
127+ )
128+
129+ assert response .status_code == 302
130+
131+ # Check success message uses plural "events" for zero
132+ messages = list (get_messages (response .wsgi_request ))
133+ assert len (messages ) == 1
134+ assert "Successfully deleted 0 events older than 7 days" in str (messages [0 ])
81135
82136 def test_cleanup_view_integration (self , client , admin_user , baker ):
83137 now = timezone .now ()
@@ -102,11 +156,19 @@ def test_cleanup_view_integration(self, client, admin_user, baker):
102156 response = client .get (reverse ("admin:django_github_app_eventlog_cleanup" ))
103157 assert response .status_code == 200
104158
105- # Test POST request
159+ # Test POST request - Step 1: Show confirmation
106160 response = client .post (
107161 reverse ("admin:django_github_app_eventlog_cleanup" ),
108162 {"days_to_keep" : "5" },
109163 )
164+ assert response .status_code == 200
165+ assert b"You are about to delete 1 event" in response .content
166+
167+ # Test POST request - Step 2: Confirm deletion
168+ response = client .post (
169+ reverse ("admin:django_github_app_eventlog_cleanup" ),
170+ {"post" : "yes" , "days_to_keep" : "5" },
171+ )
110172 assert response .status_code == 302
111173
112174 # Check that old event was deleted and recent event remains
@@ -116,4 +178,4 @@ def test_cleanup_view_integration(self, client, admin_user, baker):
116178 # Check success message
117179 messages = list (get_messages (response .wsgi_request ))
118180 assert len (messages ) == 1
119- assert "Successfully deleted 1 event(s) " in str (messages [0 ])
181+ assert "Successfully deleted 1 event older than 5 days " in str (messages [0 ])
0 commit comments