From df140c28256ec0bce83cc922ebd249ba4e82f12c Mon Sep 17 00:00:00 2001 From: Mila Page Date: Wed, 18 Jan 2023 19:26:35 -0800 Subject: [PATCH 1/5] Test converted and reformatted for pytest. --- .../column_quoting/test_column_quotes.py | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 tests/functional/column_quoting/test_column_quotes.py 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..4122edc36fb --- /dev/null +++ b/tests/functional/column_quoting/test_column_quotes.py @@ -0,0 +1,108 @@ +import os +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, + incremental_strategy = var('strategy') + )}} + +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, + incremental_strategy = var('strategy') + )}} + +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, request): + def fixt(): + strategy_vars = '{{"strategy": "{}"}}'.format(request.param) + results = run_dbt(['seed', '--vars', strategy_vars]) + assert len(results) == 1 + results = run_dbt(['run', '--vars', strategy_vars]) + assert len(results) == 1 + results = run_dbt(['run', '--vars', strategy_vars]) + assert len(results) == 1 + return fixt + + +class TestColumnQuotingDefault(BaseColumnQuotingTest): + @pytest.mark.parametrize('run_column_quotes', ["delete+insert"], indirect=True) + 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, + }, + } + + @pytest.mark.parametrize('run_column_quotes', ["delete+insert"], indirect=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, + }, + } + + @pytest.mark.parametrize('run_column_quotes', ["delete+insert"], indirect=True) + def test_column_quotes(self, run_column_quotes): + run_column_quotes() From d8f7edbe4302ca86aa156856315854d2539718c1 Mon Sep 17 00:00:00 2001 From: Mila Page Date: Wed, 18 Jan 2023 19:27:26 -0800 Subject: [PATCH 2/5] Ax old versions of 052 test --- .../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 ------------------- 4 files changed, 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 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() From 74feeb10c84f557b4a7761d574ef02249bc381b8 Mon Sep 17 00:00:00 2001 From: Mila Page Date: Wed, 18 Jan 2023 19:35:32 -0800 Subject: [PATCH 3/5] Nix the 'os' import and black format --- .../column_quoting/test_column_quotes.py | 38 ++++++++----------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/tests/functional/column_quoting/test_column_quotes.py b/tests/functional/column_quoting/test_column_quotes.py index 4122edc36fb..056b9e8b91c 100644 --- a/tests/functional/column_quoting/test_column_quotes.py +++ b/tests/functional/column_quoting/test_column_quotes.py @@ -1,9 +1,6 @@ -import os import pytest -from dbt.tests.util import ( - run_dbt -) +from dbt.tests.util import run_dbt _MODELS_COLUMN_QUOTING_DEFAULT = """ {% set col_a = '"col_A"' %} @@ -45,31 +42,28 @@ class BaseColumnQuotingTest: @pytest.fixture(scope="class") def models(self): - return { - "model.sql": _MODELS_COLUMN_QUOTING_DEFAULT - } + return {"model.sql": _MODELS_COLUMN_QUOTING_DEFAULT} @pytest.fixture(scope="class") def seeds(self): - return { - "seed.csv": _SEEDS_BASIC_SEED - } + return {"seed.csv": _SEEDS_BASIC_SEED} @pytest.fixture(scope="function") def run_column_quotes(self, project, request): def fixt(): strategy_vars = '{{"strategy": "{}"}}'.format(request.param) - results = run_dbt(['seed', '--vars', strategy_vars]) + results = run_dbt(["seed", "--vars", strategy_vars]) assert len(results) == 1 - results = run_dbt(['run', '--vars', strategy_vars]) + results = run_dbt(["run", "--vars", strategy_vars]) assert len(results) == 1 - results = run_dbt(['run', '--vars', strategy_vars]) + results = run_dbt(["run", "--vars", strategy_vars]) assert len(results) == 1 + return fixt class TestColumnQuotingDefault(BaseColumnQuotingTest): - @pytest.mark.parametrize('run_column_quotes', ["delete+insert"], indirect=True) + @pytest.mark.parametrize("run_column_quotes", ["delete+insert"], indirect=True) def test_column_quotes(self, run_column_quotes): run_column_quotes() @@ -78,12 +72,12 @@ class TestColumnQuotingEnabled(BaseColumnQuotingTest): @pytest.fixture(scope="class") def project_config_update(self): return { - 'seeds': { - 'quote_columns': True, + "seeds": { + "quote_columns": True, }, } - @pytest.mark.parametrize('run_column_quotes', ["delete+insert"], indirect=True) + @pytest.mark.parametrize("run_column_quotes", ["delete+insert"], indirect=True) def test_column_quotes(self, run_column_quotes): run_column_quotes() @@ -91,18 +85,16 @@ def test_column_quotes(self, run_column_quotes): class TestColumnQuotingDisabled(BaseColumnQuotingTest): @pytest.fixture(scope="class") def models(self): - return { - "model.sql": _MODELS_COLUMN_QUOTING_NO_QUOTING - } + return {"model.sql": _MODELS_COLUMN_QUOTING_NO_QUOTING} @pytest.fixture(scope="class") def project_config_update(self): return { - 'seeds': { - 'quote_columns': False, + "seeds": { + "quote_columns": False, }, } - @pytest.mark.parametrize('run_column_quotes', ["delete+insert"], indirect=True) + @pytest.mark.parametrize("run_column_quotes", ["delete+insert"], indirect=True) def test_column_quotes(self, run_column_quotes): run_column_quotes() From 4755921422336af4597ac5fd1cdb9f19df479fb3 Mon Sep 17 00:00:00 2001 From: Mila Page Date: Wed, 18 Jan 2023 19:49:51 -0800 Subject: [PATCH 4/5] Change names of models to be more PEP like --- tests/functional/column_quoting/test_column_quotes.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/functional/column_quoting/test_column_quotes.py b/tests/functional/column_quoting/test_column_quotes.py index 056b9e8b91c..5de8436b7f3 100644 --- a/tests/functional/column_quoting/test_column_quotes.py +++ b/tests/functional/column_quoting/test_column_quotes.py @@ -2,7 +2,7 @@ from dbt.tests.util import run_dbt -_MODELS_COLUMN_QUOTING_DEFAULT = """ +_MODELS__COLUMN_QUOTING_DEFAULT = """ {% set col_a = '"col_A"' %} {% set col_b = '"col_B"' %} @@ -17,7 +17,7 @@ from {{ref('seed')}} """ -_MODELS_COLUMN_QUOTING_NO_QUOTING = """ +_MODELS__COLUMN_QUOTING_NO_QUOTING = """ {% set col_a = '"col_a"' %} {% set col_b = '"col_b"' %} @@ -42,7 +42,7 @@ class BaseColumnQuotingTest: @pytest.fixture(scope="class") def models(self): - return {"model.sql": _MODELS_COLUMN_QUOTING_DEFAULT} + return {"model.sql": _MODELS__COLUMN_QUOTING_DEFAULT} @pytest.fixture(scope="class") def seeds(self): @@ -85,7 +85,7 @@ def test_column_quotes(self, run_column_quotes): class TestColumnQuotingDisabled(BaseColumnQuotingTest): @pytest.fixture(scope="class") def models(self): - return {"model.sql": _MODELS_COLUMN_QUOTING_NO_QUOTING} + return {"model.sql": _MODELS__COLUMN_QUOTING_NO_QUOTING} @pytest.fixture(scope="class") def project_config_update(self): From 5b4f148eba2b8157812c2776e5a7b103142519c1 Mon Sep 17 00:00:00 2001 From: Mila Page Date: Thu, 19 Jan 2023 21:06:12 -0800 Subject: [PATCH 5/5] cleanup code --- .../column_quoting/test_column_quotes.py | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/tests/functional/column_quoting/test_column_quotes.py b/tests/functional/column_quoting/test_column_quotes.py index 5de8436b7f3..362f7b0d4de 100644 --- a/tests/functional/column_quoting/test_column_quotes.py +++ b/tests/functional/column_quoting/test_column_quotes.py @@ -6,14 +6,16 @@ {% set col_a = '"col_A"' %} {% set col_b = '"col_B"' %} -{{config( +{{ + config( materialized = 'incremental', unique_key = col_a, - incremental_strategy = var('strategy') - )}} + ) +}} select -{{ col_a }}, {{ col_b }} + {{ col_a }}, + {{ col_b }} from {{ref('seed')}} """ @@ -21,14 +23,16 @@ {% set col_a = '"col_a"' %} {% set col_b = '"col_b"' %} -{{config( +{{ + config( materialized = 'incremental', unique_key = col_a, - incremental_strategy = var('strategy') - )}} + ) +}} select -{{ col_a }}, {{ col_b }} + {{ col_a }}, + {{ col_b }} from {{ref('seed')}} """ @@ -49,21 +53,19 @@ def seeds(self): return {"seed.csv": _SEEDS_BASIC_SEED} @pytest.fixture(scope="function") - def run_column_quotes(self, project, request): + def run_column_quotes(self, project): def fixt(): - strategy_vars = '{{"strategy": "{}"}}'.format(request.param) - results = run_dbt(["seed", "--vars", strategy_vars]) + results = run_dbt(["seed"]) assert len(results) == 1 - results = run_dbt(["run", "--vars", strategy_vars]) + results = run_dbt(["run"]) assert len(results) == 1 - results = run_dbt(["run", "--vars", strategy_vars]) + results = run_dbt(["run"]) assert len(results) == 1 return fixt class TestColumnQuotingDefault(BaseColumnQuotingTest): - @pytest.mark.parametrize("run_column_quotes", ["delete+insert"], indirect=True) def test_column_quotes(self, run_column_quotes): run_column_quotes() @@ -77,7 +79,6 @@ def project_config_update(self): }, } - @pytest.mark.parametrize("run_column_quotes", ["delete+insert"], indirect=True) def test_column_quotes(self, run_column_quotes): run_column_quotes() @@ -95,6 +96,5 @@ def project_config_update(self): }, } - @pytest.mark.parametrize("run_column_quotes", ["delete+insert"], indirect=True) def test_column_quotes(self, run_column_quotes): run_column_quotes()