File size: 1,195 Bytes
c1d0c23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import pytest
from unittest.mock import MagicMock, patch
from tinytroupe.integrations.linkedin_audience import LinkedInAudienceAnalyzer
from tinytroupe.integrations.linkedin_api import LinkedInAPI
from tinytroupe.agent import TinyPerson

def test_linkedin_audience_analysis():
    mock_api = MagicMock(spec=LinkedInAPI)
    mock_api.get_connections.return_value = [
        {"id": "c1", "headline": "CEO", "industry": "Tech", "location": "SF", "career_level": "Senior"},
        {"id": "c2", "headline": "Dev", "industry": "Tech", "location": "NY", "career_level": "Mid"}
    ]

    analyzer = LinkedInAudienceAnalyzer(mock_api)

    # Mock TinyPersonFactory.generate_person to avoid LLM calls
    with patch("tinytroupe.factory.tiny_person_factory.TinyPersonFactory.generate_person") as mock_gen:
        def side_effect(agent_particularities=None, **kwargs):
            name = f"Persona_{mock_gen.call_count}"
            p = TinyPerson(name)
            return p
        mock_gen.side_effect = side_effect

        personas = analyzer.create_audience_personas(count=2)

        assert len(personas) == 2
        assert mock_api.get_connections.called
        assert mock_gen.call_count == 2