import pytest from pandas import DataFrame from myfasthtml.controls.DataGrid import DataGrid, DatagridConf from myfasthtml.controls.DataGridsManager import DataGridsManager from myfasthtml.controls.TabsManager import TabsManager from myfasthtml.core.data.DataServicesManager import DataServicesManager from myfasthtml.core.instances import SingleInstance, InstancesManager class RootInstanceForTests(SingleInstance): def __init__(self, session): super().__init__(None, session, _id="TestRoot") @pytest.fixture(scope="session") def session(): return { "user_info": { 'email': 'test@myfasthtml.com', 'username': 'test_user', 'roles': ['admin'], 'user_settings': {}, 'id': 'test_user_id', 'created_at': '2025-11-10T15:52:59.006213', 'updated_at': '2025-11-10T15:52:59.006213' } } @pytest.fixture(scope="session") def root_instance(session): InstancesManager.reset() return RootInstanceForTests(session=session) @pytest.fixture def datagrids_manager(root_instance): return DataGridsManager(root_instance) @pytest.fixture def dataservices_manager(root_instance): return InstancesManager.get_by_type(root_instance._session, DataServicesManager) def get_data_grid(root_instance, df: DataFrame, table_name: str = "test.grid1", save_state: bool = False): TabsManager(root_instance) # just define it dgm = DataGridsManager(root_instance) dsm = InstancesManager.get_by_type(root_instance._session, DataServicesManager) data_service = dsm.create_service(table_name, save_state=save_state) data_service.load_dataframe(df) grid_id = DataGrid.get_grid_id_from_data_service_id(data_service.get_id()) namespace, table_name = table_name.split(".") conf = DatagridConf(namespace=namespace, name=table_name) return DataGrid(dgm, conf=conf, save_state=save_state, _id=grid_id)