From ec9246b7ffe279683ce5d1de7c0570e846c81c3d Mon Sep 17 00:00:00 2001 From: Mike Alfare Date: Fri, 20 Sep 2024 16:01:29 -0400 Subject: [PATCH] move dynamic table tests down into the relation tests folder --- .../test_relation_type_change.py | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 tests/functional/relation_tests/test_relation_type_change.py diff --git a/tests/functional/relation_tests/test_relation_type_change.py b/tests/functional/relation_tests/test_relation_type_change.py new file mode 100644 index 000000000..1246b0791 --- /dev/null +++ b/tests/functional/relation_tests/test_relation_type_change.py @@ -0,0 +1,64 @@ +from dataclasses import dataclass +from itertools import product + +from dbt.tests.util import run_dbt +import pytest + +from tests.functional.relation_tests import models +from tests.functional.utils import query_relation_type, update_model + + +@dataclass +class Model: + model: str + relation_type: str + + @property + def name(self) -> str: + return f"{self.relation_type}" + + +@dataclass +class Scenario: + initial: Model + final: Model + + @property + def name(self) -> str: + return f"REPLACE_{self.initial.name}__WITH_{self.final.name}" + + @property + def error_message(self) -> str: + return f"Failed when migrating from: {self.initial.name} to: {self.final.name}" + + +relations = [ + Model(models.VIEW, "view"), + Model(models.TABLE, "table"), + Model(models.DYNAMIC_TABLE, "dynamic_table"), +] +scenarios = [Scenario(*scenario) for scenario in product(relations, relations)] + + +class TestRelationTypeChange: + + @pytest.fixture(scope="class", autouse=True) + def seeds(self): + return {"my_seed.csv": models.SEED} + + @pytest.fixture(scope="class", autouse=True) + def models(self): + yield {f"{scenario.name}.sql": scenario.initial.model for scenario in scenarios} + + @pytest.fixture(scope="class", autouse=True) + def setup(self, project): + run_dbt(["seed"]) + run_dbt(["run"]) + for scenario in scenarios: + update_model(project, scenario.name, scenario.final.model) + run_dbt(["run"]) + + @pytest.mark.parametrize("scenario", scenarios, ids=[scenario.name for scenario in scenarios]) + def test_replace(self, project, scenario): + relation_type = query_relation_type(project, scenario.name) + assert relation_type == scenario.final.relation_type, scenario.error_message