From 3f96fad4f95e44d21834a61b1084b9bf2f34d840 Mon Sep 17 00:00:00 2001 From: Mila Page <67295367+VersusFacit@users.noreply.github.com> Date: Thu, 26 Jan 2023 12:23:02 -0800 Subject: [PATCH] Ct 1629/052 column quoting tests conversion (#6652) * Test converted and reformatted for pytest. * Ax old versions of 052 test * Nix the 'os' import and black format * Change names of models to be more PEP like * cleanup code Co-authored-by: Mila Page --- .../models-unquoted/model.sql | 12 --- .../052_column_quoting_tests/models/model.sql | 12 --- .../052_column_quoting_tests/seeds/seed.csv | 4 - .../test_column_quotes.py | 78 -------------- .../column_quoting/test_column_quotes.py | 100 ++++++++++++++++++ 5 files changed, 100 insertions(+), 106 deletions(-) delete mode 100644 test/integration/052_column_quoting_tests/models-unquoted/model.sql delete mode 100644 test/integration/052_column_quoting_tests/models/model.sql delete mode 100644 test/integration/052_column_quoting_tests/seeds/seed.csv delete mode 100644 test/integration/052_column_quoting_tests/test_column_quotes.py create mode 100644 tests/functional/column_quoting/test_column_quotes.py diff --git a/test/integration/052_column_quoting_tests/models-unquoted/model.sql b/test/integration/052_column_quoting_tests/models-unquoted/model.sql deleted file mode 100644 index 1bdcda38353..00000000000 --- a/test/integration/052_column_quoting_tests/models-unquoted/model.sql +++ /dev/null @@ -1,12 +0,0 @@ -{% set col_a = '"col_a"' %} -{% set col_b = '"col_b"' %} - -{{config( - materialized = 'incremental', - unique_key = col_a, - incremental_strategy = var('strategy') - )}} - -select -{{ col_a }}, {{ col_b }} -from {{ref('seed')}} diff --git a/test/integration/052_column_quoting_tests/models/model.sql b/test/integration/052_column_quoting_tests/models/model.sql deleted file mode 100644 index 3bc61e082d9..00000000000 --- a/test/integration/052_column_quoting_tests/models/model.sql +++ /dev/null @@ -1,12 +0,0 @@ -{% set col_a = '"col_A"' %} -{% set col_b = '"col_B"' %} - -{{config( - materialized = 'incremental', - unique_key = col_a, - incremental_strategy = var('strategy') - )}} - -select -{{ col_a }}, {{ col_b }} -from {{ref('seed')}} diff --git a/test/integration/052_column_quoting_tests/seeds/seed.csv b/test/integration/052_column_quoting_tests/seeds/seed.csv deleted file mode 100644 index d4a1e26eed2..00000000000 --- a/test/integration/052_column_quoting_tests/seeds/seed.csv +++ /dev/null @@ -1,4 +0,0 @@ -col_A,col_B -1,2 -3,4 -5,6 diff --git a/test/integration/052_column_quoting_tests/test_column_quotes.py b/test/integration/052_column_quoting_tests/test_column_quotes.py deleted file mode 100644 index f5aef6fed39..00000000000 --- a/test/integration/052_column_quoting_tests/test_column_quotes.py +++ /dev/null @@ -1,78 +0,0 @@ -from test.integration.base import DBTIntegrationTest, use_profile -import os - - -class BaseColumnQuotingTest(DBTIntegrationTest): - def column_quoting(self): - raise NotImplementedError('column_quoting not implemented') - - @property - def schema(self): - return 'dbt_column_quoting_052' - - @staticmethod - def dir(value): - return os.path.normpath(value) - - def _run_columnn_quotes(self, strategy='delete+insert'): - strategy_vars = '{{"strategy": "{}"}}'.format(strategy) - self.run_dbt(['seed', '--vars', strategy_vars]) - self.run_dbt(['run', '--vars', strategy_vars]) - self.run_dbt(['run', '--vars', strategy_vars]) - - -class TestColumnQuotingDefault(BaseColumnQuotingTest): - @property - def project_config(self): - return { - 'config-version': 2 - } - - @property - def models(self): - return self.dir('models') - - def run_dbt(self, *args, **kwargs): - return super().run_dbt(*args, **kwargs) - - @use_profile('postgres') - def test_postgres_column_quotes(self): - self._run_columnn_quotes() - - -class TestColumnQuotingDisabled(BaseColumnQuotingTest): - @property - def models(self): - return self.dir('models-unquoted') - - @property - def project_config(self): - return { - 'config-version': 2, - 'seeds': { - 'quote_columns': False, - }, - } - - @use_profile('postgres') - def test_postgres_column_quotes(self): - self._run_columnn_quotes() - - -class TestColumnQuotingEnabled(BaseColumnQuotingTest): - @property - def models(self): - return self.dir('models') - - @property - def project_config(self): - return { - 'config-version': 2, - 'seeds': { - 'quote_columns': True, - }, - } - - @use_profile('postgres') - def test_postgres_column_quotes(self): - self._run_columnn_quotes() diff --git a/tests/functional/column_quoting/test_column_quotes.py b/tests/functional/column_quoting/test_column_quotes.py new file mode 100644 index 00000000000..362f7b0d4de --- /dev/null +++ b/tests/functional/column_quoting/test_column_quotes.py @@ -0,0 +1,100 @@ +import pytest + +from dbt.tests.util import run_dbt + +_MODELS__COLUMN_QUOTING_DEFAULT = """ +{% set col_a = '"col_A"' %} +{% set col_b = '"col_B"' %} + +{{ + config( + materialized = 'incremental', + unique_key = col_a, + ) +}} + +select + {{ col_a }}, + {{ col_b }} +from {{ref('seed')}} +""" + +_MODELS__COLUMN_QUOTING_NO_QUOTING = """ +{% set col_a = '"col_a"' %} +{% set col_b = '"col_b"' %} + +{{ + config( + materialized = 'incremental', + unique_key = col_a, + ) +}} + +select + {{ col_a }}, + {{ col_b }} +from {{ref('seed')}} +""" + +_SEEDS_BASIC_SEED = """col_A,col_B +1,2 +3,4 +5,6 +""" + + +class BaseColumnQuotingTest: + @pytest.fixture(scope="class") + def models(self): + return {"model.sql": _MODELS__COLUMN_QUOTING_DEFAULT} + + @pytest.fixture(scope="class") + def seeds(self): + return {"seed.csv": _SEEDS_BASIC_SEED} + + @pytest.fixture(scope="function") + def run_column_quotes(self, project): + def fixt(): + results = run_dbt(["seed"]) + assert len(results) == 1 + results = run_dbt(["run"]) + assert len(results) == 1 + results = run_dbt(["run"]) + assert len(results) == 1 + + return fixt + + +class TestColumnQuotingDefault(BaseColumnQuotingTest): + def test_column_quotes(self, run_column_quotes): + run_column_quotes() + + +class TestColumnQuotingEnabled(BaseColumnQuotingTest): + @pytest.fixture(scope="class") + def project_config_update(self): + return { + "seeds": { + "quote_columns": True, + }, + } + + def test_column_quotes(self, run_column_quotes): + run_column_quotes() + + +class TestColumnQuotingDisabled(BaseColumnQuotingTest): + @pytest.fixture(scope="class") + def models(self): + return {"model.sql": _MODELS__COLUMN_QUOTING_NO_QUOTING} + + @pytest.fixture(scope="class") + def project_config_update(self): + return { + "seeds": { + "quote_columns": False, + }, + } + + def test_column_quotes(self, run_column_quotes): + run_column_quotes()