Skip to content

Commit dc583bc

Browse files
committed
Applied Pull Requests Suggestions
1 parent 8cc7c1f commit dc583bc

3 files changed

Lines changed: 83 additions & 92 deletions

File tree

tests/fixtures/services/tracer_analysis_service.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
import pytest
2+
import json
3+
from policyengine_api.services.tracer_analysis_service import (
4+
TracerAnalysisService,
5+
)
6+
from unittest.mock import patch
7+
8+
19
valid_tracer_output = [
210
" snap<2027, (default)> = [6769.799]",
311
" snap<2027-01, (default)> = [561.117]",
@@ -22,3 +30,55 @@
2230
spliced_valid_tracer_output_leaf_variable = valid_tracer_output[8:]
2331

2432
empty_tracer = []
33+
34+
35+
@pytest.fixture
36+
def sample_tracer_data():
37+
return valid_tracer_output
38+
39+
40+
@pytest.fixture
41+
def sample_expected_segment():
42+
return spliced_valid_tracer_output_nested_variable
43+
44+
45+
@pytest.fixture
46+
def mock_get_tracer(sample_tracer_data):
47+
with patch.object(
48+
TracerAnalysisService, "get_tracer", return_value=sample_tracer_data
49+
) as mock:
50+
yield mock
51+
52+
53+
@pytest.fixture
54+
def mock_parse_tracer_output(sample_expected_segment):
55+
with patch.object(
56+
TracerAnalysisService,
57+
"_parse_tracer_output",
58+
return_value=sample_expected_segment,
59+
) as mock:
60+
yield mock
61+
62+
63+
@pytest.fixture
64+
def mock_get_existing_analysis():
65+
with patch.object(
66+
TracerAnalysisService,
67+
"get_existing_analysis",
68+
return_value="Existing static analysis",
69+
) as mock:
70+
yield mock
71+
72+
73+
@pytest.fixture
74+
def mock_trigger_ai_analysis():
75+
def dummy_generator():
76+
yield "stream chunk 1"
77+
yield "stream chunk 2"
78+
79+
with patch.object(
80+
TracerAnalysisService,
81+
"trigger_ai_analysis",
82+
return_value=dummy_generator(),
83+
) as mock:
84+
yield mock

tests/fixtures/services/tracer_analysis_service_fixture.py

Lines changed: 0 additions & 77 deletions
This file was deleted.

tests/unit/services/test_execute_analysis.py

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,28 @@
55
)
66
from werkzeug.exceptions import NotFound
77

8-
from tests.fixtures.services.tracer_analysis_service_fixture import (
8+
from tests.fixtures.services.tracer_analysis_service import (
99
sample_tracer_data,
1010
sample_expected_segment,
11-
get_tracer,
12-
get_existing_analysis,
13-
parse_tracer_output,
14-
trigger_ai_analysis,
11+
mock_get_tracer,
12+
mock_get_existing_analysis,
13+
mock_parse_tracer_output,
14+
mock_trigger_ai_analysis,
1515
)
1616

1717
service = TracerAnalysisService()
18+
country_id = "us"
19+
household_id = "71424"
20+
policy_id = "2"
21+
target_variable = "takes_up_snap_if_eligible"
1822

1923

2024
class TestExecuteAnalysis:
2125
def test_execute_analysis_static(
22-
self, get_tracer, parse_tracer_output, get_existing_analysis
26+
self,
27+
mock_get_tracer,
28+
mock_parse_tracer_output,
29+
mock_get_existing_analysis,
2330
):
2431
"""
2532
GIVEN a valid tracer data and an expected parsed segment (included as fixture),
@@ -29,33 +36,34 @@ def test_execute_analysis_static(
2936
"""
3037

3138
analysis, analysis_type = service.execute_analysis(
32-
"us", "71424", "2", "market_income"
39+
country_id, household_id, policy_id, target_variable
3340
)
3441

3542
assert analysis == "Existing static analysis"
3643
assert analysis_type == "static"
3744

3845
def test_execute_analysis_streaming(
3946
self,
40-
get_tracer,
41-
parse_tracer_output,
42-
get_existing_analysis,
43-
trigger_ai_analysis,
47+
mock_get_tracer,
48+
mock_parse_tracer_output,
49+
mock_get_existing_analysis,
50+
mock_trigger_ai_analysis,
4451
):
4552
"""
4653
GIVEN a valid tracer data and an expected parsed segment,
4754
AND get_existing_analysis returns None,
48-
WHEN execute_analysis is called ",
55+
WHEN execute_analysis is called,
4956
THEN trigger_ai_analysis is called and returns a generator with the "streaming" flag.
5057
"""
5158

5259
# When existing analysis value is None
53-
get_existing_analysis.return_value = None
60+
mock_get_existing_analysis.return_value = None
5461

5562
analysis, analysis_type = service.execute_analysis(
56-
"us", "71424", "2", "market_income"
63+
country_id, household_id, policy_id, target_variable
5764
)
5865

66+
expected_streaming_output = ["stream chunk 1", "stream chunk 2"]
5967
streaming_output = list(analysis)
60-
assert streaming_output == ["stream chunk 1", "stream chunk 2"]
68+
assert streaming_output == expected_streaming_output
6169
assert analysis_type == "streaming"

0 commit comments

Comments
 (0)