Skip to content

Commit 6568422

Browse files
committed
update tests
1 parent 3fa4648 commit 6568422

15 files changed

+384
-605
lines changed

egon_validation/rules/formal/geometry_check.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,5 +66,6 @@ def postprocess(self, row, ctx):
6666
observed=points_outside,
6767
expected=0,
6868
message=message,
69+
column=self.params.get("geometry_column", "geom"),
6970
severity=Severity.ERROR if not ok else Severity.INFO,
7071
)

egon_validation/rules/formal/referential_integrity_check.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,5 +64,6 @@ def postprocess(self, row, ctx):
6464
observed=orphaned_references,
6565
expected=0,
6666
message=message,
67+
column=foreign_col,
6768
severity=Severity.ERROR if not ok else Severity.INFO,
6869
)

egon_validation/rules/formal/srid_check.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,6 @@ def postprocess(self, row, ctx):
8787
observed=correct_srid_count,
8888
expected=total_geometries,
8989
message=message,
90+
column=self.params.get("geom", "geom"),
9091
severity=Severity.ERROR if not ok else Severity.INFO,
9192
)

egon_validation/rules/formal/value_set_check.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,5 +65,6 @@ def postprocess(self, row, ctx):
6565
observed=invalid_values,
6666
expected=0,
6767
message=message,
68+
column=self.params.get("column", "value"),
6869
severity=Severity.ERROR if not ok else Severity.INFO,
6970
)

tests/rules/custom/test_disaggregated_demand_sum.py

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
class TestDisaggregatedDemandSumValidation:
88
def test_sql_generation_default_sector(self):
99
rule = DisaggregatedDemandSumValidation(
10-
"test_rule", "test_task", "demand.egon_demandregio_zensus_electricity"
10+
rule_id="test_rule",
11+
table="demand.egon_demandregio_zensus_electricity",
12+
task="test_task",
1113
)
1214
sql = rule.sql(None)
1315

@@ -18,9 +20,9 @@ def test_sql_generation_default_sector(self):
1820

1921
def test_sql_generation_custom_sector(self):
2022
rule = DisaggregatedDemandSumValidation(
21-
"test_rule",
22-
"test_task",
23-
"demand.egon_demandregio_zensus_electricity",
23+
rule_id="test_rule",
24+
table="demand.egon_demandregio_zensus_electricity",
25+
task="test_task",
2426
sector="commercial",
2527
)
2628
sql = rule.sql(None)
@@ -29,9 +31,9 @@ def test_sql_generation_custom_sector(self):
2931

3032
def test_postprocess_within_tolerance(self):
3133
rule = DisaggregatedDemandSumValidation(
32-
"test_rule",
33-
"test_task",
34-
"demand.egon_demandregio_zensus_electricity",
34+
rule_id="test_rule",
35+
table="demand.egon_demandregio_zensus_electricity",
36+
task="test_task",
3537
tolerance=0.05,
3638
)
3739

@@ -49,13 +51,13 @@ def test_postprocess_within_tolerance(self):
4951
assert "Scenario eGon2035" in result.message
5052
assert "Rel. diff 0.0196" in result.message
5153
assert result.observed == 0.0196
52-
assert result.expected == 0.0
54+
assert result.expected == 0.05 # expected is the tolerance
5355

5456
def test_postprocess_outside_tolerance(self):
5557
rule = DisaggregatedDemandSumValidation(
56-
"test_rule",
57-
"test_task",
58-
"demand.egon_demandregio_zensus_electricity",
58+
rule_id="test_rule",
59+
table="demand.egon_demandregio_zensus_electricity",
60+
task="test_task",
5961
tolerance=0.01,
6062
)
6163

@@ -75,7 +77,9 @@ def test_postprocess_outside_tolerance(self):
7577
def test_postprocess_default_tolerance(self):
7678
# Use actual config default tolerance: DISAGGREGATED_DEMAND_TOLERANCE = 0.01
7779
rule = DisaggregatedDemandSumValidation(
78-
"test_rule", "test_task", "demand.egon_demandregio_zensus_electricity"
80+
rule_id="test_rule",
81+
table="demand.egon_demandregio_zensus_electricity",
82+
task="test_task",
7983
)
8084

