110 lines
2.5 KiB
Python
110 lines
2.5 KiB
Python
from pydantic import ValidationError
|
|
|
|
from src.server.models.anime import (
|
|
AnimeSeriesResponse,
|
|
EpisodeInfo,
|
|
MissingEpisodeInfo,
|
|
SearchRequest,
|
|
SearchResult,
|
|
)
|
|
|
|
|
|
def test_episode_info_basic():
|
|
ep = EpisodeInfo(episode_number=1, title="Pilot", duration_seconds=1500)
|
|
assert ep.episode_number == 1
|
|
assert ep.title == "Pilot"
|
|
assert ep.duration_seconds == 1500
|
|
assert ep.available is True
|
|
|
|
|
|
def test_missing_episode_count():
|
|
m = MissingEpisodeInfo(from_episode=5, to_episode=7)
|
|
assert m.count == 3
|
|
|
|
|
|
def test_anime_series_response():
|
|
ep = EpisodeInfo(episode_number=1, title="Ep1")
|
|
series = AnimeSeriesResponse(
|
|
id="series-123",
|
|
title="My Anime",
|
|
episodes=[ep],
|
|
total_episodes=12,
|
|
)
|
|
|
|
assert series.id == "series-123"
|
|
assert series.episodes[0].title == "Ep1"
|
|
|
|
|
|
def test_search_request_validation():
|
|
# valid
|
|
req = SearchRequest(query="naruto", limit=5)
|
|
assert req.query == "naruto"
|
|
|
|
# invalid: empty query
|
|
try:
|
|
SearchRequest(query="", limit=5)
|
|
raised = False
|
|
except ValidationError:
|
|
raised = True
|
|
assert raised
|
|
|
|
|
|
def test_search_result_optional_fields():
|
|
res = SearchResult(id="s1", title="T1", snippet="snip", score=0.9)
|
|
assert res.score == 0.9
|
|
|
|
from pydantic import ValidationError
|
|
|
|
from src.server.models.anime import (
|
|
AnimeSeriesResponse,
|
|
EpisodeInfo,
|
|
MissingEpisodeInfo,
|
|
SearchRequest,
|
|
SearchResult,
|
|
)
|
|
|
|
|
|
def test_episode_info_basic():
|
|
ep = EpisodeInfo(episode_number=1, title="Pilot", duration_seconds=1500)
|
|
assert ep.episode_number == 1
|
|
assert ep.title == "Pilot"
|
|
assert ep.duration_seconds == 1500
|
|
assert ep.available is True
|
|
|
|
|
|
def test_missing_episode_count():
|
|
m = MissingEpisodeInfo(from_episode=5, to_episode=7)
|
|
assert m.count == 3
|
|
|
|
|
|
def test_anime_series_response():
|
|
ep = EpisodeInfo(episode_number=1, title="Ep1")
|
|
series = AnimeSeriesResponse(
|
|
id="series-123",
|
|
title="My Anime",
|
|
episodes=[ep],
|
|
total_episodes=12,
|
|
)
|
|
|
|
assert series.id == "series-123"
|
|
assert series.episodes[0].title == "Ep1"
|
|
|
|
|
|
def test_search_request_validation():
|
|
# valid
|
|
req = SearchRequest(query="naruto", limit=5)
|
|
assert req.query == "naruto"
|
|
|
|
# invalid: empty query
|
|
try:
|
|
SearchRequest(query="", limit=5)
|
|
raised = False
|
|
except ValidationError:
|
|
raised = True
|
|
assert raised
|
|
|
|
|
|
def test_search_result_optional_fields():
|
|
res = SearchResult(id="s1", title="T1", snippet="snip", score=0.9)
|
|
assert res.score == 0.9
|