From 21485a3a3d536733534de36b5c393e2db7053f77 Mon Sep 17 00:00:00 2001 From: Colin Date: Fri, 7 Feb 2025 15:53:19 -0800 Subject: [PATCH 1/4] Add Functional Tests --- .../test_managed_iceberg_catalog.py | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 dbt-snowflake/tests/functional/adapter/catalog_integrations/test_managed_iceberg_catalog.py diff --git a/dbt-snowflake/tests/functional/adapter/catalog_integrations/test_managed_iceberg_catalog.py b/dbt-snowflake/tests/functional/adapter/catalog_integrations/test_managed_iceberg_catalog.py new file mode 100644 index 000000000..91b1c1caf --- /dev/null +++ b/dbt-snowflake/tests/functional/adapter/catalog_integrations/test_managed_iceberg_catalog.py @@ -0,0 +1,43 @@ +import pytest +from dbt.tests.util import run_dbt + +BASIC_ICEBERG_TABLE_MODEL = """ +{{ + config( + materialized = "table", + catalog_name = "test_catalog", + ) +}} +select * from 1 as id +""" + +class TestManagedIcebergCatalogIntegration: + @pytest.fixture + def catalogs(self): + return { + "catalogs": [ + { + "name": "test_catalog", + "write_integrations": [ + { + "name": "write_integration_name", + "external_volume": "s3_iceberg_snow", + "table_format": "iceberg", + "catalog_type": "managed", + } + ], + } + ] + } + + @pytest.fixture(scope="class") + def project_config_update(self): + return {"flags": {"enable_iceberg_materializations": True}} + + @pytest.fixture(scope="class") + def models(self): + return { + "basic_table.sql": BASIC_ICEBERG_TABLE_MODEL, + } + def test_managed_iceberg_catalog_integration(self, project): + run_dbt(["run"]) From 63706c2e52c1e834ef5207ca44455e9ad8fb93d8 Mon Sep 17 00:00:00 2001 From: Colin Date: Sun, 9 Feb 2025 13:24:53 -0800 Subject: [PATCH 2/4] add test --- .../catalog_integrations/test_managed_iceberg_catalog.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dbt-snowflake/tests/functional/adapter/catalog_integrations/test_managed_iceberg_catalog.py b/dbt-snowflake/tests/functional/adapter/catalog_integrations/test_managed_iceberg_catalog.py index 91b1c1caf..38309b2e6 100644 --- a/dbt-snowflake/tests/functional/adapter/catalog_integrations/test_managed_iceberg_catalog.py +++ b/dbt-snowflake/tests/functional/adapter/catalog_integrations/test_managed_iceberg_catalog.py @@ -11,6 +11,7 @@ select * from 1 as id """ + class TestManagedIcebergCatalogIntegration: @pytest.fixture def catalogs(self): @@ -39,5 +40,6 @@ def models(self): return { "basic_table.sql": BASIC_ICEBERG_TABLE_MODEL, } - def test_managed_iceberg_catalog_integration(self, project): + + def test_managed_iceberg_catalog_integration(self, project, catalogs): run_dbt(["run"]) From 56c3ff08d669c412e547a4d4dabbc5c78766bb96 Mon Sep 17 00:00:00 2001 From: Colin Date: Mon, 10 Feb 2025 11:54:10 -0800 Subject: [PATCH 3/4] add base adapter test for catalog integration --- dbt-snowflake/hatch.toml | 4 +- .../test_managed_iceberg_catalog.py | 45 +++++-------------- .../test_catalog_integration.py | 44 ++++++++++++++++++ 3 files changed, 57 insertions(+), 36 deletions(-) create mode 100644 dbt-tests-adapter/src/dbt/tests/adapter/catalog_integrations/test_catalog_integration.py diff --git a/dbt-snowflake/hatch.toml b/dbt-snowflake/hatch.toml index 6feef8690..5946093d2 100644 --- a/dbt-snowflake/hatch.toml +++ b/dbt-snowflake/hatch.toml @@ -16,7 +16,7 @@ pre-install-commands = [ ] dependencies = [ "dbt-common @ git+https://github.com/dbt-labs/dbt-common.git", - "dbt-core @ git+https://github.com/dbt-labs/dbt-core.git#subdirectory=core", + "dbt-core @ git+https://github.com/dbt-labs/dbt-core.git@catalogs-parsing#subdirectory=core", "ddtrace==2.3.0", "ipdb~=0.13.13", "pre-commit~=3.7.0", @@ -45,6 +45,8 @@ docker-dev = [ pre-install-commands = [ "pip install -e ../dbt-adapters", "pip install -e ../dbt-tests-adapter", +] +post-install-commands = [ "pip install -e ../../dbt-core/core", ] diff --git a/dbt-snowflake/tests/functional/adapter/catalog_integrations/test_managed_iceberg_catalog.py b/dbt-snowflake/tests/functional/adapter/catalog_integrations/test_managed_iceberg_catalog.py index 38309b2e6..ba962dada 100644 --- a/dbt-snowflake/tests/functional/adapter/catalog_integrations/test_managed_iceberg_catalog.py +++ b/dbt-snowflake/tests/functional/adapter/catalog_integrations/test_managed_iceberg_catalog.py @@ -1,45 +1,20 @@ import pytest -from dbt.tests.util import run_dbt +from dbt.tests.util import run_dbt, write_config_file +from dbt.tests.adapter.catalog_integrations.test_catalog_integration import BaseCatalogIntegration -BASIC_ICEBERG_TABLE_MODEL = """ -{{ - config( - materialized = "table", - catalog_name = "test_catalog", - ) -}} -select * from 1 as id -""" -class TestManagedIcebergCatalogIntegration: - @pytest.fixture - def catalogs(self): +class TestManagedIcebergCatalogIntegration(BaseCatalogIntegration): + + @pytest.fixture(scope="class", autouse=True) + def write_catalog_integration(self, project): return { - "catalogs": [ - { - "name": "test_catalog", - "write_integrations": [ - { - "name": "write_integration_name", - "external_volume": "s3_iceberg_snow", - "table_format": "iceberg", - "catalog_type": "managed", - } - ], + "name": "write_integration_name", + "external_volume": "s3_iceberg_snow", + "table_format": "iceberg", + "catalog_type": "managed", } - ] - } @pytest.fixture(scope="class") def project_config_update(self): return {"flags": {"enable_iceberg_materializations": True}} - - @pytest.fixture(scope="class") - def models(self): - return { - "basic_table.sql": BASIC_ICEBERG_TABLE_MODEL, - } - - def test_managed_iceberg_catalog_integration(self, project, catalogs): - run_dbt(["run"]) diff --git a/dbt-tests-adapter/src/dbt/tests/adapter/catalog_integrations/test_catalog_integration.py b/dbt-tests-adapter/src/dbt/tests/adapter/catalog_integrations/test_catalog_integration.py new file mode 100644 index 000000000..276c815c0 --- /dev/null +++ b/dbt-tests-adapter/src/dbt/tests/adapter/catalog_integrations/test_catalog_integration.py @@ -0,0 +1,44 @@ +import pytest +from typing import Dict +from dbt.tests.util import run_dbt, write_config_file + +CATALOG_NAME = "test_catalog" +BASIC_CATALOG_INTEGRATION_TABLE_MODEL = """ +{{ + config( + materialized = "table", + catalog_name = "test_catalog", + ) +}} +select 1 as id +""" + + +class BaseCatalogIntegration: + @pytest.fixture(scope="class", autouse=True) + def models(self): + return { + "basic_table_model.sql": BASIC_CATALOG_INTEGRATION_TABLE_MODEL, + } + + @pytest.fixture(scope="class") + def write_catalog_integration(self) -> Dict: + return {} + + @pytest.fixture(scope="class", autouse=True) + def catalogs(self, write_catalog_integration, project): + catalogs = { + "catalogs": [ + { + "name": CATALOG_NAME, + "write_integrations": [ + write_catalog_integration + ], + } + ] + } + write_config_file(catalogs, project.project_root, "catalogs.yml") + return catalogs + + def test_catalog_integration(self, project, catalogs): + run_dbt(["run"]) From 0800cc12679ec4d558d3711ee0739e7d386881e2 Mon Sep 17 00:00:00 2001 From: Colin Date: Mon, 10 Feb 2025 12:10:31 -0800 Subject: [PATCH 4/4] formatting --- .../test_managed_iceberg_catalog.py | 11 +++++------ .../catalog_integrations/test_catalog_integration.py | 4 +--- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/dbt-snowflake/tests/functional/adapter/catalog_integrations/test_managed_iceberg_catalog.py b/dbt-snowflake/tests/functional/adapter/catalog_integrations/test_managed_iceberg_catalog.py index ba962dada..c49686ca4 100644 --- a/dbt-snowflake/tests/functional/adapter/catalog_integrations/test_managed_iceberg_catalog.py +++ b/dbt-snowflake/tests/functional/adapter/catalog_integrations/test_managed_iceberg_catalog.py @@ -3,17 +3,16 @@ from dbt.tests.adapter.catalog_integrations.test_catalog_integration import BaseCatalogIntegration - class TestManagedIcebergCatalogIntegration(BaseCatalogIntegration): @pytest.fixture(scope="class", autouse=True) def write_catalog_integration(self, project): return { - "name": "write_integration_name", - "external_volume": "s3_iceberg_snow", - "table_format": "iceberg", - "catalog_type": "managed", - } + "name": "write_integration_name", + "external_volume": "s3_iceberg_snow", + "table_format": "iceberg", + "catalog_type": "managed", + } @pytest.fixture(scope="class") def project_config_update(self): diff --git a/dbt-tests-adapter/src/dbt/tests/adapter/catalog_integrations/test_catalog_integration.py b/dbt-tests-adapter/src/dbt/tests/adapter/catalog_integrations/test_catalog_integration.py index 276c815c0..a4353a3c5 100644 --- a/dbt-tests-adapter/src/dbt/tests/adapter/catalog_integrations/test_catalog_integration.py +++ b/dbt-tests-adapter/src/dbt/tests/adapter/catalog_integrations/test_catalog_integration.py @@ -31,9 +31,7 @@ def catalogs(self, write_catalog_integration, project): "catalogs": [ { "name": CATALOG_NAME, - "write_integrations": [ - write_catalog_integration - ], + "write_integrations": [write_catalog_integration], } ] }