Skip to content

Commit cecb3a6

Browse files
committed
test fixes
1 parent b6aac49 commit cecb3a6

1 file changed

Lines changed: 54 additions & 8 deletions

File tree

integration_tests/tests/test_dbt_artifacts/test_microbatch_compiled_code.py

Lines changed: 54 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1+
from contextlib import contextmanager
2+
from pathlib import Path
3+
14
import pytest
25

36
from dbt_project import DbtProject
47

58

6-
@pytest.mark.skip_targets(["vertica"])
7-
@pytest.mark.skip_for_dbt_fusion
8-
def test_microbatch_run_results_has_compiled_code(test_id: str, dbt_project: DbtProject):
9-
dbt_project.dbt_runner.vars["disable_run_results"] = False
10-
11-
model_sql = """
9+
def _microbatch_model_sql() -> str:
10+
return """
1211
{% set model_config = {
1312
"materialized": "incremental",
1413
"incremental_strategy": "microbatch",
@@ -28,15 +27,19 @@ def test_microbatch_run_results_has_compiled_code(test_id: str, dbt_project: Dbt
2827
{{ config(**model_config) }}
2928
3029
select
31-
cast({{ elementary.escape_reserved_keywords("one") }} as int) as order_id,
30+
1 as order_id,
3231
1 as customer_id,
3332
42 as amount,
3433
{{ dbt.current_timestamp() }} as order_date
3534
from {{ ref('one') }}
3635
"""
3736

37+
38+
def _run_microbatch_model_and_get_latest_success_result(
39+
dbt_project: DbtProject, test_id: str
40+
):
3841
with dbt_project.create_temp_model_for_existing_table(
39-
test_id, raw_code=model_sql
42+
test_id, raw_code=_microbatch_model_sql()
4043
) as model_path:
4144
dbt_project.dbt_runner.run(select=str(model_path))
4245

@@ -47,7 +50,50 @@ def test_microbatch_run_results_has_compiled_code(test_id: str, dbt_project: Dbt
4750
order_by="generated_at desc",
4851
limit=1,
4952
)
53+
return run_results
54+
55+
56+
@contextmanager
57+
def _without_microbatch_override_macro(dbt_project: DbtProject):
58+
macro_path = (
59+
dbt_project.project_dir_path / "macros" / "microbatch.sql"
60+
)
61+
backup_path = macro_path.with_suffix(".sql.bak")
62+
if not macro_path.exists():
63+
raise FileNotFoundError(f"Expected macro file at {macro_path}")
64+
65+
macro_path.rename(backup_path)
66+
try:
67+
yield
68+
finally:
69+
if backup_path.exists():
70+
backup_path.rename(macro_path)
71+
72+
73+
@pytest.mark.skip_targets(["vertica"])
74+
@pytest.mark.skip_for_dbt_fusion
75+
def test_microbatch_run_results_has_compiled_code(test_id: str, dbt_project: DbtProject):
76+
dbt_project.dbt_runner.vars["disable_run_results"] = False
77+
78+
run_results = _run_microbatch_model_and_get_latest_success_result(dbt_project, test_id)
5079
assert run_results, "Expected a successful run result row for microbatch model"
5180
assert run_results[0]["compiled_code"], (
5281
"Expected compiled_code to be populated for successful microbatch model run result"
5382
)
83+
84+
85+
@pytest.mark.skip_targets(["vertica"])
86+
@pytest.mark.skip_for_dbt_fusion
87+
def test_microbatch_run_results_without_override_has_empty_compiled_code(
88+
test_id: str, dbt_project: DbtProject
89+
):
90+
dbt_project.dbt_runner.vars["disable_run_results"] = False
91+
92+
with _without_microbatch_override_macro(dbt_project):
93+
run_results = _run_microbatch_model_and_get_latest_success_result(
94+
dbt_project, test_id
95+
)
96+
assert run_results, "Expected a successful run result row for microbatch model"
97+
assert not run_results[0]["compiled_code"], (
98+
"Expected compiled_code to stay empty when microbatch override macro is absent"
99+
)

0 commit comments

Comments
 (0)