def test_df_to_sql_if_exists_replace_with_schema(mock_upload_to_s3, mock_g): config = app.config.copy() app.config["CSV_TO_HIVE_UPLOAD_DIRECTORY_FUNC"]: lambda *args: "" mock_upload_to_s3.return_value = "mock-location" mock_g.user = True mock_database = mock.MagicMock() mock_database.get_df.return_value.empty = False mock_execute = mock.MagicMock(return_value=True) mock_database.get_sqla_engine.return_value.execute = mock_execute table_name = "foobar" schema = "schema" with app.app_context(): HiveEngineSpec.df_to_sql( mock_database, Table(table=table_name, schema=schema), pd.DataFrame(), { "if_exists": "replace", "header": 1, "na_values": "mock", "sep": "mock" }, ) mock_execute.assert_any_call(f"DROP TABLE IF EXISTS {schema}.{table_name}") app.config = config
def test_df_to_sql_if_exists_fail(mock_g): mock_g.user = True mock_database = mock.MagicMock() mock_database.get_df.return_value.empty = False with pytest.raises(SupersetException, match="Table already exists"): HiveEngineSpec.df_to_sql(mock_database, Table("foobar"), pd.DataFrame(), {"if_exists": "fail"})
def test_df_to_csv() -> None: with pytest.raises(SupersetException): HiveEngineSpec.df_to_sql( mock.MagicMock(), Table("foobar"), pd.DataFrame(), {"if_exists": "append"}, )
def test_df_to_sql_if_exists_replace(mock_upload_to_s3, mock_g): mock_upload_to_s3.return_value = "mock-location" mock_g.user = True mock_database = mock.MagicMock() mock_database.get_df.return_value.empty = False mock_execute = mock.MagicMock(return_value=True) mock_database.get_sqla_engine.return_value.execute = mock_execute table_name = "foobar" HiveEngineSpec.df_to_sql( mock_database, Table(table=table_name), pd.DataFrame(), { "if_exists": "replace", "header": 1, "na_values": "mock", "sep": "mock" }, ) mock_execute.assert_any_call(f"DROP TABLE IF EXISTS {table_name}")