8185
row = {
@@ -93,7 +97,9 @@ def test_postprocess_default_tolerance(self):
9397

9498
def test_postprocess_none_values(self):
9599
rule = DisaggregatedDemandSumValidation(
96-
"test_rule", "test_task", "demand.egon_demandregio_zensus_electricity"
100+
rule_id="test_rule",
101+
table="demand.egon_demandregio_zensus_electricity",
102+
task="test_task",
97103
)
98104

99105
row = {
@@ -112,7 +118,9 @@ def test_postprocess_none_values(self):
112118

113119
def test_postprocess_zero_original_sum(self):
114120
rule = DisaggregatedDemandSumValidation(
115-
"test_rule", "test_task", "demand.egon_demandregio_zensus_electricity"
121+
rule_id="test_rule",
122+
table="demand.egon_demandregio_zensus_electricity",
123+
task="test_task",
116124
)
117125

118126
row = {

tests/rules/formal/test_array_cardinality_check.py

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
class TestArrayCardinalityValidation:
77
def test_sql_generation_default_parameters(self):
88
rule = ArrayCardinalityValidation(
9-
"test_rule", "test_task", "grid.egon_etrago_load_timeseries"
9+
rule_id="test_rule",
10+
table="grid.egon_etrago_load_timeseries"
1011
)
1112
sql = rule.sql(None)
1213

@@ -20,9 +21,8 @@ def test_sql_generation_default_parameters(self):
2021

2122
def test_sql_generation_custom_parameters(self):
2223
rule = ArrayCardinalityValidation(
23-
"test_rule",
24-
"test_task",
25-
"demand.egon_heat_timeseries_selected_profiles",
24+
rule_id="test_rule",
25+
table="demand.egon_heat_timeseries_selected_profiles",
2626
array_column="selected_idp_profiles",
2727
expected_length=365
2828
)
@@ -34,10 +34,7 @@ def test_sql_generation_custom_parameters(self):
3434

3535
def test_postprocess_all_arrays_correct_length(self):
3636
"""Test with realistic mock data: all arrays have correct length"""
37-
rule = ArrayCardinalityValidation(
38-
"load_timeseries_validation",
39-
"data_quality",
40-
"grid.egon_etrago_load_timeseries",
37+
rule = ArrayCardinalityValidation(rule_id="load_timeseries_validation", table="grid.egon_etrago_load_timeseries", task="data_quality",
4138
array_column="p_set",
4239
expected_length=8760
4340
)
@@ -69,10 +66,7 @@ def test_postprocess_all_arrays_correct_length(self):
6966

7067
def test_postprocess_some_arrays_wrong_length(self):
7168
"""Test with realistic mock data: some arrays have wrong length"""
72-
rule = ArrayCardinalityValidation(
73-
"heat_profiles_validation",
74-
"data_quality",
75-
"demand.egon_heat_timeseries_selected_profiles",
69+
rule = ArrayCardinalityValidation(rule_id="heat_profiles_validation", table="demand.egon_heat_timeseries_selected_profiles",
7670
array_column="selected_idp_profiles",
7771
expected_length=365
7872
)
@@ -105,8 +99,7 @@ def test_postprocess_some_arrays_wrong_length(self):
10599

106100
def test_postprocess_only_wrong_length_no_nulls(self):
107101
"""Test with only wrong length arrays, no NULL arrays"""
108-
rule = ArrayCardinalityValidation(
109-
"test_rule", "test_task", "test.table", expected_length=8760
102+
rule = ArrayCardinalityValidation(rule_id="test_rule", table="test.table", expected_length=8760
110103
)
111104

112105
mock_db_row = {
@@ -129,8 +122,7 @@ def test_postprocess_only_wrong_length_no_nulls(self):
129122

130123
def test_postprocess_only_null_arrays_no_wrong_length(self):
131124
"""Test with only NULL arrays, no wrong length arrays"""
132-
rule = ArrayCardinalityValidation(
133-
"test_rule", "test_task", "test.table", expected_length=8760
125+
rule = ArrayCardinalityValidation(rule_id="test_rule", table="test.table", expected_length=8760
134126
)
135127

136128
mock_db_row = {
@@ -153,8 +145,7 @@ def test_postprocess_only_null_arrays_no_wrong_length(self):
153145

154146
def test_postprocess_none_values_handling(self):
155147
"""Test handling of None values in database result"""
156-
rule = ArrayCardinalityValidation(
157-
"test_rule", "test_task", "test.table", expected_length=8760
148+
rule = ArrayCardinalityValidation(rule_id="test_rule", table="test.table", expected_length=8760
158149
)
159150

160151
mock_db_row = {
@@ -177,8 +168,7 @@ def test_postprocess_none_values_handling(self):
177168

178169
def test_postprocess_empty_found_lengths(self):
179170
"""Test when found_lengths is empty or None"""
180-
rule = ArrayCardinalityValidation(
181-
"test_rule", "test_task", "test.table", expected_length=8760
171+
rule = ArrayCardinalityValidation(rule_id="test_rule", table="test.table", expected_length=8760
182172
)
183173

184174
mock_db_row = {
@@ -200,10 +190,7 @@ def test_postprocess_empty_found_lengths(self):
200190

201191
def test_with_mock_data_success_annual_timeseries(self):
202192
"""Test with realistic mock data: annual timeseries with 8760 hours"""
203-
rule = ArrayCardinalityValidation(
204-
"generator_timeseries_check",
205-
"timeseries_validation",
206-
"grid.egon_etrago_generator_timeseries",
193+
rule = ArrayCardinalityValidation(rule_id="generator_timeseries_check", table="grid.egon_etrago_generator_timeseries", task="timeseries_validation",
207194
array_column="p_max_pu",
208195
expected_length=8760
209196
)
@@ -232,10 +219,7 @@ def test_with_mock_data_success_annual_timeseries(self):
232219

233220
def test_with_mock_data_failure_corrupted_timeseries(self):
234221
"""Test with realistic mock data: corrupted timeseries with inconsistent lengths"""
235-
rule = ArrayCardinalityValidation(
236-
"bus_timeseries_check",
237-
"timeseries_validation",
238-
"grid.egon_etrago_bus_timeseries",
222+
rule = ArrayCardinalityValidation(rule_id="bus_timeseries_check", table="grid.egon_etrago_bus_timeseries",
239223
array_column="v_mag_pu_set",
240224
expected_length=8760
241225
)

0 commit comments

Comments
 (0)