File size: 2,585 Bytes
e23cd5e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
da232a0
e23cd5e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
da232a0
e23cd5e
 
 
 
 
 
 
 
 
 
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
52
53
54
55
56
57
58
59
import pytest
from unittest.mock import patch, MagicMock
import os

import sys
import os

# Ensure the current directory is in the path
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))

from app import extract_persona_parameters, generate_personas

def test_extract_persona_parameters_fallback():
    # If the LLM call fails or returns empty, the fallback should return
    with patch('tinytroupe.openai_utils.client') as mock_client:
        mock_instance = MagicMock()
        mock_instance.send_message.return_value = None
        mock_client.return_value = mock_instance
        
        result = extract_persona_parameters("Test Business", "Test Customer")
        assert "age" in result
        assert result["age"] == 30

def test_extract_persona_parameters_success():
    with patch('tinytroupe.openai_utils.client') as mock_client:
        mock_instance = MagicMock()
        mock_instance.send_message.return_value = {
            "content": '{"age": 25, "gender": "Female", "occupation": "Engineer", "city": "NYC", "country": "USA", "custom_values": "Innovation", "custom_life_attitude": "Positive", "life_story": "A story", "interests_hobbies": "Coding", "attribute_count": 350}'
        }
        mock_client.return_value = mock_instance
        
        result = extract_persona_parameters("Tech Startup", "Young professionals")
        assert result["age"] == 25
        assert result["gender"] == "Female"
        assert result["city"] == "NYC"

@patch('gradio_client.Client') # Mocking gradio_client Client
def test_generate_personas(mock_client_class):
    mock_client_instance = MagicMock()
    mock_client_instance.predict.return_value = "Generated persona profile text"
    mock_client_class.return_value = mock_client_instance
    
    with patch('app.extract_persona_parameters') as mock_extract:
        mock_extract.return_value = {
            "age": 25, "gender": "Female", "occupation": "Engineer", 
            "city": "NYC", "country": "USA", "custom_values": "Innovation", 
            "custom_life_attitude": "Positive", "life_story": "A story", 
            "interests_hobbies": "Coding", "attribute_count": 350
        }
        
        # We need an API key to pass the check
        result = generate_personas("Tech Startup", "Young professionals", 1, blablador_api_key="TEST_KEY")
        
        assert isinstance(result, list)
        assert len(result) == 1
        assert "parameters_used" in result[0]
        assert "persona_profile" in result[0]
        assert result[0]["persona_profile"] == "Generated persona profile text"