mirror of
https://github.com/maxdorninger/MediaManager.git
synced 2026-02-20 07:59:50 -05:00
modify tests to use new indexer query result schema
This commit is contained in:
@@ -36,10 +36,12 @@ def test_save_and_get_result(repo, dummy_db):
|
||||
result = IndexerQueryResult(
|
||||
id=result_id,
|
||||
title="Test Title",
|
||||
download_url="http://example.com",
|
||||
download_url="https://example.com/test1",
|
||||
seeders=5,
|
||||
flags=["flag1"],
|
||||
size=1234,
|
||||
usenet=False,
|
||||
age=1,
|
||||
)
|
||||
saved = repo.save_result(result)
|
||||
assert saved == result
|
||||
@@ -53,10 +55,12 @@ def test_save_result_calls_db_methods(repo, dummy_db):
|
||||
result = IndexerQueryResult(
|
||||
id=IndexerQueryResultId(uuid.uuid4()),
|
||||
title="Another Title",
|
||||
download_url="http://example.com/2",
|
||||
download_url="https://example.com/test2",
|
||||
seeders=2,
|
||||
flags=[],
|
||||
size=5678,
|
||||
usenet=False,
|
||||
age=1,
|
||||
)
|
||||
repo.save_result(result)
|
||||
assert dummy_db.added[0].title == "Another Title"
|
||||
|
||||
@@ -5,31 +5,31 @@ from media_manager.torrent.models import Quality
|
||||
def test_quality_computed_field():
|
||||
assert (
|
||||
IndexerQueryResult(
|
||||
title="Show S01 4K", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01 4K", download_url="https://example.com/1", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).quality
|
||||
== Quality.uhd
|
||||
)
|
||||
assert (
|
||||
IndexerQueryResult(
|
||||
title="Show S01 1080p", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01 1080p", download_url="https://example.com/2", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).quality
|
||||
== Quality.fullhd
|
||||
)
|
||||
assert (
|
||||
IndexerQueryResult(
|
||||
title="Show S01 720p", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01 720p", download_url="https://example.com/3", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).quality
|
||||
== Quality.hd
|
||||
)
|
||||
assert (
|
||||
IndexerQueryResult(
|
||||
title="Show S01 480p", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01 480p", download_url="https://example.com/4", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).quality
|
||||
== Quality.sd
|
||||
)
|
||||
assert (
|
||||
IndexerQueryResult(
|
||||
title="Show S01", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01", download_url="https://example.com/5", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).quality
|
||||
== Quality.unknown
|
||||
)
|
||||
@@ -39,52 +39,52 @@ def test_quality_computed_field_edge_cases():
|
||||
# Case-insensitive
|
||||
assert (
|
||||
IndexerQueryResult(
|
||||
title="Show S01 4k", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01 4k", download_url="https://example.com/6", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).quality
|
||||
== Quality.uhd
|
||||
)
|
||||
assert (
|
||||
IndexerQueryResult(
|
||||
title="Show S01 1080P", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01 1080P", download_url="https://example.com/7", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).quality
|
||||
== Quality.fullhd
|
||||
)
|
||||
assert (
|
||||
IndexerQueryResult(
|
||||
title="Show S01 720P", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01 720P", download_url="https://example.com/8", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).quality
|
||||
== Quality.hd
|
||||
)
|
||||
assert (
|
||||
IndexerQueryResult(
|
||||
title="Show S01 480P", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01 480P", download_url="https://example.com/9", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).quality
|
||||
== Quality.sd
|
||||
)
|
||||
# Multiple quality tags, prefer highest
|
||||
assert (
|
||||
IndexerQueryResult(
|
||||
title="Show S01 4K 1080p 720p", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01 4K 1080p 720p", download_url="https://example.com/10", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).quality
|
||||
== Quality.uhd
|
||||
)
|
||||
assert (
|
||||
IndexerQueryResult(
|
||||
title="Show S01 1080p 720p", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01 1080p 720p", download_url="https://example.com/11", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).quality
|
||||
== Quality.fullhd
|
||||
)
|
||||
# No quality tag
|
||||
assert (
|
||||
IndexerQueryResult(
|
||||
title="Show S01", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01", download_url="https://example.com/12", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).quality
|
||||
== Quality.unknown
|
||||
)
|
||||
# Quality tag in the middle
|
||||
assert (
|
||||
IndexerQueryResult(
|
||||
title="4K Show S01", download_url="", seeders=1, flags=[], size=1
|
||||
title="4K Show S01", download_url="https://example.com/13", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).quality
|
||||
== Quality.uhd
|
||||
)
|
||||
@@ -93,16 +93,16 @@ def test_quality_computed_field_edge_cases():
|
||||
def test_season_computed_field():
|
||||
# Single season
|
||||
assert IndexerQueryResult(
|
||||
title="Show S01", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01", download_url="https://example.com/14", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).season == [1]
|
||||
# Range of seasons
|
||||
assert IndexerQueryResult(
|
||||
title="Show S01 S03", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01 S03", download_url="https://example.com/15", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).season == [1, 2, 3]
|
||||
# No season
|
||||
assert (
|
||||
IndexerQueryResult(
|
||||
title="Show", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show", download_url="https://example.com/16", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).season
|
||||
== []
|
||||
)
|
||||
@@ -112,46 +112,46 @@ def test_season_computed_field_edge_cases():
|
||||
# Multiple seasons, unordered
|
||||
assert (
|
||||
IndexerQueryResult(
|
||||
title="Show S03 S01", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S03 S01", download_url="https://example.com/17", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).season
|
||||
== []
|
||||
)
|
||||
# Season with leading zeros
|
||||
assert IndexerQueryResult(
|
||||
title="Show S01 S03", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01 S03", download_url="https://example.com/18", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).season == [1, 2, 3]
|
||||
assert IndexerQueryResult(
|
||||
title="Show S01 S01", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01 S01", download_url="https://example.com/19", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).season == [1]
|
||||
# No season at all
|
||||
assert (
|
||||
IndexerQueryResult(
|
||||
title="Show", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show", download_url="https://example.com/20", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).season
|
||||
== []
|
||||
)
|
||||
# Season in lower/upper case
|
||||
assert IndexerQueryResult(
|
||||
title="Show s02", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show s02", download_url="https://example.com/21", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).season == [2]
|
||||
assert IndexerQueryResult(
|
||||
title="Show S02", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S02", download_url="https://example.com/22", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).season == [2]
|
||||
# Season with extra text
|
||||
assert IndexerQueryResult(
|
||||
title="Show S01 Complete", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01 Complete", download_url="https://example.com/23", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
).season == [1]
|
||||
|
||||
|
||||
def test_gt_and_lt_methods():
|
||||
a = IndexerQueryResult(
|
||||
title="Show S01 1080p", download_url="", seeders=5, flags=[], size=1
|
||||
title="Show S01 1080p", download_url="https://example.com/24", seeders=5, flags=[], size=1, usenet=False, age=1
|
||||
)
|
||||
b = IndexerQueryResult(
|
||||
title="Show S01 720p", download_url="", seeders=10, flags=[], size=1
|
||||
title="Show S01 720p", download_url="https://example.com/25", seeders=10, flags=[], size=1, usenet=False, age=1
|
||||
)
|
||||
c = IndexerQueryResult(
|
||||
title="Show S01 1080p", download_url="", seeders=2, flags=[], size=1
|
||||
title="Show S01 1080p", download_url="https://example.com/26", seeders=2, flags=[], size=1, usenet=False, age=1
|
||||
)
|
||||
# a (fullhd) > b (hd)
|
||||
assert a > b
|
||||
@@ -161,7 +161,7 @@ def test_gt_and_lt_methods():
|
||||
assert a > c
|
||||
# If quality is equal, but seeders are equal, neither is greater
|
||||
d = IndexerQueryResult(
|
||||
title="Show S01 1080p", download_url="", seeders=5, flags=[], size=1
|
||||
title="Show S01 1080p", download_url="https://example.com/27", seeders=5, flags=[], size=1, usenet=False, age=1
|
||||
)
|
||||
assert not (a < d)
|
||||
assert not (a > d)
|
||||
@@ -170,40 +170,40 @@ def test_gt_and_lt_methods():
|
||||
def test_gt_and_lt_methods_edge_cases():
|
||||
# Different qualities
|
||||
a = IndexerQueryResult(
|
||||
title="Show S01 4K", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01 4K", download_url="https://example.com/28", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
)
|
||||
b = IndexerQueryResult(
|
||||
title="Show S01 1080p", download_url="", seeders=100, flags=[], size=1
|
||||
title="Show S01 1080p", download_url="https://example.com/29", seeders=100, flags=[], size=1, usenet=False, age=1
|
||||
)
|
||||
assert a > b
|
||||
assert not (b > a)
|
||||
# Same quality, different seeders
|
||||
c = IndexerQueryResult(
|
||||
title="Show S01 4K", download_url="", seeders=2, flags=[], size=1
|
||||
title="Show S01 4K", download_url="https://example.com/30", seeders=2, flags=[], size=1, usenet=False, age=1
|
||||
)
|
||||
assert a < c
|
||||
assert c > a
|
||||
# Same quality and seeders
|
||||
d = IndexerQueryResult(
|
||||
title="Show S01 4K", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01 4K", download_url="https://example.com/31", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
)
|
||||
assert not (a < d)
|
||||
assert not (a > d)
|
||||
# Unknown quality, should compare by seeders
|
||||
e = IndexerQueryResult(
|
||||
title="Show S01", download_url="", seeders=5, flags=[], size=1
|
||||
title="Show S01", download_url="https://example.com/32", seeders=5, flags=[], size=1, usenet=False, age=1
|
||||
)
|
||||
f = IndexerQueryResult(
|
||||
title="Show S01", download_url="", seeders=10, flags=[], size=1
|
||||
title="Show S01", download_url="https://example.com/33", seeders=10, flags=[], size=1, usenet=False, age=1
|
||||
)
|
||||
assert e < f
|
||||
assert f > e
|
||||
# Mixed known and unknown quality
|
||||
g = IndexerQueryResult(
|
||||
title="Show S01 720p", download_url="", seeders=1, flags=[], size=1
|
||||
title="Show S01 720p", download_url="https://example.com/34", seeders=1, flags=[], size=1, usenet=False, age=1
|
||||
)
|
||||
h = IndexerQueryResult(
|
||||
title="Show S01", download_url="", seeders=100, flags=[], size=1
|
||||
title="Show S01", download_url="https://example.com/35", seeders=100, flags=[], size=1, usenet=False, age=1
|
||||
)
|
||||
assert g > h
|
||||
assert not (h > g)
|
||||
|
||||
@@ -8,15 +8,17 @@ from media_manager.indexer.service import IndexerService
|
||||
|
||||
|
||||
class DummyIndexer:
|
||||
def search(self, query):
|
||||
def search(self, query, is_tv=True):
|
||||
return [
|
||||
IndexerQueryResult(
|
||||
id=IndexerQueryResultId(uuid.uuid4()),
|
||||
title=f"{query} S01 1080p",
|
||||
download_url="http://example.com/1",
|
||||
download_url="https://example.com/torrent1",
|
||||
seeders=10,
|
||||
flags=["test"],
|
||||
size=123456,
|
||||
usenet=False,
|
||||
age=1,
|
||||
)
|
||||
]
|
||||
|
||||
@@ -37,7 +39,7 @@ def indexer_service(monkeypatch, mock_indexer_repository):
|
||||
|
||||
def test_search_returns_results(indexer_service, mock_indexer_repository):
|
||||
query = "TestShow"
|
||||
results = indexer_service.search(query)
|
||||
results = indexer_service.search(query, is_tv=True)
|
||||
assert len(results) == 1
|
||||
assert results[0].title == f"{query} S01 1080p"
|
||||
mock_indexer_repository.save_result.assert_called_once()
|
||||
@@ -48,10 +50,12 @@ def test_get_result_returns_result(mock_indexer_repository):
|
||||
expected_result = IndexerQueryResult(
|
||||
id=result_id,
|
||||
title="Test S01 1080p",
|
||||
download_url="http://example.com/1",
|
||||
download_url="https://example.com/torrent2",
|
||||
seeders=10,
|
||||
flags=["test"],
|
||||
size=123456,
|
||||
usenet=False,
|
||||
age=1,
|
||||
)
|
||||
mock_indexer_repository.get_result.return_value = expected_result
|
||||
service = IndexerService(indexer_repository=mock_indexer_repository)
|
||||
|
||||
@@ -414,42 +414,52 @@ def test_get_all_available_torrents_for_a_season_no_override(
|
||||
torrent1 = IndexerQueryResult(
|
||||
id=IndexerQueryResultId(uuid.uuid4()),
|
||||
title="Test Show 1080p S01",
|
||||
download_url="url1",
|
||||
download_url="https://example.com/torrent1",
|
||||
seeders=10,
|
||||
flags=[],
|
||||
size=100,
|
||||
usenet=False,
|
||||
age=1,
|
||||
)
|
||||
torrent2 = IndexerQueryResult(
|
||||
id=IndexerQueryResultId(uuid.uuid4()),
|
||||
title="Test Show 720p S01",
|
||||
download_url="url2",
|
||||
download_url="https://example.com/torrent2",
|
||||
seeders=5,
|
||||
flags=[],
|
||||
size=100,
|
||||
usenet=False,
|
||||
age=1,
|
||||
)
|
||||
torrent3 = IndexerQueryResult(
|
||||
id=IndexerQueryResultId(uuid.uuid4()),
|
||||
title="Test Show 720p S01",
|
||||
download_url="url3",
|
||||
download_url="https://example.com/torrent3",
|
||||
seeders=20,
|
||||
flags=[],
|
||||
size=100,
|
||||
usenet=False,
|
||||
age=1,
|
||||
)
|
||||
torrent4 = IndexerQueryResult(
|
||||
id=IndexerQueryResultId(uuid.uuid4()),
|
||||
title="Test Show S01E02",
|
||||
download_url="url4",
|
||||
download_url="https://example.com/torrent4",
|
||||
seeders=5,
|
||||
flags=[],
|
||||
size=100,
|
||||
usenet=False,
|
||||
age=1,
|
||||
) # Episode
|
||||
torrent5 = IndexerQueryResult(
|
||||
id=IndexerQueryResultId(uuid.uuid4()),
|
||||
title="Test Show S02",
|
||||
download_url="url5",
|
||||
download_url="https://example.com/torrent5",
|
||||
seeders=10,
|
||||
flags=[],
|
||||
size=100,
|
||||
usenet=False,
|
||||
age=1,
|
||||
) # Different season
|
||||
|
||||
mock_indexer_service.search.return_value = [
|
||||
@@ -466,7 +476,8 @@ def test_get_all_available_torrents_for_a_season_no_override(
|
||||
|
||||
mock_tv_repository.get_show_by_id.assert_called_once_with(show_id=show_id)
|
||||
mock_indexer_service.search.assert_called_once_with(
|
||||
query=f"{show_name} s{str(season_number).zfill(2)}"
|
||||
query=f"{show_name} s{str(season_number).zfill(2)}",
|
||||
is_tv=True
|
||||
)
|
||||
assert len(results) == 3
|
||||
assert torrent1 in results
|
||||
@@ -499,11 +510,12 @@ def test_get_all_available_torrents_for_a_season_with_override(
|
||||
torrent1 = IndexerQueryResult(
|
||||
id=IndexerQueryResultId(uuid.uuid4()),
|
||||
title="Custom Query S01E01",
|
||||
download_url="url1",
|
||||
download_url="https://example.com/torrent1",
|
||||
seeders=10,
|
||||
flags=[],
|
||||
size=100,
|
||||
# Remove 'season' argument if not supported by IndexerQueryResult
|
||||
usenet=False,
|
||||
age=1,
|
||||
)
|
||||
mock_indexer_service.search.return_value = [torrent1]
|
||||
|
||||
@@ -513,7 +525,7 @@ def test_get_all_available_torrents_for_a_season_with_override(
|
||||
search_query_override=override_query,
|
||||
)
|
||||
|
||||
mock_indexer_service.search.assert_called_once_with(query=override_query)
|
||||
mock_indexer_service.search.assert_called_once_with(query=override_query,is_tv=True)
|
||||
assert results == [torrent1]
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user