import uuid from datetime import datetime from unittest.mock import MagicMock import pytest from src.jobs import JobStore, SyncJob from src.services.sync_status_service import SyncStatusService @pytest.fixture def mock_job_store(): """Fixture to create a mock JobStore.""" job_store = MagicMock(spec=JobStore) job_id = uuid.uuid4() job = SyncJob(id=str(job_id), status="completed", created_at=datetime.utcnow()) job_store.get_all_jobs.return_value = [job] job_store.get_job.return_value = job return job_store def test_get_sync_jobs_all(mock_job_store): """Test retrieving all sync jobs.""" service = SyncStatusService(job_store=mock_job_store) jobs = service.get_sync_jobs() assert len(jobs) == 1 mock_job_store.get_all_jobs.assert_called_once() def test_get_sync_job_by_id(mock_job_store): """Test retrieving a single sync job by ID.""" service = SyncStatusService(job_store=mock_job_store) job_id = mock_job_store.get_job.return_value.id # The get_sync_jobs implementation filters all jobs, so we need to mock get_all_jobs mock_job_store.get_all_jobs.return_value = [mock_job_store.get_job.return_value] jobs = service.get_sync_jobs(job_id=job_id) assert len(jobs) == 1 assert jobs[0].id == str(job_id)