fixed percentage and mb/s view
This commit is contained in:
@@ -470,6 +470,82 @@ class TestBroadcastCallbacks:
|
||||
# Verify callback was called
|
||||
mock_callback.assert_called()
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_progress_callback_format(self, download_service):
|
||||
"""Test that progress callback receives correct data format."""
|
||||
# Set up a mock callback to capture progress updates
|
||||
progress_updates = []
|
||||
|
||||
def capture_progress(progress_data: dict):
|
||||
progress_updates.append(progress_data)
|
||||
|
||||
# Mock download to simulate progress
|
||||
async def mock_download_with_progress(*args, **kwargs):
|
||||
# Get the callback from kwargs
|
||||
callback = kwargs.get('callback')
|
||||
if callback:
|
||||
# Simulate progress updates with the expected format
|
||||
callback({
|
||||
'percent': 50.0,
|
||||
'downloaded_mb': 250.5,
|
||||
'total_mb': 501.0,
|
||||
'speed_mbps': 5.2,
|
||||
'eta_seconds': 48,
|
||||
})
|
||||
return True
|
||||
|
||||
download_service._anime_service.download = mock_download_with_progress
|
||||
|
||||
# Add an item to the queue
|
||||
await download_service.add_to_queue(
|
||||
serie_id="series-1",
|
||||
serie_name="Test Series",
|
||||
episodes=[EpisodeIdentifier(season=1, episode=1)],
|
||||
)
|
||||
|
||||
# Process the download
|
||||
item = download_service._pending_queue.popleft()
|
||||
del download_service._pending_items_by_id[item.id]
|
||||
|
||||
# Replace the progress callback with our capture function
|
||||
original_callback = download_service._create_progress_callback
|
||||
|
||||
def wrapper(item):
|
||||
callback = original_callback(item)
|
||||
|
||||
def wrapped_callback(data):
|
||||
capture_progress(data)
|
||||
callback(data)
|
||||
|
||||
return wrapped_callback
|
||||
|
||||
download_service._create_progress_callback = wrapper
|
||||
|
||||
await download_service._process_download(item)
|
||||
|
||||
# Verify progress callback was called with correct format
|
||||
assert len(progress_updates) > 0
|
||||
progress_data = progress_updates[0]
|
||||
|
||||
# Check all expected keys are present
|
||||
assert 'percent' in progress_data
|
||||
assert 'downloaded_mb' in progress_data
|
||||
assert 'total_mb' in progress_data
|
||||
assert 'speed_mbps' in progress_data
|
||||
assert 'eta_seconds' in progress_data
|
||||
|
||||
# Verify values are of correct type
|
||||
assert isinstance(progress_data['percent'], (int, float))
|
||||
assert isinstance(progress_data['downloaded_mb'], (int, float))
|
||||
assert (
|
||||
progress_data['total_mb'] is None
|
||||
or isinstance(progress_data['total_mb'], (int, float))
|
||||
)
|
||||
assert (
|
||||
progress_data['speed_mbps'] is None
|
||||
or isinstance(progress_data['speed_mbps'], (int, float))
|
||||
)
|
||||
|
||||
|
||||
class TestServiceLifecycle:
|
||||
"""Test service start and stop operations."""
|
||||
|
||||
Reference in New Issue
Block a user