@@ -186,6 +186,24 @@ def test_user_does_not_receive_notification_when_auto_subscribe_disabled(
186186 expect (badge ).to_have_text ("1" )
187187
188188
189+ def test_package_subscription (
190+ live_server : LiveServer ,
191+ as_staff : Page ,
192+ drv : NixDerivation ,
193+ ) -> None :
194+ """Test that the package subscription page displays correctly for valid packages"""
195+ url = reverse (
196+ "webview:subscriptions:package" , kwargs = {"package_name" : drv .attribute }
197+ )
198+ as_staff .goto (live_server .url + url )
199+ package = as_staff .locator (f"#{ drv .attribute } " )
200+ subscribe = package .get_by_role ("button" , name = "Subscribe" )
201+ subscribe .click ()
202+ unsubscribe = package .get_by_role ("button" , name = "Unsubscribe" )
203+ unsubscribe .click ()
204+ subscribe .click ()
205+
206+
189207class SubscriptionTests (TestCase ):
190208 def setUp (self ) -> None :
191209 # Create test user with social account
@@ -292,22 +310,6 @@ def setUp(self) -> None:
292310 parent_evaluation = self .evaluation ,
293311 )
294312
295- def test_package_subscription_page_shows_valid_package (self ) -> None :
296- """Test that the package subscription page displays correctly for valid packages"""
297- url = reverse (
298- "webview:subscriptions:package" , kwargs = {"package_name" : "firefox" }
299- )
300- response = self .client .get (url )
301-
302- self .assertEqual (response .status_code , 200 )
303- self .assertTemplateUsed (response , "subscriptions/package_subscription.html" )
304-
305- # Check context
306- self .assertEqual (response .context ["package_name" ], "firefox" )
307- self .assertTrue (response .context ["package_exists" ])
308- self .assertFalse (response .context ["is_subscribed" ])
309- self .assertIsNone (response .context ["error_message" ])
310-
311313 def test_package_subscription_page_shows_invalid_package (self ) -> None :
312314 """Test that the package subscription page shows error for invalid packages"""
313315 url = reverse (
@@ -325,48 +327,6 @@ def test_package_subscription_page_shows_invalid_package(self) -> None:
325327 self .assertIsNotNone (response .context ["error_message" ])
326328 self .assertIn ("does not exist" , response .context ["error_message" ])
327329
328- def test_package_subscription_page_subscribe_action (self ) -> None :
329- """Test subscribing to a package via the package subscription page"""
330- url = reverse (
331- "webview:subscriptions:package" , kwargs = {"package_name" : "firefox" }
332- )
333- response = self .client .post (url , {"action" : "subscribe" })
334-
335- # Should redirect back to the same page
336- self .assertEqual (response .status_code , 302 )
337- self .assertIn ("firefox" , response .url )
338-
339- # Follow redirect and check subscription status
340- response = self .client .get (response .url )
341- self .assertEqual (response .status_code , 200 )
342- self .assertTrue (response .context ["is_subscribed" ])
343-
344- def test_package_subscription_page_unsubscribe_action (self ) -> None :
345- """Test unsubscribing from a package via the package subscription page"""
346- # First subscribe to the package
347- self .user .profile .package_subscriptions .append ("firefox" )
348- self .user .profile .save (update_fields = ["package_subscriptions" ])
349-
350- url = reverse (
351- "webview:subscriptions:package" , kwargs = {"package_name" : "firefox" }
352- )
353-
354- # Verify initially subscribed
355- response = self .client .get (url )
356- self .assertTrue (response .context ["is_subscribed" ])
357-
358- # Unsubscribe
359- response = self .client .post (url , {"action" : "unsubscribe" })
360-
361- # Should redirect back to the same page
362- self .assertEqual (response .status_code , 302 )
363- self .assertIn ("firefox" , response .url )
364-
365- # Follow redirect and check subscription status
366- response = self .client .get (response .url )
367- self .assertEqual (response .status_code , 200 )
368- self .assertFalse (response .context ["is_subscribed" ])
369-
370330
371331def test_maintainer_notification_many_packages_in_suggestion (
372332 make_suggestion : Callable [..., CVEDerivationClusterProposal ],
0 commit comments