44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
from unittest.mock import Mock
|
|
|
|
from fastapi import Request
|
|
|
|
from app.iptv.scheduler import StreamScheduler
|
|
|
|
|
|
class MockScheduler:
|
|
"""Base mock APScheduler instance"""
|
|
|
|
running = True
|
|
start = Mock()
|
|
shutdown = Mock()
|
|
add_job = Mock()
|
|
remove_job = Mock()
|
|
get_job = Mock(return_value=None)
|
|
|
|
def __init__(self, running=True):
|
|
self.running = running
|
|
|
|
|
|
def create_trigger_mock(triggered_ref: dict) -> callable:
|
|
"""Create a mock trigger function that updates a reference when called"""
|
|
|
|
def trigger_mock():
|
|
triggered_ref["value"] = True
|
|
|
|
return trigger_mock
|
|
|
|
|
|
async def mock_get_scheduler(
|
|
request: Request, scheduler_class=MockScheduler, running=True, **kwargs
|
|
) -> StreamScheduler:
|
|
"""Mock dependency for get_scheduler with customization options"""
|
|
scheduler = StreamScheduler()
|
|
mock_scheduler = scheduler_class(running=running)
|
|
|
|
# Apply any additional attributes/methods
|
|
for key, value in kwargs.items():
|
|
setattr(mock_scheduler, key, value)
|
|
|
|
scheduler.scheduler = mock_scheduler
|
|
return scheduler
|