59 lines
1.8 KiB
Python
59 lines
1.8 KiB
Python
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)
|