from dataclasses import dataclass import pandas as pd import pytest from components.datagrid_new.components.DataGrid import DataGrid from core.Expando import Expando from core.settings_management import SettingsManager, MemoryDbEngine from utils.Datahelper import DataHelper TEST_GRID_ID = "testing_grid_id" TEST_GRID_KEY = ("RepoName", "TableName") @pytest.fixture() def settings_manager(): return SettingsManager(MemoryDbEngine()) @pytest.fixture() def datagrid(session, settings_manager): dg = DataGrid(session, _id=TEST_GRID_ID, settings_manager=settings_manager, key=TEST_GRID_KEY, boundaries={"height": 500, "width": 800}) df = pd.DataFrame({ 'Name': ['Alice', 'Bob'], 'Age': [20, 25], 'Is Student': [True, False], }) dg.init_from_dataframe(df, save_state=True) return dg def test_i_can_get_data_as_dataframe(session, settings_manager, datagrid): res = DataHelper.get(session, settings_manager, "RepoName", "TableName") assert isinstance(res, pd.DataFrame) assert res.equals(datagrid.get_dataframe()) def test_i_can_get_data_as_dataclass(session, settings_manager, datagrid): @dataclass class DataclassTestClass: name: str age: int is_student: bool res = DataHelper.get(session, settings_manager, "RepoName", "TableName", DataclassTestClass) assert isinstance(res, list) assert res == [ DataclassTestClass("Alice", 20, True), DataclassTestClass("Bob", 25, False), ] def test_i_can_get_data_as_expando(session, settings_manager, datagrid): res = DataHelper.get(session, settings_manager, "RepoName", "TableName", Expando) assert isinstance(res, list) assert res == [ Expando({"name": "Alice", "age": 20, "is_student": True}), Expando({"name": "Bob", "age": 25, "is_student": False}) ]