Migrate download queue from JSON to SQLite database
- Created QueueRepository adapter in src/server/services/queue_repository.py - Refactored DownloadService to use repository pattern instead of JSON - Updated application startup to initialize download service from database - Updated all test fixtures to use MockQueueRepository - All 1104 tests passing
This commit is contained in:
@@ -88,9 +88,10 @@ def progress_service():
|
||||
|
||||
@pytest.fixture
|
||||
async def download_service(mock_series_app, progress_service, tmp_path):
|
||||
"""Create a DownloadService with dependencies."""
|
||||
import uuid
|
||||
persistence_path = tmp_path / f"test_queue_{uuid.uuid4()}.json"
|
||||
"""Create a DownloadService with mock repository for testing."""
|
||||
from tests.unit.test_download_service import MockQueueRepository
|
||||
|
||||
mock_repo = MockQueueRepository()
|
||||
|
||||
anime_service = AnimeService(
|
||||
series_app=mock_series_app,
|
||||
@@ -101,7 +102,7 @@ async def download_service(mock_series_app, progress_service, tmp_path):
|
||||
service = DownloadService(
|
||||
anime_service=anime_service,
|
||||
progress_service=progress_service,
|
||||
persistence_path=str(persistence_path),
|
||||
queue_repository=mock_repo,
|
||||
)
|
||||
yield service
|
||||
await service.stop()
|
||||
@@ -319,8 +320,6 @@ class TestServiceIdentifierConsistency:
|
||||
- Persisted data contains serie_id (key)
|
||||
- Data can be restored with correct identifiers
|
||||
"""
|
||||
import json
|
||||
|
||||
# Add item to queue
|
||||
await download_service.add_to_queue(
|
||||
serie_id="jujutsu-kaisen",
|
||||
@@ -330,18 +329,13 @@ class TestServiceIdentifierConsistency:
|
||||
priority=DownloadPriority.NORMAL,
|
||||
)
|
||||
|
||||
# Read persisted data
|
||||
persistence_path = download_service._persistence_path
|
||||
with open(persistence_path, "r") as f:
|
||||
data = json.load(f)
|
||||
# Verify item is in pending queue (in-memory cache synced with DB)
|
||||
pending_items = list(download_service._pending_queue)
|
||||
assert len(pending_items) == 1
|
||||
|
||||
# Verify persisted data structure
|
||||
assert "pending" in data
|
||||
assert len(data["pending"]) == 1
|
||||
|
||||
persisted_item = data["pending"][0]
|
||||
assert persisted_item["serie_id"] == "jujutsu-kaisen"
|
||||
assert persisted_item["serie_folder"] == "Jujutsu Kaisen (2020)"
|
||||
persisted_item = pending_items[0]
|
||||
assert persisted_item.serie_id == "jujutsu-kaisen"
|
||||
assert persisted_item.serie_folder == "Jujutsu Kaisen (2020)"
|
||||
|
||||
|
||||
class TestWebSocketIdentifierConsistency:
|
||||
|
||||
Reference in New Issue
Block a user