Skip to content

Commit 947c77f

Browse files
committed
Unit tests for csv dir store
Signed-off-by: Bram Stoeller <bram.stoeller@alliander.com>
1 parent d2c1530 commit 947c77f

File tree

4 files changed

+64
-5
lines changed

4 files changed

+64
-5
lines changed

src/power_grid_model_io/data_stores/csv_dir_store.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import pandas as pd
1212

1313
from power_grid_model_io.data_stores.base_data_store import BaseDataStore
14-
from power_grid_model_io.data_types import TabularData
14+
from power_grid_model_io.data_types import LazyDataFrame, TabularData
1515

1616

1717
class CsvDirStore(BaseDataStore[TabularData]):
@@ -41,7 +41,7 @@ def csv_loader():
4141

4242
return csv_loader
4343

44-
data: Dict[str, Callable[[], pd.DataFrame]] = {}
44+
data: Dict[str, LazyDataFrame] = {}
4545
for path in self._dir_path.glob("*.csv"):
4646
data[path.stem] = lazy_csv_loader(path)
4747

src/power_grid_model_io/data_stores/excel_file_store.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
import pandas as pd
1313

1414
from power_grid_model_io.data_stores.base_data_store import BaseDataStore
15-
from power_grid_model_io.data_types import TabularData
16-
from power_grid_model_io.data_types.tabular_data import LazyDataFrame
15+
from power_grid_model_io.data_types import LazyDataFrame, TabularData
1716

1817

1918
class ExcelFileStore(BaseDataStore[TabularData]):

src/power_grid_model_io/data_types/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
"""
77

88
from power_grid_model_io.data_types._data_types import ExtraInfo, ExtraInfoLookup, StructuredData
9-
from power_grid_model_io.data_types.tabular_data import TabularData
9+
from power_grid_model_io.data_types.tabular_data import LazyDataFrame, TabularData
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# SPDX-FileCopyrightText: 2022 Contributors to the Power Grid Model project <dynamic.grid.calculation@alliander.com>
2+
#
3+
# SPDX-License-Identifier: MPL-2.0
4+
5+
import tempfile
6+
from pathlib import Path
7+
from unittest.mock import MagicMock, patch
8+
9+
import pandas as pd
10+
import pytest
11+
12+
from power_grid_model_io.data_stores.csv_dir_store import CsvDirStore
13+
from power_grid_model_io.data_types import TabularData
14+
15+
16+
@pytest.fixture()
17+
def temp_dir():
18+
with tempfile.TemporaryDirectory() as tmp:
19+
yield Path(tmp).resolve()
20+
21+
22+
def touch(file_path: Path):
23+
open(file_path, "wb").close()
24+
25+
26+
@patch("power_grid_model_io.data_stores.csv_dir_store.pd.read_csv")
27+
def test_load(mock_read_csv: MagicMock, temp_dir: Path):
28+
# Arrange
29+
foo_data = MagicMock()
30+
bar_data = MagicMock()
31+
touch(temp_dir / "foo.csv")
32+
touch(temp_dir / "bar.csv")
33+
mock_read_csv.side_effect = (foo_data, bar_data)
34+
csv_dir = CsvDirStore(temp_dir, bla=True)
35+
36+
# Act
37+
csv_data = csv_dir.load()
38+
39+
# Assert
40+
mock_read_csv.assert_not_called() # The csv data is not yet loaded
41+
assert csv_data["foo"] == foo_data
42+
assert csv_data["bar"] == bar_data
43+
mock_read_csv.assert_any_call(filepath_or_buffer=temp_dir / "foo.csv", header=[0], bla=True)
44+
mock_read_csv.assert_any_call(filepath_or_buffer=temp_dir / "bar.csv", header=[0], bla=True)
45+
46+
47+
@patch("power_grid_model_io.data_stores.csv_dir_store.pd.DataFrame.to_csv")
48+
def test_save(mock_to_csv: MagicMock, temp_dir):
49+
# Arrange
50+
foo_data = pd.DataFrame()
51+
bar_data = pd.DataFrame()
52+
data = TabularData(foo=foo_data, bar=bar_data)
53+
csv_dir = CsvDirStore(temp_dir, bla=True)
54+
55+
# Act
56+
csv_dir.save(data)
57+
58+
# Assert
59+
mock_to_csv.assert_any_call(path_or_buf=temp_dir / "foo.csv", bla=True)
60+
mock_to_csv.assert_any_call(path_or_buf=temp_dir / "bar.csv", bla=True)

0 commit comments

Comments
 (0)