I can run simple workflow
This commit is contained in:
66
tests/test_data_helper.py
Normal file
66
tests/test_data_helper.py
Normal file
@@ -0,0 +1,66 @@
|
||||
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})
|
||||
]
|
||||
|
||||
75
tests/test_expando.py
Normal file
75
tests/test_expando.py
Normal file
@@ -0,0 +1,75 @@
|
||||
import pytest
|
||||
|
||||
from core.Expando import Expando
|
||||
|
||||
|
||||
def test_i_can_get_properties():
|
||||
props = {"a": 10,
|
||||
"b": {
|
||||
"c": "value",
|
||||
"d": 20
|
||||
}}
|
||||
dynamic = Expando(props)
|
||||
|
||||
assert dynamic.a == 10
|
||||
assert dynamic.b.c == "value"
|
||||
|
||||
with pytest.raises(AttributeError):
|
||||
assert dynamic.unknown == "some_value"
|
||||
|
||||
|
||||
def test_i_can_get():
|
||||
props = {"a": 10,
|
||||
"b": {
|
||||
"c": "value",
|
||||
"d": 20
|
||||
}}
|
||||
dynamic = Expando(props)
|
||||
|
||||
assert dynamic.get("a") == 10
|
||||
assert dynamic.get("b.c") == "value"
|
||||
assert dynamic.get("unknown") is None
|
||||
|
||||
|
||||
def test_i_can_get_from_list():
|
||||
props = {"a": [{"c": "value1", "d": 1}, {"c": "value2", "d": 2}]}
|
||||
dynamic = Expando(props)
|
||||
|
||||
assert dynamic.get("a.c") == ["value1", "value2"]
|
||||
|
||||
|
||||
def test_none_is_returned_when_get_from_list_and_property_does_not_exist():
|
||||
props = {"a": [{"c": "value1", "d": 1},
|
||||
{"a": "value2", "d": 2} # 'c' does not exist in the second row
|
||||
]}
|
||||
dynamic = Expando(props)
|
||||
|
||||
assert dynamic.get("a.c") == ["value1"]
|
||||
|
||||
|
||||
def test_i_can_manage_none_values():
|
||||
props = {"a": 10,
|
||||
"b": None}
|
||||
dynamic = Expando(props)
|
||||
|
||||
assert dynamic.get("b.c") is None
|
||||
|
||||
|
||||
def test_i_can_manage_none_values_in_list():
|
||||
props = {"a": [{"b": {"c": "value"}},
|
||||
{"b": None}
|
||||
]}
|
||||
dynamic = Expando(props)
|
||||
|
||||
assert dynamic.get("a.b.c") == ["value"]
|
||||
|
||||
|
||||
def test_i_can_add_new_properties():
|
||||
props = {"a": 10,
|
||||
"b": 20}
|
||||
dynamic = Expando(props)
|
||||
dynamic["c"] = 30
|
||||
|
||||
assert dynamic.a == 10
|
||||
assert dynamic.b == 20
|
||||
assert dynamic.c == 30
|
||||
Reference in New Issue
Block a user