def test_dbt_hook_get_local_fs_backend(): """Test the correct backend is procured.""" hook = DbtHook() backend = hook.get_backend("", None) assert isinstance(backend, DbtLocalFsBackend)
def test_dbt_hook_pull_dbt_profiles(): """Test dbt hook calls backend correctly.""" hook = DbtHook() hook.backends[("", None)] = FakeBackend() args, kwargs = hook.pull_dbt_profiles("/path/to/profiles", "/path/to/store") assert args == ("/path/to/profiles", "/path/to/store") assert kwargs == {}
def test_dbt_hook_get_target_from_empty_connection(no_user_airflow_conn, database): """Test fetching Airflow connections.""" hook = DbtHook() extra_target = hook.get_target_from_connection(no_user_airflow_conn) assert no_user_airflow_conn in extra_target assert extra_target[no_user_airflow_conn].get("type") == "postgres" assert extra_target[no_user_airflow_conn].get("user") is None assert extra_target[no_user_airflow_conn]["dbname"] == database.dbname
def test_dbt_hook_push_dbt_project(): """Test dbt hook calls backend correctly.""" hook = DbtHook() hook.backends[("", None)] = FakeBackend() args, kwargs = hook.push_dbt_project("/path/to/profiles", "/path/to/store", replace=True, delete_before=True) assert args == ("/path/to/profiles", "/path/to/store") assert kwargs == {"replace": True, "delete_before": True}
def test_dbt_hook_get_target_from_connection(airflow_conns, database): """Test fetching Airflow connections.""" hook = DbtHook() for conn_id in airflow_conns: extra_target = hook.get_target_from_connection(conn_id) assert conn_id in extra_target assert extra_target[conn_id]["type"] == "postgres" assert extra_target[conn_id]["user"] == database.user assert extra_target[conn_id]["password"] == database.password assert extra_target[conn_id]["dbname"] == database.dbname
def test_dbt_hook_get_s3_backend(): """Test the correct backend is procured.""" try: from airflow.providers.amazon.aws.hooks.s3 import S3Hook except ImportError: from airflow.hooks.S3_hook import S3Hook hook = DbtHook() backend = hook.get_backend("s3", "not_aws_default") assert isinstance(backend, DbtS3Backend) assert isinstance(backend.hook, S3Hook) assert backend.hook.aws_conn_id == "not_aws_default"
def dbt_hook(self): """Provides an existing DbtHook or creates one.""" if self._dbt_hook is None: self._dbt_hook = DbtHook() return self._dbt_hook
def hook(): """Provide a DbtHook.""" return DbtHook()
def test_dbt_hook_get_backend_raises_not_implemented(): """Test an error is raised on unsupported backends.""" hook = DbtHook() with pytest.raises(NotImplementedError): backend = hook.get_backend("does not exist", None)
def test_dbt_hook_get_target_from_connection_non_existent(conn_id): """Test None is returned when Airflow connections do not exist.""" hook = DbtHook() assert hook.get_target_from_connection(conn_id) is None