Improve sitemaps
All checks were successful
Deploy to Server / deploy (push) Successful in 9s

This commit is contained in:
Joakim Hellsén 2026-02-27 06:02:30 +01:00
commit 415dd12fd9
Signed by: Joakim Hellsén
SSH key fingerprint: SHA256:/9h/CsExpFp+PRhsfA0xznFx2CGfTT5R/kpuFfUgEQk
16 changed files with 843 additions and 379 deletions

View file

@ -12,6 +12,7 @@ from twitch.models import ChatBadgeSet
if TYPE_CHECKING:
from django.test import Client
from django.test.client import _MonkeyPatchedWSGIResponse
@pytest.mark.django_db
@ -20,25 +21,25 @@ class TestBadgeListView:
def test_badge_list_empty(self, client: Client) -> None:
"""Test badge list view with no badges."""
response = client.get(reverse("twitch:badge_list"))
response: _MonkeyPatchedWSGIResponse = client.get(reverse("twitch:badge_list"))
assert response.status_code == 200
assert "No badge sets found" in response.content.decode()
def test_badge_list_displays_sets(self, client: Client) -> None:
"""Test that badge sets are displayed."""
badge_set1 = ChatBadgeSet.objects.create(set_id="vip")
badge_set2 = ChatBadgeSet.objects.create(set_id="subscriber")
badge_set1: ChatBadgeSet = ChatBadgeSet.objects.create(set_id="vip")
badge_set2: ChatBadgeSet = ChatBadgeSet.objects.create(set_id="subscriber")
response = client.get(reverse("twitch:badge_list"))
response: _MonkeyPatchedWSGIResponse = client.get(reverse("twitch:badge_list"))
assert response.status_code == 200
content = response.content.decode()
content: str = response.content.decode()
assert badge_set1.set_id in content
assert badge_set2.set_id in content
def test_badge_list_displays_badge_count(self, client: Client) -> None:
"""Test that badge version count is displayed."""
badge_set = ChatBadgeSet.objects.create(set_id="bits")
badge_set: ChatBadgeSet = ChatBadgeSet.objects.create(set_id="bits")
ChatBadge.objects.create(
badge_set=badge_set,
badge_id="1",
@ -58,9 +59,9 @@ class TestBadgeListView:
description="100 Bits",
)
response = client.get(reverse("twitch:badge_list"))
response: _MonkeyPatchedWSGIResponse = client.get(reverse("twitch:badge_list"))
assert response.status_code == 200
content = response.content.decode()
content: str = response.content.decode()
# Should show version count (the template uses "versions" not "version")
assert "2" in content
@ -73,13 +74,15 @@ class TestBadgeSetDetailView:
def test_badge_set_detail_not_found(self, client: Client) -> None:
"""Test 404 when badge set doesn't exist."""
response = client.get(reverse("twitch:badge_set_detail", kwargs={"set_id": "nonexistent"}))
response: _MonkeyPatchedWSGIResponse = client.get(
reverse("twitch:badge_set_detail", kwargs={"set_id": "nonexistent"}),
)
assert response.status_code == 404
def test_badge_set_detail_displays_badges(self, client: Client) -> None:
"""Test that badge versions are displayed."""
badge_set = ChatBadgeSet.objects.create(set_id="moderator")
badge = ChatBadge.objects.create(
badge_set: ChatBadgeSet = ChatBadgeSet.objects.create(set_id="moderator")
badge: ChatBadge = ChatBadge.objects.create(
badge_set=badge_set,
badge_id="1",
image_url_1x="https://example.com/1x.png",
@ -91,9 +94,11 @@ class TestBadgeSetDetailView:
click_url="https://help.twitch.tv",
)
response = client.get(reverse("twitch:badge_set_detail", kwargs={"set_id": "moderator"}))
response: _MonkeyPatchedWSGIResponse = client.get(
reverse("twitch:badge_set_detail", kwargs={"set_id": "moderator"}),
)
assert response.status_code == 200
content = response.content.decode()
content: str = response.content.decode()
assert badge.title in content
assert badge.description in content
@ -102,7 +107,7 @@ class TestBadgeSetDetailView:
def test_badge_set_detail_displays_metadata(self, client: Client) -> None:
"""Test that badge set metadata is displayed."""
badge_set = ChatBadgeSet.objects.create(set_id="vip")
badge_set: ChatBadgeSet = ChatBadgeSet.objects.create(set_id="vip")
ChatBadge.objects.create(
badge_set=badge_set,
badge_id="1",
@ -113,16 +118,16 @@ class TestBadgeSetDetailView:
description="VIP Badge",
)
response = client.get(reverse("twitch:badge_set_detail", kwargs={"set_id": "vip"}))
response: _MonkeyPatchedWSGIResponse = client.get(reverse("twitch:badge_set_detail", kwargs={"set_id": "vip"}))
assert response.status_code == 200
content = response.content.decode()
content: str = response.content.decode()
assert "vip" in content
assert "1" in content
def test_badge_set_detail_json_data(self, client: Client) -> None:
"""Test that JSON data is displayed."""
badge_set = ChatBadgeSet.objects.create(set_id="test_set")
badge_set: ChatBadgeSet = ChatBadgeSet.objects.create(set_id="test_set")
ChatBadge.objects.create(
badge_set=badge_set,
badge_id="1",
@ -133,9 +138,11 @@ class TestBadgeSetDetailView:
description="Test Badge",
)
response = client.get(reverse("twitch:badge_set_detail", kwargs={"set_id": "test_set"}))
response: _MonkeyPatchedWSGIResponse = client.get(
reverse("twitch:badge_set_detail", kwargs={"set_id": "test_set"}),
)
assert response.status_code == 200
content = response.content.decode()
content: str = response.content.decode()
assert "test_set" in content
@ -149,16 +156,16 @@ class TestBadgeSearch:
ChatBadgeSet.objects.create(set_id="vip")
ChatBadgeSet.objects.create(set_id="subscriber")
response = client.get(reverse("twitch:search"), {"q": "vip"})
response: _MonkeyPatchedWSGIResponse = client.get(reverse("twitch:search"), {"q": "vip"})
assert response.status_code == 200
content = response.content.decode()
content: str = response.content.decode()
assert "Badge Sets" in content
assert "vip" in content
def test_search_finds_badges_by_title(self, client: Client) -> None:
"""Test that search finds badges by title."""
badge_set = ChatBadgeSet.objects.create(set_id="test")
badge_set: ChatBadgeSet = ChatBadgeSet.objects.create(set_id="test")
ChatBadge.objects.create(
badge_set=badge_set,
badge_id="1",
@ -169,16 +176,16 @@ class TestBadgeSearch:
description="Test description",
)
response = client.get(reverse("twitch:search"), {"q": "Moderator"})
response: _MonkeyPatchedWSGIResponse = client.get(reverse("twitch:search"), {"q": "Moderator"})
assert response.status_code == 200
content = response.content.decode()
content: str = response.content.decode()
assert "Chat Badges" in content
assert "Moderator Badge" in content
def test_search_finds_badges_by_description(self, client: Client) -> None:
"""Test that search finds badges by description."""
badge_set = ChatBadgeSet.objects.create(set_id="test")
badge_set: ChatBadgeSet = ChatBadgeSet.objects.create(set_id="test")
ChatBadge.objects.create(
badge_set=badge_set,
badge_id="1",
@ -189,8 +196,8 @@ class TestBadgeSearch:
description="Unique description text",
)
response = client.get(reverse("twitch:search"), {"q": "Unique description"})
response: _MonkeyPatchedWSGIResponse = client.get(reverse("twitch:search"), {"q": "Unique description"})
assert response.status_code == 200
content = response.content.decode()
content: str = response.content.decode()
assert "Chat Badges" in content or "Test Badge" in content