mirror of
https://github.com/apache/superset.git
synced 2026-04-19 16:14:52 +00:00
refactor(example_data): replace the way the birth_names data is loaded to DB (#18060)
* refactor: replace the way the birth_names data is loaded to DB * fix failed unit test * fix failed unit test * fix failed tests * fix pass wrong flag of support datetime type * remove unused fixture
This commit is contained in:
@@ -14,19 +14,23 @@
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
# isort:skip_file
|
||||
from __future__ import annotations
|
||||
|
||||
import functools
|
||||
from typing import Any
|
||||
from typing import Any, Callable, Generator, Optional, TYPE_CHECKING
|
||||
from unittest.mock import patch
|
||||
|
||||
import pytest
|
||||
from sqlalchemy.engine import Engine
|
||||
from unittest.mock import patch
|
||||
|
||||
from tests.integration_tests.test_app import app
|
||||
from superset import db
|
||||
from superset.extensions import feature_flag_manager
|
||||
from superset.utils.core import json_dumps_w_dates
|
||||
from superset.utils.database import get_example_database
|
||||
from superset.utils.database import get_example_database, remove_database
|
||||
from tests.integration_tests.test_app import app
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from superset.connectors.sqla.models import Database
|
||||
|
||||
CTAS_SCHEMA_NAME = "sqllab_test_db"
|
||||
ADMIN_SCHEMA_NAME = "admin_database"
|
||||
@@ -82,6 +86,36 @@ def drop_from_schema(engine: Engine, schema_name: str):
|
||||
engine.execute(f"DROP VIEW IF EXISTS {schema_name}.{tv[0]}")
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def example_db_provider() -> Callable[[], Database]: # type: ignore
|
||||
class _example_db_provider:
|
||||
_db: Optional[Database] = None
|
||||
|
||||
def __call__(self) -> Database:
|
||||
with app.app_context():
|
||||
if self._db is None:
|
||||
self._db = get_example_database()
|
||||
self._load_lazy_data_to_decouple_from_session()
|
||||
|
||||
return self._db
|
||||
|
||||
def _load_lazy_data_to_decouple_from_session(self) -> None:
|
||||
self._db.get_sqla_engine() # type: ignore
|
||||
self._db.backend # type: ignore
|
||||
|
||||
def remove(self) -> None:
|
||||
if self._db:
|
||||
with app.app_context():
|
||||
remove_database(self._db)
|
||||
|
||||
_instance = _example_db_provider()
|
||||
|
||||
yield _instance
|
||||
|
||||
# TODO - can not use it until referenced objects will be deleted.
|
||||
# _instance.remove()
|
||||
|
||||
|
||||
def setup_presto_if_needed():
|
||||
backend = app.config["SQLALCHEMY_EXAMPLES_URI"].split("://")[0]
|
||||
database = get_example_database()
|
||||
|
||||
Reference in New Issue
Block a user