|
14 | 14 | from policyengine_api_simulation_client.models import ( |
15 | 15 | BudgetWindowBatchSubmitResponse, |
16 | 16 | BudgetWindowResult, |
| 17 | + SingleYearMacroOutput, |
17 | 18 | ) |
18 | 19 | from policyengine_api_simulation_client.types import Unset |
19 | 20 |
|
| 21 | +SINGLE_YEAR_MACRO_OUTPUT_KEYS = { |
| 22 | + "budget", |
| 23 | + "detailed_budget", |
| 24 | + "decile", |
| 25 | + "inequality", |
| 26 | + "poverty", |
| 27 | + "poverty_by_gender", |
| 28 | + "poverty_by_race", |
| 29 | + "intra_decile", |
| 30 | + "wealth_decile", |
| 31 | + "intra_wealth_decile", |
| 32 | + "labor_supply_response", |
| 33 | + "constituency_impact", |
| 34 | + "local_authority_impact", |
| 35 | + "congressional_district_impact", |
| 36 | + "cliff_impact", |
| 37 | +} |
| 38 | + |
20 | 39 |
|
21 | 40 | @pytest.mark.beta_only |
22 | 41 | def test_budget_window_multi_year_batch_completes( |
@@ -61,11 +80,24 @@ def test_budget_window_multi_year_batch_completes( |
61 | 80 | assert result.end_year == budget_window_years[-1] |
62 | 81 | assert result.window_size == len(budget_window_years) |
63 | 82 | assert result.years == budget_window_years |
| 83 | + result_payload = result.to_dict() |
| 84 | + assert "annualImpacts" not in result_payload |
| 85 | + assert "outputsByYear" in result_payload |
| 86 | + |
64 | 87 | outputs_by_year = result.outputs_by_year |
65 | 88 | assert not isinstance(outputs_by_year, Unset) |
66 | 89 | assert outputs_by_year.additional_keys == budget_window_years |
67 | | - assert all( |
68 | | - outputs_by_year[year].budget.budgetary_impact is not None |
69 | | - for year in budget_window_years |
70 | | - ) |
| 90 | + for year in budget_window_years: |
| 91 | + output = outputs_by_year[year] |
| 92 | + assert isinstance(output, SingleYearMacroOutput) |
| 93 | + output_payload = output.to_dict() |
| 94 | + assert SINGLE_YEAR_MACRO_OUTPUT_KEYS <= set(output_payload) |
| 95 | + assert output.budget.budgetary_impact is not None |
| 96 | + assert isinstance(output_payload["decile"], dict) |
| 97 | + assert isinstance(output_payload["inequality"], dict) |
| 98 | + assert isinstance(output_payload["poverty"], dict) |
| 99 | + assert isinstance(output_payload["poverty_by_gender"], dict) |
| 100 | + assert isinstance(output_payload["intra_decile"], dict) |
| 101 | + assert isinstance(output_payload["labor_supply_response"], dict) |
| 102 | + |
71 | 103 | assert isinstance(result.totals.budgetary_impact, int | float) |
0 commit comments