diff --git a/test/integration/037_external_reference_tests/models/my_model.sql b/test/integration/037_external_reference_tests/models/my_model.sql deleted file mode 100644 index 5d10e607ed7..00000000000 --- a/test/integration/037_external_reference_tests/models/my_model.sql +++ /dev/null @@ -1,7 +0,0 @@ -{{ - config( - materialized = "view" - ) -}} - -select * from "{{ this.schema + 'z' }}"."external" diff --git a/test/integration/037_external_reference_tests/standalone_models/my_model.sql b/test/integration/037_external_reference_tests/standalone_models/my_model.sql deleted file mode 100644 index 2cd691ea7b4..00000000000 --- a/test/integration/037_external_reference_tests/standalone_models/my_model.sql +++ /dev/null @@ -1,2 +0,0 @@ - -select 1 as id diff --git a/test/integration/037_external_reference_tests/test_external_reference.py b/test/integration/037_external_reference_tests/test_external_reference.py deleted file mode 100644 index d5a7e129e3a..00000000000 --- a/test/integration/037_external_reference_tests/test_external_reference.py +++ /dev/null @@ -1,78 +0,0 @@ -from test.integration.base import DBTIntegrationTest, use_profile - -class TestExternalReference(DBTIntegrationTest): - @property - def schema(self): - return "external_reference_037" - - @property - def models(self): - return "models" - - def setUp(self): - super().setUp() - self.use_default_project() - self.external_schema = self.unique_schema()+'z' - self.run_sql( - 'create schema "{}"'.format(self.external_schema) - ) - self.run_sql( - 'create table "{}"."external" (id integer)' - .format(self.external_schema) - ) - self.run_sql( - 'insert into "{}"."external" values (1), (2)' - .format(self.external_schema) - ) - - def tearDown(self): - # This has to happen before we drop the external schema, because - # otherwise postgres hangs forever. - self._drop_schemas() - with self.get_connection(): - self._drop_schema_named(self.default_database, self.external_schema) - super().tearDown() - - @use_profile('postgres') - def test__postgres__external_reference(self): - self.assertEqual(len(self.run_dbt()), 1) - # running it again should succeed - self.assertEqual(len(self.run_dbt()), 1) - - -# The opposite of the test above -- check that external relations that -# depend on a dbt model do not create issues with caching -class TestExternalDependency(DBTIntegrationTest): - @property - def schema(self): - return "external_dependency_037" - - @property - def models(self): - return "standalone_models" - - def tearDown(self): - # This has to happen before we drop the external schema, because - # otherwise postgres hangs forever. - self._drop_schemas() - with self.get_connection(): - self._drop_schema_named(self.default_database, self.external_schema) - super().tearDown() - - @use_profile('postgres') - def test__postgres__external_reference(self): - self.assertEqual(len(self.run_dbt()), 1) - - # create a view outside of the dbt schema that depends on this model - self.external_schema = self.unique_schema()+'zz' - self.run_sql( - 'create schema "{}"'.format(self.external_schema) - ) - self.run_sql( - 'create view "{}"."external" as (select * from {}.my_model)' - .format(self.external_schema, self.unique_schema()) - ) - - # running it again should succeed - self.assertEqual(len(self.run_dbt()), 1) - diff --git a/tests/functional/external_reference/test_external_reference.py b/tests/functional/external_reference/test_external_reference.py new file mode 100644 index 00000000000..50cf7835494 --- /dev/null +++ b/tests/functional/external_reference/test_external_reference.py @@ -0,0 +1,57 @@ +import pytest + +from dbt.tests.util import run_dbt + + +external_model_sql = """ +{{ + config( + materialized = "view" + ) +}} + +select * from "{{ this.schema + 'z' }}"."external" +""" + +model_sql = """ +select 1 as id +""" + + +class TestExternalReference: + @pytest.fixture(scope="class") + def models(self): + return {"model.sql": external_model_sql} + + def test_external_reference(self, project, unique_schema): + external_schema = unique_schema + 'z' + project.run_sql(f'create schema "{external_schema}"') + project.run_sql(f'create table "{external_schema}"."external" (id integer)') + project.run_sql(f'insert into "{external_schema}"."external" values (1), (2)') + + results = run_dbt(['run']) + assert len(results) == 1 + + # running it again should succeed + results = run_dbt(['run']) + assert len(results) == 1 + + +# The opposite of the test above -- check that external relations that +# depend on a dbt model do not create issues with caching +class TestExternalDependency: + @pytest.fixture(scope="class") + def models(self): + return {"model.sql": model_sql} + + def test_external_reference(self, project, unique_schema): + results = run_dbt(['run']) + assert len(results) == 1 + + external_schema = unique_schema + 'z' + project.run_sql(f'create schema "{external_schema}"') + project.run_sql(f'create view "{external_schema}"."external" as (select * from {unique_schema}.model)') + + # running it again should succeed + results = run_dbt(['run']) + assert len(results) == 1