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

@ -19,7 +19,7 @@ class TestChatBadgeSetModel:
def test_create_badge_set(self) -> None:
"""Test creating a new badge set."""
badge_set = ChatBadgeSet.objects.create(set_id="vip")
badge_set: ChatBadgeSet = ChatBadgeSet.objects.create(set_id="vip")
assert badge_set.set_id == "vip"
assert badge_set.added_at is not None
assert badge_set.updated_at is not None
@ -37,7 +37,7 @@ class TestChatBadgeSetModel:
ChatBadgeSet.objects.create(set_id="bits")
ChatBadgeSet.objects.create(set_id="vip")
badge_sets = list(ChatBadgeSet.objects.all())
badge_sets: list[ChatBadgeSet] = list(ChatBadgeSet.objects.all())
assert badge_sets[0].set_id == "bits"
assert badge_sets[1].set_id == "subscriber"
assert badge_sets[2].set_id == "vip"
@ -49,8 +49,8 @@ class TestChatBadgeModel:
def test_create_badge(self) -> None:
"""Test creating a new badge."""
badge_set = ChatBadgeSet.objects.create(set_id="vip")
badge = ChatBadge.objects.create(
badge_set: ChatBadgeSet = ChatBadgeSet.objects.create(set_id="vip")
badge: ChatBadge = ChatBadge.objects.create(
badge_set=badge_set,
badge_id="1",
image_url_1x="https://example.com/1x.png",
@ -72,7 +72,7 @@ class TestChatBadgeModel:
def test_unique_badge_set_and_id(self) -> None:
"""Test that badge_set and badge_id combination must be unique."""
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",
@ -96,8 +96,8 @@ class TestChatBadgeModel:
def test_different_badge_ids_same_set(self) -> None:
"""Test that different badge_ids can exist in the same set."""
badge_set = ChatBadgeSet.objects.create(set_id="bits")
badge1 = ChatBadge.objects.create(
badge_set: ChatBadgeSet = ChatBadgeSet.objects.create(set_id="bits")
badge1: ChatBadge = ChatBadge.objects.create(
badge_set=badge_set,
badge_id="1",
image_url_1x="https://example.com/1x.png",
@ -106,7 +106,7 @@ class TestChatBadgeModel:
title="Bits 1",
description="1 Bit",
)
badge2 = ChatBadge.objects.create(
badge2: ChatBadge = ChatBadge.objects.create(
badge_set=badge_set,
badge_id="100",
image_url_1x="https://example.com/1x.png",
@ -122,8 +122,8 @@ class TestChatBadgeModel:
def test_nullable_click_fields(self) -> None:
"""Test that click_action and click_url can be null."""
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",
@ -140,7 +140,7 @@ class TestChatBadgeModel:
def test_badge_cascade_delete(self) -> None:
"""Test that badges are deleted when their badge set is deleted."""
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",
@ -161,7 +161,7 @@ class TestChatBadgeSchemas:
def test_chat_badge_version_schema_valid(self) -> None:
"""Test that ChatBadgeVersionSchema validates correct data."""
data = {
data: dict[str, str] = {
"id": "1",
"image_url_1x": "https://static-cdn.jtvnw.net/badges/v1/example/1",
"image_url_2x": "https://static-cdn.jtvnw.net/badges/v1/example/2",
@ -172,14 +172,14 @@ class TestChatBadgeSchemas:
"click_url": "https://help.twitch.tv",
}
schema = ChatBadgeVersionSchema.model_validate(data)
schema: ChatBadgeVersionSchema = ChatBadgeVersionSchema.model_validate(data)
assert schema.badge_id == "1"
assert schema.title == "VIP"
assert schema.click_action == "visit_url"
def test_chat_badge_version_schema_nullable_fields(self) -> None:
"""Test that nullable fields in ChatBadgeVersionSchema work correctly."""
data = {
data: dict[str, str | None] = {
"id": "1",
"image_url_1x": "https://static-cdn.jtvnw.net/badges/v1/example/1",
"image_url_2x": "https://static-cdn.jtvnw.net/badges/v1/example/2",
@ -190,13 +190,13 @@ class TestChatBadgeSchemas:
"click_url": None,
}
schema = ChatBadgeVersionSchema.model_validate(data)
schema: ChatBadgeVersionSchema = ChatBadgeVersionSchema.model_validate(data)
assert schema.click_action is None
assert schema.click_url is None
def test_chat_badge_version_schema_missing_required(self) -> None:
"""Test that ChatBadgeVersionSchema raises error on missing required fields."""
data = {
data: dict[str, str] = {
"id": "1",
"title": "VIP",
# Missing required image URLs and description
@ -207,7 +207,7 @@ class TestChatBadgeSchemas:
def test_chat_badge_set_schema_valid(self) -> None:
"""Test that ChatBadgeSetSchema validates correct data."""
data = {
data: dict[str, str | list[dict[str, str]]] = {
"set_id": "vip",
"versions": [
{
@ -223,14 +223,14 @@ class TestChatBadgeSchemas:
],
}
schema = ChatBadgeSetSchema.model_validate(data)
schema: ChatBadgeSetSchema = ChatBadgeSetSchema.model_validate(data)
assert schema.set_id == "vip"
assert len(schema.versions) == 1
assert schema.versions[0].badge_id == "1"
def test_chat_badge_set_schema_multiple_versions(self) -> None:
"""Test that ChatBadgeSetSchema handles multiple badge versions."""
data = {
data: dict[str, str | list[dict[str, str | None]]] = {
"set_id": "bits",
"versions": [
{
@ -256,7 +256,7 @@ class TestChatBadgeSchemas:
],
}
schema = ChatBadgeSetSchema.model_validate(data)
schema: ChatBadgeSetSchema = ChatBadgeSetSchema.model_validate(data)
assert schema.set_id == "bits"
assert len(schema.versions) == 2
assert schema.versions[0].badge_id == "1"
@ -264,7 +264,7 @@ class TestChatBadgeSchemas:
def test_global_chat_badges_response_valid(self) -> None:
"""Test that GlobalChatBadgesResponse validates correct API response."""
data = {
data: dict[str, list[dict[str, str | list[dict[str, str]]]]] = {
"data": [
{
"set_id": "vip",
@ -284,20 +284,20 @@ class TestChatBadgeSchemas:
],
}
response = GlobalChatBadgesResponse.model_validate(data)
response: GlobalChatBadgesResponse = GlobalChatBadgesResponse.model_validate(data)
assert len(response.data) == 1
assert response.data[0].set_id == "vip"
def test_global_chat_badges_response_empty(self) -> None:
"""Test that GlobalChatBadgesResponse validates empty response."""
data = {"data": []}
data: dict[str, list] = {"data": []}
response = GlobalChatBadgesResponse.model_validate(data)
response: GlobalChatBadgesResponse = GlobalChatBadgesResponse.model_validate(data)
assert len(response.data) == 0
def test_chat_badge_schema_extra_forbidden(self) -> None:
"""Test that extra fields are forbidden in schemas."""
data = {
data: dict[str, str | None] = {
"id": "1",
"image_url_1x": "https://example.com/1x.png",
"image_url_2x": "https://example.com/2x.png",