virtualaidressing / verify_fallback.py
ammar101's picture
Deploy application code and models
0bb49b0
import os
import django
from django.conf import settings
from unittest.mock import MagicMock, patch
# Setup Django environment
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
django.setup()
from fitting_system.models import BodyScan
from fitting_system.ai_modules.gemini_client import GeminiClient
from fitting_system.ai_modules.body_measurement import BodyMeasurementEstimator
def test_fallback_flagging():
print("Testing Fallback Flagging Logic...")
# 1. Test GeminiClient direct response
client = GeminiClient()
# Force unavailable to simulate failure
client.available = False
print("\n1. Testing GeminiClient.analyze_body (Available=False)...")
result = client.analyze_body(b'dummy_image_data')
if result.get('is_fallback') and result.get('error_message'):
print(f"SUCCESS: GeminiClient returned fallback flag. Error: {result['error_message']}")
else:
print(f"FAILURE: GeminiClient did not return fallback flag. Result: {result}")
# 2. Test Integration via BodyMeasurementEstimator
print("\n2. Testing BodyMeasurementEstimator.analyze_body_complete...")
estimator = BodyMeasurementEstimator()
# Mock get_gemini_client to return our disabled client
with patch('fitting_system.ai_modules.gemini_client.get_gemini_client', return_value=client):
# Create dummy image (100x100 black image)
import numpy as np
dummy_image = np.zeros((100, 100, 3), dtype=np.uint8)
analysis = estimator.analyze_body_complete(dummy_image)
if analysis.get('is_fallback'):
print("SUCCESS: Estimator propagated fallback flag.")
else:
print("FAILURE: Estimator dropped fallback flag.")
if __name__ == "__main__":
test_fallback_flagging()