Skip to content

Commit a5f6013

Browse files
refactor: migrate subscription tests to Playwright (16-18/19)
1 parent 3c2e1e3 commit a5f6013

File tree

2 files changed

+19
-59
lines changed

2 files changed

+19
-59
lines changed

src/webview/templates/subscriptions/package_subscription.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ <h1 class="page-title">Package Subscription</h1>
1717
</div>
1818

1919
{% else %}
20-
<div class="rounded-box column gap">
20+
<div id="{{ package_name }}" class="rounded-box column gap">
2121
<h2 class="heading">{{ package_name }}</h2>
2222
<p>Subscribe to receive notifications about security alerts suggestions that may affect this package.</p>
2323
<div class="toggler {% if is_subscribed %}toggler-on{% else %}toggler-off{% endif %}">

src/webview/tests/test_subscriptions.py

Lines changed: 18 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
189207
class 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

371331
def test_maintainer_notification_many_packages_in_suggestion(
372332
make_suggestion: Callable[..., CVEDerivationClusterProposal],

0 commit comments

Comments
 (0)