File size: 1,825 Bytes
0bb49b0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

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()