This commit is contained in:
parent
4d53a46850
commit
415dd12fd9
16 changed files with 843 additions and 379 deletions
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue