Files
MediaManager/tests/indexer/test_service.py
2025-06-08 17:51:47 +02:00

61 lines
1.9 KiB
Python

import uuid
from unittest.mock import MagicMock
import pytest
from media_manager.indexer.schemas import IndexerQueryResult, IndexerQueryResultId
from media_manager.indexer.repository import IndexerRepository
from media_manager.indexer.service import IndexerService
class DummyIndexer:
def search(self, query):
return [
IndexerQueryResult(
id=IndexerQueryResultId(uuid.uuid4()),
title=f"{query} S01 1080p",
download_url="http://example.com/1",
seeders=10,
flags=["test"],
size=123456,
)
]
@pytest.fixture
def mock_indexer_repository():
repo = MagicMock(spec=IndexerRepository)
repo.save_result.side_effect = lambda result: result
return repo
@pytest.fixture
def indexer_service(monkeypatch, mock_indexer_repository):
# Patch the global indexers list
monkeypatch.setattr("media_manager.indexer.service.indexers", [DummyIndexer()])
return IndexerService(indexer_repository=mock_indexer_repository)
def test_search_returns_results(indexer_service, mock_indexer_repository):
query = "TestShow"
results = indexer_service.search(query)
assert len(results) == 1
assert results[0].title == f"{query} S01 1080p"
mock_indexer_repository.save_result.assert_called_once()
def test_get_result_returns_result(mock_indexer_repository):
result_id = IndexerQueryResultId(uuid.uuid4())
expected_result = IndexerQueryResult(
id=result_id,
title="Test S01 1080p",
download_url="http://example.com/1",
seeders=10,
flags=["test"],
size=123456,
)
mock_indexer_repository.get_result.return_value = expected_result
service = IndexerService(indexer_repository=mock_indexer_repository)
result = service.get_result(result_id)
assert result == expected_result
mock_indexer_repository.get_result.assert_called_once_with(result_id=result_id)