From 783e111801ee3122a6b4cfda39d17960b382c969 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 22 Jul 2026 17:33:54 +0800 Subject: [PATCH] test(ai): stabilize recovery callback contract --- .../api/tests/test_ollama_failover_manager.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/apps/api/tests/test_ollama_failover_manager.py b/apps/api/tests/test_ollama_failover_manager.py index 262a80c21..914a66689 100644 --- a/apps/api/tests/test_ollama_failover_manager.py +++ b/apps/api/tests/test_ollama_failover_manager.py @@ -23,7 +23,7 @@ OllamaFailoverManager 單元測試 - P1.1c v4.0 from __future__ import annotations import asyncio -from unittest.mock import ANY, AsyncMock, MagicMock, patch +from unittest.mock import ANY, AsyncMock, MagicMock, create_autospec, patch import pytest @@ -402,7 +402,22 @@ class TestSelectProvider: gcp_b_status=HealthStatus.HEALTHY, local_status=HealthStatus.OFFLINE, ) - recovery_callback = AsyncMock() + async def metadata_callback( + provider_name: str, + *, + observation_generation: int, + observation_started_at_monotonic: float, + ) -> None: + _ = ( + provider_name, + observation_generation, + observation_started_at_monotonic, + ) + + # Bare AsyncMock signature reporting varies across runner Python patch + # versions. Autospec the production callback contract so this test + # verifies our metadata boundary instead of unittest.mock internals. + recovery_callback = create_autospec(metadata_callback) manager.set_recovery_callback(recovery_callback) audit = AsyncMock()