Skip to content

Commit 58a1d3a

Browse files
fix: restore missing test macros in e2e dbt project (#2138)
* fix: restore missing test_config_levels macro and fix uniques typo in e2e project - Add test_config_levels generic test macro that was removed from dbt-data-reliability in PR #947 but still referenced by the e2e project - Fix 'uniques' -> 'unique' (standard dbt generic test) on error_model Co-Authored-By: Itamar Hartstein <haritamar@gmail.com> * fix: revert uniques change - intentional error case for error_model The 'uniques' test (non-existent) on error_model.missing_column was intentionally creating a compilation error case, tagged as error_test. Co-Authored-By: Itamar Hartstein <haritamar@gmail.com> * fix: define mandatory_params as none in test_config_levels macro The macro calls elementary.get_anomalies_test_configuration() with mandatory_params but it was never defined in scope. In the original dbt-data-reliability code, this was a parameter on the calling test macros. Since test_config_levels doesn't need mandatory param validation, define it locally as none. Co-Authored-By: Itamar Hartstein <haritamar@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Itamar Hartstein <haritamar@gmail.com>
1 parent 96a4170 commit 58a1d3a

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
{% test config_levels(model, expected_config, timestamp_column, time_bucket, where_expression, anomaly_sensitivity, anomaly_direction, days_back, backfill_days, seasonality, min_training_set_size) %}
2+
{%- if execute and elementary.is_test_command() %}
3+
{%- set unexpected_config = [] %}
4+
{%- set model_relation = dbt.load_relation(model) %}
5+
{%- set mandatory_params = none %}
6+
7+
{% set configuration_dict, metric_properties_dict =
8+
elementary.get_anomalies_test_configuration(model_relation,
9+
mandatory_params,
10+
timestamp_column,
11+
where_expression,
12+
anomaly_sensitivity,
13+
anomaly_direction,
14+
min_training_set_size,
15+
time_bucket,
16+
days_back,
17+
backfill_days,
18+
seasonality) %}
19+
20+
{%- set configs_to_test = [('timestamp_column', metric_properties_dict.timestamp_column),
21+
('where_expression', metric_properties_dict.where_expression),
22+
('time_bucket', configuration_dict.time_bucket),
23+
('anomaly_sensitivity', configuration_dict.anomaly_sensitivity),
24+
('anomaly_direction', configuration_dict.anomaly_direction),
25+
('min_training_set_size', configuration_dict.min_training_set_size),
26+
('days_back', configuration_dict.days_back),
27+
('backfill_days', configuration_dict.backfill_days),
28+
('seasonality', configuration_dict.seasonality)
29+
] %}
30+
31+
{%- for config in configs_to_test %}
32+
{%- set config_name, config_value = config %}
33+
{%- set config_check = compare_configs(config_name, config_value, expected_config) %}
34+
{%- if config_check %}
35+
{%- do unexpected_config.append(config_check) -%}
36+
{%- endif %}
37+
{%- endfor %}
38+
39+
{%- if unexpected_config | length > 0 %}
40+
{%- do exceptions.raise_compiler_error('Failure config_levels: ' ~ unexpected_config) -%}
41+
{%- else %}
42+
{#- test must run an sql query -#}
43+
{{ elementary.no_results_query() }}
44+
{%- endif %}
45+
{%- endif %}
46+
{%- endtest %}
47+
48+
{% macro compare_configs(config_name, config, expected_config) %}
49+
{%- if config != expected_config.get(config_name) %}
50+
{%- set unexpected_message = ('For {0} - got config: {1}, expected config: {2}').format(config_name, config, expected_config.get(config_name) ) %}
51+
{{ return(unexpected_message) }}
52+
{%- endif %}
53+
{{ return(none) }}
54+
{% endmacro %}

0 commit comments

Comments
 (0)