From dcd5e61c9c140537b06232b463fc5be0715d77ef Mon Sep 17 00:00:00 2001 From: Mike Alfare Date: Thu, 29 Aug 2024 12:37:31 -0400 Subject: [PATCH 1/2] add test cases for generic tests config --- .../functional/generic_test_tests/__init__.py | 0 tests/functional/generic_test_tests/_files.py | 90 +++++++++++++++++++ .../functional/generic_test_tests/_models.py | 0 .../functional/generic_test_tests/_schemas.py | 0 .../generic_test_tests/test_generic_tests.py | 65 ++++++++++++++ 5 files changed, 155 insertions(+) create mode 100644 tests/functional/generic_test_tests/__init__.py create mode 100644 tests/functional/generic_test_tests/_files.py create mode 100644 tests/functional/generic_test_tests/_models.py create mode 100644 tests/functional/generic_test_tests/_schemas.py create mode 100644 tests/functional/generic_test_tests/test_generic_tests.py diff --git a/tests/functional/generic_test_tests/__init__.py b/tests/functional/generic_test_tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/functional/generic_test_tests/_files.py b/tests/functional/generic_test_tests/_files.py new file mode 100644 index 000000000..fd88cba5d --- /dev/null +++ b/tests/functional/generic_test_tests/_files.py @@ -0,0 +1,90 @@ +SCHEMA__CONTROL = """ +version: 2 +models: + - name: colors + columns: + - name: color + data_tests: + - not_null +""" + + +SCHEMA__EXPLICIT_WAREHOUSE = """ +version: 2 +models: + - name: colors + columns: + - name: color + data_tests: + - not_null: + config: + snowflake_warehouse: DBT_TESTING +""" + + +SCHEMA__NOT_NULL = """ +version: 2 +models: + - name: facts + columns: + - name: value + data_tests: + - not_null: + config: + snowflake_warehouse: DBT_TESTING_ALT +""" + + +SCHEMA__RELATIONSHIPS = """ +version: 2 +models: + - name: facts + columns: + - name: color + data_tests: + - relationships: + to: ref('my_colors') + field: color + config: + snowflake_warehouse: DBT_TESTING_ALT +""" + + +SCHEMA__ACCEPTED_VALUES = """ +version: 2 +models: + - name: colors + columns: + - name: color + data_tests: + - accepted_values: + values: ['blue', 'red', 'green'] + config: + snowflake_warehouse: DBT_TESTING_ALT +""" + + +SEED__COLORS = """ +color +blue +green +red +yellow +""".strip() + + +# record 10 is missing a value +# record 7 has a color that's not on COLORS +SEED__FACTS = """ +id,color,value +1,blue,10 +2,red,20 +3,green,30 +4,yellow,40 +5,blue,50 +6,red,60 +7,orange,70 +8,green,80 +9,yellow,90 +10,blue, +""".strip() diff --git a/tests/functional/generic_test_tests/_models.py b/tests/functional/generic_test_tests/_models.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/functional/generic_test_tests/_schemas.py b/tests/functional/generic_test_tests/_schemas.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/functional/generic_test_tests/test_generic_tests.py b/tests/functional/generic_test_tests/test_generic_tests.py new file mode 100644 index 000000000..02af7fa06 --- /dev/null +++ b/tests/functional/generic_test_tests/test_generic_tests.py @@ -0,0 +1,65 @@ +import pytest + +from dbt.tests.util import run_dbt, run_dbt_and_capture + +from tests.functional.generic_test_tests import _files + + +class TestWarehouseConfig: + + @pytest.fixture(scope="class") + def seeds(self): + return { + "colors.csv": _files.SEED__COLORS, + "facts.csv": _files.SEED__FACTS, + } + + @pytest.fixture(scope="class", autouse=True) + def setup(self, project): + run_dbt(["seed"]) + run_dbt(["run"]) + yield + + +class TestWarehouseConfigControl(TestWarehouseConfig): + + @pytest.fixture(scope="class") + def models(self): + return {"schema.yml": _files.SCHEMA__CONTROL} + + def test_expected_warehouse(self, project): + results, logs = run_dbt_and_capture(["test"]) + assert len(results) == 1 + + +class TestWarehouseConfigExplicitWarehouse(TestWarehouseConfig): + + @pytest.fixture(scope="class") + def models(self): + return {"schema.yml": _files.SCHEMA__EXPLICIT_WAREHOUSE} + + def test_expected_warehouse(self, project): + _, logs = run_dbt_and_capture(["test"]) + assert f"USE WAREHOUSE DBT_TESTING;" in logs + + +class TestWarehouseConfigNotNull(TestWarehouseConfig): + + @pytest.fixture(scope="class") + def models(self): + return {"schema.yml": _files.SCHEMA__NOT_NULL} + + def test_expected_warehouse(self, project): + _, logs = run_dbt_and_capture(["test"], expect_pass=False) + assert f"USE WAREHOUSE DBT_TESTING_ALT;" in logs + + +class TestWarehouseConfigRelationships(TestWarehouseConfig): + + @pytest.fixture(scope="class") + def models(self): + return {"schema.yml": _files.SCHEMA__RELATIONSHIPS} + + def test_expected_warehouse(self, project): + _, logs = run_dbt_and_capture(["test"], expect_pass=False) + assert f"USE WAREHOUSE DBT_TESTING_ALT;" in logs From 498c8061ce157ad3546ee78d7ac1b8453f59fe16 Mon Sep 17 00:00:00 2001 From: Colin Date: Wed, 25 Sep 2024 15:12:41 -0700 Subject: [PATCH 2/2] update tests --- tests/functional/generic_test_tests/_files.py | 2 +- .../generic_test_tests/test_generic_tests.py | 19 ++++--------------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/tests/functional/generic_test_tests/_files.py b/tests/functional/generic_test_tests/_files.py index fd88cba5d..a9743e43e 100644 --- a/tests/functional/generic_test_tests/_files.py +++ b/tests/functional/generic_test_tests/_files.py @@ -18,7 +18,7 @@ data_tests: - not_null: config: - snowflake_warehouse: DBT_TESTING + snowflake_warehouse: DBT_TESTING_ALT """ diff --git a/tests/functional/generic_test_tests/test_generic_tests.py b/tests/functional/generic_test_tests/test_generic_tests.py index 02af7fa06..a653a363b 100644 --- a/tests/functional/generic_test_tests/test_generic_tests.py +++ b/tests/functional/generic_test_tests/test_generic_tests.py @@ -39,8 +39,8 @@ def models(self): return {"schema.yml": _files.SCHEMA__EXPLICIT_WAREHOUSE} def test_expected_warehouse(self, project): - _, logs = run_dbt_and_capture(["test"]) - assert f"USE WAREHOUSE DBT_TESTING;" in logs + _, logs = run_dbt_and_capture(["test", "--log-level", "debug"]) + assert "use warehouse " in logs class TestWarehouseConfigNotNull(TestWarehouseConfig): @@ -50,16 +50,5 @@ def models(self): return {"schema.yml": _files.SCHEMA__NOT_NULL} def test_expected_warehouse(self, project): - _, logs = run_dbt_and_capture(["test"], expect_pass=False) - assert f"USE WAREHOUSE DBT_TESTING_ALT;" in logs - - -class TestWarehouseConfigRelationships(TestWarehouseConfig): - - @pytest.fixture(scope="class") - def models(self): - return {"schema.yml": _files.SCHEMA__RELATIONSHIPS} - - def test_expected_warehouse(self, project): - _, logs = run_dbt_and_capture(["test"], expect_pass=False) - assert f"USE WAREHOUSE DBT_TESTING_ALT;" in logs + _, logs = run_dbt_and_capture(["test", "--log-level", "debug"], expect_pass=False) + assert "use warehouse " in logs