Skip to content

Commit

Permalink
Convert incremental on_schema_change tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jtcohen6 committed Jan 15, 2023
1 parent 8aceeb4 commit 34144d7
Show file tree
Hide file tree
Showing 13 changed files with 86 additions and 328 deletions.
4 changes: 2 additions & 2 deletions dev-requirements.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# install latest changes in dbt-core
# TODO: how to automate switching from develop to version branches?
git+https://github.com/dbt-labs/dbt-core.git#egg=dbt-core&subdirectory=core
git+https://github.com/dbt-labs/dbt-core.git#egg=dbt-tests-adapter&subdirectory=tests/adapter
git+https://github.com/dbt-labs/dbt-core.git@jerco/mv-onschemachange-adapter-zone#egg=dbt-core&subdirectory=core
git+https://github.com/dbt-labs/dbt-core.git@jerco/mv-onschemachange-adapter-zone#egg=dbt-tests-adapter&subdirectory=tests/adapter



Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import pytest

from dbt.tests.util import run_dbt

from dbt.tests.adapter.incremental.test_incremental_on_schema_change import BaseIncrementalOnSchemaChangeSetup


class IncrementalOnSchemaChangeIgnoreFail(BaseIncrementalOnSchemaChangeSetup):
def test_run_incremental_ignore(self, project):
select = "model_a incremental_ignore incremental_ignore_target"
compare_source = "incremental_ignore"
compare_target = "incremental_ignore_target"
self.run_twice_and_assert(select, compare_source, compare_target, project)

def test_run_incremental_fail_on_schema_change(self, project):
select = "model_a incremental_fail"
run_dbt(["run", "--models", select, "--full-refresh"])
results_two = run_dbt(["run", "--models", select], expect_pass=False)
assert "Compilation Error" in results_two[1].message


@pytest.mark.skip_profile("databricks_sql_endpoint")
class TestAppendOnSchemaChange(IncrementalOnSchemaChangeIgnoreFail):
@pytest.fixture(scope="class")
def project_config_update(self):
return {
"models": {
"+incremental_strategy": "append",
}
}


@pytest.mark.skip_profile("databricks_sql_endpoint", "spark_session")
class TestInsertOverwriteOnSchemaChange(IncrementalOnSchemaChangeIgnoreFail):
@pytest.fixture(scope="class")
def project_config_update(self):
return {
"models": {
"+file_format": "parquet",
"+partition_by": "id",
"+incremental_strategy": "insert_overwrite",
}
}


@pytest.mark.skip_profile("apache_spark", "spark_session")
class TestDeltaOnSchemaChange(BaseIncrementalOnSchemaChangeSetup):
@pytest.fixture(scope="class")
def project_config_update(self):
return {
"models": {
"+file_format": "delta",
"+incremental_strategy": "merge",
"+unique_key": "id",
}
}

def run_incremental_sync_all_columns(self, project):
select = "model_a incremental_sync_all_columns incremental_sync_all_columns_target"
compare_source = "incremental_sync_all_columns"
compare_target = "incremental_sync_all_columns_target"
run_dbt(["run", "--models", select, "--full-refresh"])
# Delta Lake doesn"t support removing columns -- show a nice compilation error
results = run_dbt(["run", "--models", select], expect_pass = False)
assert "Compilation Error" in results[1].message

def run_incremental_sync_remove_only(self, project):
select = "model_a incremental_sync_remove_only incremental_sync_remove_only_target"
compare_source = "incremental_sync_remove_only"
compare_target = "incremental_sync_remove_only_target"
run_dbt(["run", "--models", select, "--full-refresh"])
# Delta Lake doesn"t support removing columns -- show a nice compilation error
results = run_dbt(["run", "--models", select], expect_pass = False)
assert "Compilation Error" in results[1].message

def test_run_incremental_append_new_columns(self, project):
# only adding new columns in supported
self.run_incremental_append_new_columns(project)
# handling columns that have been removed doesn"t work on Delta Lake today
# self.run_incremental_append_new_columns_remove_one(project)

def test_run_incremental_sync_all_columns(self, project):
self.run_incremental_sync_all_columns(project)
self.run_incremental_sync_remove_only(project)

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

22 changes: 0 additions & 22 deletions tests/integration/incremental_on_schema_change/models/model_a.sql

This file was deleted.

Loading

0 comments on commit 34144d7

Please sign in to comment.