Refactor code structure for improved readability and maintainability
This commit is contained in:
@@ -20,7 +20,9 @@ class TestSchedulerService:
|
||||
@pytest.fixture
|
||||
def scheduler_service(self, mock_db_session_factory):
|
||||
"""Create a scheduler service instance for testing."""
|
||||
return SchedulerService(mock_db_session_factory)
|
||||
from unittest.mock import MagicMock
|
||||
mock_player_service = MagicMock()
|
||||
return SchedulerService(mock_db_session_factory, mock_player_service)
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_start_scheduler(self, scheduler_service) -> None:
|
||||
@@ -31,20 +33,18 @@ class TestSchedulerService:
|
||||
):
|
||||
await scheduler_service.start()
|
||||
|
||||
# Verify job was added
|
||||
mock_add_job.assert_called_once_with(
|
||||
scheduler_service._daily_credit_recharge,
|
||||
"cron",
|
||||
hour=0,
|
||||
minute=0,
|
||||
id="daily_credit_recharge",
|
||||
name="Daily Credit Recharge",
|
||||
replace_existing=True,
|
||||
)
|
||||
|
||||
# Verify scheduler was started
|
||||
# Verify scheduler start was called
|
||||
mock_start.assert_called_once()
|
||||
|
||||
# Verify jobs were added (2 calls: initialize_system_tasks and scheduler_maintenance)
|
||||
assert mock_add_job.call_count == 2
|
||||
|
||||
# Check that the jobs are the expected ones
|
||||
calls = mock_add_job.call_args_list
|
||||
job_ids = [call[1]["id"] for call in calls]
|
||||
assert "initialize_system_tasks" in job_ids
|
||||
assert "scheduler_maintenance" in job_ids
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_stop_scheduler(self, scheduler_service) -> None:
|
||||
"""Test stopping the scheduler service."""
|
||||
@@ -52,36 +52,3 @@ class TestSchedulerService:
|
||||
await scheduler_service.stop()
|
||||
mock_shutdown.assert_called_once()
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_daily_credit_recharge_success(self, scheduler_service) -> None:
|
||||
"""Test successful daily credit recharge task."""
|
||||
mock_stats = {
|
||||
"total_users": 10,
|
||||
"recharged_users": 8,
|
||||
"skipped_users": 2,
|
||||
"total_credits_added": 500,
|
||||
}
|
||||
|
||||
with patch.object(
|
||||
scheduler_service.credit_service,
|
||||
"recharge_all_users_credits",
|
||||
) as mock_recharge:
|
||||
mock_recharge.return_value = mock_stats
|
||||
|
||||
await scheduler_service._daily_credit_recharge()
|
||||
|
||||
mock_recharge.assert_called_once()
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_daily_credit_recharge_failure(self, scheduler_service) -> None:
|
||||
"""Test daily credit recharge task with failure."""
|
||||
with patch.object(
|
||||
scheduler_service.credit_service,
|
||||
"recharge_all_users_credits",
|
||||
) as mock_recharge:
|
||||
mock_recharge.side_effect = Exception("Database error")
|
||||
|
||||
# Should not raise exception, just log it
|
||||
await scheduler_service._daily_credit_recharge()
|
||||
|
||||
mock_recharge.assert_called_once()
|
||||
|
||||
Reference in New Issue
Block a user