Skip to content

Commit a0984e0

Browse files
committed
added run result tests
1 parent b0af8d5 commit a0984e0

1 file changed

Lines changed: 75 additions & 41 deletions

File tree

integration_tests/tests/test_dbt_artifacts/test_groups.py

Lines changed: 75 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,49 @@ def _normalize_empty(val):
4545
return val if val not in (None, "") else None
4646

4747

48+
def assert_group_name_in_run_results_view(
49+
dbt_project, view_name, object_name, group_name
50+
):
51+
"""Assert that the view_run_results table has exactly one row for model_name and its group_name matches."""
52+
view_run_results = dbt_project.read_table(
53+
view_name, where=f"name = '{object_name}'", raise_if_empty=True
54+
)
55+
56+
assert (
57+
len(view_run_results) == 1
58+
), f"Expected 1 view run result, got {len(view_run_results)}"
59+
view_run_result_row = view_run_results[0]
60+
assert (
61+
view_run_result_row["group_name"] == group_name
62+
), f"Expected group_name '{group_name}', got '{view_run_result_row['group_name']}'"
63+
64+
65+
def assert_group_name_in_run_results(dbt_project, model_name, group_name):
66+
assert_group_name_in_run_results_view(
67+
dbt_project, "dbt_run_results", model_name, group_name
68+
)
69+
70+
71+
def assert_group_name_in_model_run_results(dbt_project, model_name, group_name):
72+
assert_group_name_in_run_results_view(
73+
dbt_project, "model_run_results", model_name, group_name
74+
)
75+
76+
77+
def assert_group_row_in_db_groups(dbt_project, group_name, owner_name, owner_email):
78+
"""Assert that the group exists in dbt_groups and owner info matches."""
79+
group_row = _get_group_from_table(dbt_project, group_name)
80+
assert (
81+
group_row is not None
82+
), f"Group {group_name} not found in dbt_groups artifact table."
83+
assert _normalize_empty(group_row.get("owner_name")) == _normalize_empty(
84+
owner_name
85+
), f"Expected owner name '{owner_name}', got '{group_row.get('owner_name')}'"
86+
assert _normalize_empty(group_row.get("owner_email")) == _normalize_empty(
87+
owner_email
88+
), f"Expected owner email '{owner_email}', got '{group_row.get('owner_email')}'"
89+
90+
4891
def test_model_and_groups(dbt_project: DbtProject, tmp_path):
4992
"""
5093
Test that a model assigned to a group inherits the group attribute in the dbt_models artifact table.
@@ -93,6 +136,7 @@ def test_model_and_groups(dbt_project: DbtProject, tmp_path):
93136
dbt_model_path.write_text(model_sql)
94137
try:
95138
dbt_project.dbt_runner.vars["disable_dbt_artifacts_autoupload"] = False
139+
dbt_project.dbt_runner.vars["disable_run_results"] = False
96140
dbt_project.dbt_runner.run(select=model_name)
97141
dbt_project.assert_table_exists("dbt_models")
98142

@@ -105,17 +149,11 @@ def test_model_and_groups(dbt_project: DbtProject, tmp_path):
105149
model_row["group_name"] == group_name
106150
), f"Expected group_name {group_name}, got {model_row['group_name']}"
107151

108-
# Assert group exists in dbt_groups table
109-
group_row = _get_group_from_table(dbt_project, group_name)
110-
assert (
111-
group_row is not None
112-
), f"Group {group_name} not found in dbt_groups artifact table."
113-
assert _normalize_empty(group_row.get("owner_name")) == _normalize_empty(
114-
OWNER_NAME
115-
), f"Expected owner name '{OWNER_NAME}', got '{group_row.get('owner_name')}'"
116-
assert _normalize_empty(group_row.get("owner_email")) == _normalize_empty(
117-
OWNER_EMAIL
118-
), f"Expected owner email '{OWNER_EMAIL}', got '{group_row.get('owner_email')}'"
152+
assert_group_row_in_db_groups(
153+
dbt_project, group_name, OWNER_NAME, OWNER_EMAIL
154+
)
155+
assert_group_name_in_run_results(dbt_project, model_name, group_name)
156+
assert_group_name_in_model_run_results(dbt_project, model_name, group_name)
119157

120158
finally:
121159
if dbt_model_path.exists():
@@ -188,40 +226,23 @@ def test_two_groups(dbt_project: DbtProject, tmp_path):
188226
dbt_model_path_2.write_text(model_sql)
189227
try:
190228
dbt_project.dbt_runner.vars["disable_dbt_artifacts_autoupload"] = False
229+
dbt_project.dbt_runner.vars["disable_run_results"] = False
191230
dbt_project.dbt_runner.run(select=f"{model_name_1} {model_name_2}")
192231
dbt_project.assert_table_exists("dbt_models")
193232

194233
# Check both models and their groups/owners
195-
for model_name, group_name, owner_name, owner_email in [
196-
(model_name_1, group_name_1, None, owner_email_1),
197-
(model_name_2, group_name_2, owner_name_2, None),
198-
]:
199-
models = dbt_project.read_table(
200-
"dbt_models", where=f"name = '{model_name}'", raise_if_empty=True
201-
)
202-
assert (
203-
len(models) == 1
204-
), f"Expected 1 model for {model_name}, got {len(models)}"
205-
model_row = models[0]
206-
assert (
207-
model_row["group_name"] == group_name
208-
), f"Expected group_name {group_name}, got {model_row['group_name']} for model {model_name}"
209-
210-
# Assert group exists in dbt_groups table and owner info is correct
211-
group_row = _get_group_from_table(dbt_project, group_name)
212-
assert (
213-
group_row is not None
214-
), f"Group {group_name} not found in dbt_groups artifact table."
215-
assert _normalize_empty(
216-
group_row.get("owner_name")
217-
) == _normalize_empty(
218-
owner_name
219-
), f"Expected owner name '{owner_name}', got '{group_row.get('owner_name')}'"
220-
assert _normalize_empty(
221-
group_row.get("owner_email")
222-
) == _normalize_empty(
223-
owner_email
224-
), f"Expected owner email '{owner_email}', got '{group_row.get('owner_email')}'"
234+
assert_group_row_in_db_groups(
235+
dbt_project, group_name_1, None, owner_email_1
236+
)
237+
assert_group_row_in_db_groups(dbt_project, group_name_2, owner_name_2, None)
238+
assert_group_name_in_run_results(dbt_project, model_name_1, group_name_1)
239+
assert_group_name_in_run_results(dbt_project, model_name_2, group_name_2)
240+
assert_group_name_in_model_run_results(
241+
dbt_project, model_name_1, group_name_1
242+
)
243+
assert_group_name_in_model_run_results(
244+
dbt_project, model_name_2, group_name_2
245+
)
225246

226247
finally:
227248
if dbt_model_path_1.exists():
@@ -407,6 +428,7 @@ def test_seed_group_attribute(dbt_project: DbtProject, tmp_path):
407428
dbt_seed_path.write_text(seed_csv)
408429
# Run dbt seed
409430
dbt_project.dbt_runner.vars["disable_dbt_artifacts_autoupload"] = False
431+
dbt_project.dbt_runner.vars["disable_run_results"] = False
410432
dbt_project.dbt_runner.seed(select=seed_name)
411433
dbt_project.assert_table_exists("dbt_seeds")
412434
seeds = dbt_project.read_table(
@@ -418,6 +440,11 @@ def test_seed_group_attribute(dbt_project: DbtProject, tmp_path):
418440
seed_row["group_name"] == group_name
419441
), f"Expected group_name {group_name}, got {seed_row['group_name']}"
420442

443+
assert_group_name_in_run_results(dbt_project, seed_name, group_name)
444+
assert_group_name_in_run_results_view(
445+
dbt_project, "seed_run_results", seed_name, group_name
446+
)
447+
421448

422449
def test_snapshot_group_attribute(dbt_project: DbtProject, tmp_path):
423450
"""
@@ -478,8 +505,10 @@ def test_snapshot_group_attribute(dbt_project: DbtProject, tmp_path):
478505
dbt_snapshot_path.write_text(snapshot_sql)
479506
# Run dbt snapshot (runs all snapshots, as selecting is not supported by the runner)
480507
dbt_project.dbt_runner.vars["disable_dbt_artifacts_autoupload"] = False
508+
dbt_project.dbt_runner.vars["disable_run_results"] = False
481509
dbt_project.dbt_runner.snapshot()
482510
dbt_project.assert_table_exists("dbt_snapshots")
511+
483512
snapshots = dbt_project.read_table(
484513
"dbt_snapshots", where=f"name = '{snapshot_name}'", raise_if_empty=False
485514
)
@@ -491,3 +520,8 @@ def test_snapshot_group_attribute(dbt_project: DbtProject, tmp_path):
491520
assert (
492521
snapshot_row["group_name"] == group_name
493522
), f"Expected group_name {group_name}, got {snapshot_row['group_name']}"
523+
524+
assert_group_name_in_run_results(dbt_project, snapshot_name, group_name)
525+
assert_group_name_in_run_results_view(
526+
dbt_project, "snapshot_run_results", snapshot_name, group_name
527+
)

0 commit comments

Comments
 (0)