diff --git a/tests/indexer/test_repository.py b/tests/indexer/test_repository.py index 6855981..a7b4123 100644 --- a/tests/indexer/test_repository.py +++ b/tests/indexer/test_repository.py @@ -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" diff --git a/tests/indexer/test_schemas.py b/tests/indexer/test_schemas.py index 09592b9..3951a48 100644 --- a/tests/indexer/test_schemas.py +++ b/tests/indexer/test_schemas.py @@ -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) diff --git a/tests/indexer/test_service.py b/tests/indexer/test_service.py index cd90438..4e3e688 100644 --- a/tests/indexer/test_service.py +++ b/tests/indexer/test_service.py @@ -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) diff --git a/tests/tv/test_service.py b/tests/tv/test_service.py index 3cac3f3..2c4f146 100644 --- a/tests/tv/test_service.py +++ b/tests/tv/test_service.py @@ -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]