diff --git a/templates/pricemon/_alerts.html b/templates/pricemon/_alerts.html
index 7d9efdb..4b07962 100644
--- a/templates/pricemon/_alerts.html
+++ b/templates/pricemon/_alerts.html
@@ -1,3 +1,4 @@
+{% load i18n %}
{% if alerts %}
diff --git a/templates/pricemon/dashboard.html b/templates/pricemon/dashboard.html
index 633585c..1977ff2 100644
--- a/templates/pricemon/dashboard.html
+++ b/templates/pricemon/dashboard.html
@@ -45,7 +45,7 @@
hx-get="{% url 'pricemon-alerts-partial' %}"
hx-trigger="every 30s"
hx-swap="innerHTML">
- {% include 'pricemon/_alerts.html' %}
+ {% include 'pricemon/_alerts.html' with alerts=active_alerts %}
{% endif %}
diff --git a/tests/test_pricemon.py b/tests/test_pricemon.py
index ee2bad1..74c8e10 100644
--- a/tests/test_pricemon.py
+++ b/tests/test_pricemon.py
@@ -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