Skip to content

Commit 622a378

Browse files
ibdafnagaborbernat
authored andcommitted
add more backend python tests
Signed-off-by: Itay Dafna <[email protected]>
1 parent 1fd1971 commit 622a378

File tree

1 file changed

+86
-4
lines changed

1 file changed

+86
-4
lines changed

tests/test_datagrid.py

Lines changed: 86 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,21 @@
44
from ipydatagrid import DataGrid
55

66

7+
@pytest.fixture
8+
def dataframe() -> None:
9+
return pd.DataFrame(
10+
data={"A": [1, 2, 3], "B": [4, 5, 6]}, index=["One", "Two", "Three"]
11+
)
12+
13+
14+
@pytest.fixture
15+
def datagrid(dataframe) -> None:
16+
return DataGrid(dataframe)
17+
18+
719
@pytest.mark.parametrize("clear", [True, False])
8-
def test_selections(clear: bool) -> None:
9-
df = pd.DataFrame(data={"A": [1, 2, 3], "B": [4, 5, 6]})
10-
layout = {"height": "100px"}
11-
grid = DataGrid(df, selection_mode="cell", layout=layout, editable=True)
20+
def test_selections(clear: bool, dataframe: pd.DataFrame) -> None:
21+
grid = DataGrid(dataframe, selection_mode="cell", editable=True)
1222
grid.select(1, 0, 2, 1) # Select 1A to 2B
1323
if clear:
1424
grid.clear_selection()
@@ -20,3 +30,75 @@ def test_selections(clear: bool) -> None:
2030
{"c": 0, "r": 2},
2131
{"c": 1, "r": 2},
2232
]
33+
34+
35+
def test_data_getter(dataframe) -> None:
36+
grid = DataGrid(dataframe)
37+
assert grid.data.equals(dataframe)
38+
39+
40+
def test_data_setter(dataframe) -> None:
41+
grid = DataGrid(dataframe)
42+
new_df = pd.DataFrame(data={"A": [0, 0, 0], "B": [4, 5, 6]})
43+
grid.data = new_df
44+
assert grid.data.equals(new_df)
45+
46+
47+
def test_get_cell_value(datagrid: DataGrid) -> None:
48+
cell = datagrid.get_cell_value("B", "Three")
49+
assert cell == [6]
50+
51+
52+
def test_set_cell_value() -> None:
53+
""" Cannot be tested without a running front end """
54+
pass
55+
56+
57+
def get_cell_value_by_index(datagrid: DataGrid) -> None:
58+
cell = datagrid.get_cell_value_by_index("B", 1)
59+
assert cell == [5]
60+
61+
62+
def test_set_cell_value_by_index() -> None:
63+
""" Cannot be tested without a running front end """
64+
pass
65+
66+
67+
@pytest.mark.parametrize("invalid_index", [True, False])
68+
def test_column_name_to_index(invalid_index: bool, datagrid: DataGrid) -> None:
69+
if invalid_index:
70+
assert datagrid._column_name_to_index("Z") is None
71+
else:
72+
assert datagrid._column_name_to_index("A") == 0
73+
74+
75+
@pytest.mark.parametrize("invalid_index", [True, False])
76+
def test_column_index_to_name(invalid_index: bool, datagrid: DataGrid) -> None:
77+
if invalid_index:
78+
assert datagrid._column_index_to_name(4) is None
79+
else:
80+
assert datagrid._column_index_to_name(1) == "B"
81+
82+
83+
def test_get_col_headers(datagrid) -> None:
84+
assert datagrid._get_col_headers() == ["A", "B"]
85+
86+
87+
@pytest.mark.parametrize("invalid_prim_key", [True, False])
88+
def test_get_row_index_of_primary_key(
89+
invalid_prim_key: bool, datagrid: DataGrid
90+
) -> None:
91+
if invalid_prim_key:
92+
assert datagrid._get_row_index_of_primary_key("Nay") == []
93+
else:
94+
assert datagrid._get_row_index_of_primary_key("Two") == [1]
95+
96+
97+
@pytest.mark.parametrize("invalid_coords", [True, False])
98+
def test_get_cell_value_by_numerical_index(
99+
invalid_coords: bool, datagrid: DataGrid
100+
) -> None:
101+
if invalid_coords:
102+
assert datagrid._get_cell_value_by_numerical_index(2, 2) is None
103+
else:
104+
assert datagrid._get_cell_value_by_numerical_index(1, 0) == 4

0 commit comments

Comments
 (0)