mirror of
https://github.com/wahyd4/links.git
synced 2026-08-09 05:06:16 +10:00
fix(pricemon): load i18n in _alerts partial and pass alerts to include
AlertsPartialView (htmx-polled every 30s from the dashboard) returned
500 because _alerts.html used {% trans %} without {% load i18n %}.
Added the load tag so the partial renders correctly.
The dashboard's inline {% include 'pricemon/_alerts.html' %} also
relied on an undefined 'alerts' context var (DashboardView sets
'active_alerts'), so the alerts panel rendered empty even when alerts
existed. Pass alerts=active_alerts explicitly via the include.
Add regression tests covering both the dashboard render with an alert
and the alerts partial endpoint.
This commit is contained in:
+31
-1
@@ -3,7 +3,7 @@ from unittest.mock import patch
|
||||
import pytest
|
||||
from django.urls import reverse
|
||||
|
||||
from pricemon.models import PriceWatcher
|
||||
from pricemon.models import PriceAlert, PriceWatcher
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -16,6 +16,16 @@ def watcher():
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def alert(watcher):
|
||||
return PriceAlert.objects.create(
|
||||
watcher=watcher,
|
||||
old_price='100.00',
|
||||
new_price='80.00',
|
||||
drop_pct='20.00',
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
class TestPriceMonitorToggle:
|
||||
def test_dashboard_shows_disable_action_for_enabled_watcher(self, client, watcher):
|
||||
@@ -53,3 +63,23 @@ class TestPriceMonitorToggle:
|
||||
response = client.get(reverse('pricemon-toggle-enabled', args=[watcher.pk]))
|
||||
|
||||
assert response.status_code == 405
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
class TestPriceMonitorAlertsPartial:
|
||||
def test_dashboard_renders_with_active_alert(self, client, watcher, alert):
|
||||
response = client.get(reverse('pricemon-dashboard'))
|
||||
|
||||
assert response.status_code == 200
|
||||
body = response.content.decode()
|
||||
assert 'alert-{}'.format(alert.pk) in body
|
||||
assert 'Price Drop Alerts' in body
|
||||
|
||||
def test_alerts_partial_renders_i18n_tags(self, client, watcher, alert):
|
||||
response = client.get(reverse('pricemon-alerts-partial'))
|
||||
|
||||
assert response.status_code == 200
|
||||
body = response.content.decode()
|
||||
assert 'alert-{}'.format(alert.pk) in body
|
||||
assert 'View' in body and 'Dismiss' in body
|
||||
assert reverse('pricemon-dismiss-alert', args=[alert.pk]) in body
|
||||
|
||||
Reference in New Issue
Block a user