Files

97 lines
2.9 KiB
Python

from unittest.mock import MagicMock
from core.extension import ModelResolverExtension
def test_extension_initializes_progress_trackers_and_route_state():
extension = ModelResolverExtension()
assert extension.routes_setup is False
assert extension.analysis_progress.default_message == "Analyzing..."
assert extension.loaded_progress.default_message == "Loading loaded models..."
assert extension.search_tracker.default_message == "Searching..."
assert extension.hash_tracker.default_message == "Preparing hash calculation..."
assert (
extension.metadata_builder_progress.default_message
== "Building local metadata..."
)
assert extension.search_result_timestamps == {}
def test_extension_progress_updates_delegate_to_trackers():
extension = ModelResolverExtension()
extension.analysis_progress = MagicMock()
extension.metadata_builder_progress = MagicMock()
extension.loaded_progress = MagicMock()
extension._update_analysis_progress("analysis-1", {"stage": "matching"})
extension._update_metadata_build_progress("build-1", {"percent": 40})
extension._update_loaded_progress(
"loaded-1",
"indexing",
"Indexing models",
percent=50,
current=2,
total=4,
source="local",
)
extension.analysis_progress.update_from_payload.assert_called_once_with(
"analysis-1", {"stage": "matching"}
)
extension.metadata_builder_progress.update_from_payload.assert_called_once_with(
"build-1", {"percent": 40}
)
extension.loaded_progress.update_from_payload.assert_called_once_with(
"loaded-1",
{
"stage": "indexing",
"message": "Indexing models",
"percent": 50,
"status": "running",
"current": 2,
"total": 4,
"source": "local",
},
)
def test_extension_loaded_progress_ignores_missing_job_id():
extension = ModelResolverExtension()
extension.loaded_progress = MagicMock()
extension._update_loaded_progress(None, "starting", "Preparing")
extension.loaded_progress.update_from_payload.assert_not_called()
def test_extension_workflow_progress_maps_payload_and_defaults():
extension = ModelResolverExtension()
extension._update_loaded_progress = MagicMock()
extension._update_workflow_analysis_progress(
"loaded-1",
10,
lambda start, end, current, total: start + (end - start) * current / total,
{
"stage": "matching",
"message": "Matching models",
"current": 5,
"total": 10,
"percent": 99,
"found": 3,
},
start_percent=20,
end_percent=80,
)
extension._update_loaded_progress.assert_called_once_with(
"loaded-1",
"matching",
"Matching models",
percent=50.0,
current=5,
total=10,
found=3,
)