1515from power_grid_model_io .data_stores .excel_file_store import ExcelFileStore
1616from power_grid_model_io .data_types .tabular_data import TabularData
1717
18- from ...utils import assert_log_exists
18+ from ...utils import MockExcelFile , assert_log_exists
1919
2020PandasExcelData = Dict [str , pd .DataFrame ]
2121
@@ -103,55 +103,57 @@ def test_files__read_only():
103103
104104@patch ("power_grid_model_io.data_stores.excel_file_store.ExcelFileStore._handle_duplicate_columns" )
105105@patch ("power_grid_model_io.data_stores.excel_file_store.ExcelFileStore._remove_unnamed_column_placeholders" )
106- @patch ("power_grid_model_io.data_stores.excel_file_store.Path.open" , mock_open ())
107- @patch ("power_grid_model_io.data_stores.excel_file_store.pd.read_excel" )
106+ @patch ("power_grid_model_io.data_stores.excel_file_store.pd.ExcelFile" )
108107def test_load (
109- mock_read_excel : MagicMock ,
108+ mock_excel_file : MagicMock ,
110109 mock_remove_unnamed_column_placeholders : MagicMock ,
111110 mock_handle_duplicate_columns : MagicMock ,
112111 objects_excel : PandasExcelData ,
113112):
114- # Arrange
115113 fs = ExcelFileStore (file_path = Path ("input_data.xlsx" ))
116- mock_read_excel .return_value = objects_excel
114+ mock_excel_file .return_value = MockExcelFile ( objects_excel )
117115 mock_remove_unnamed_column_placeholders .side_effect = noop
118116 mock_handle_duplicate_columns .side_effect = noop
119117
120118 # Act
121119 data = fs .load ()
122120
123121 # Assert
124- mock_read_excel .assert_called_once ()
122+ mock_excel_file .assert_called_once ()
123+ pd .testing .assert_frame_equal (data ["Nodes" ], objects_excel ["Nodes" ])
124+ pd .testing .assert_frame_equal (data ["Lines" ], objects_excel ["Lines" ])
125125 assert mock_remove_unnamed_column_placeholders .call_args_list [0 ] == call (data = objects_excel ["Nodes" ])
126126 assert mock_remove_unnamed_column_placeholders .call_args_list [1 ] == call (data = objects_excel ["Lines" ])
127127 assert mock_handle_duplicate_columns .call_args_list [0 ] == call (data = objects_excel ["Nodes" ], sheet_name = "Nodes" )
128128 assert mock_handle_duplicate_columns .call_args_list [1 ] == call (data = objects_excel ["Lines" ], sheet_name = "Lines" )
129- pd .testing .assert_frame_equal (data ["Nodes" ], objects_excel ["Nodes" ])
130- pd .testing .assert_frame_equal (data ["Lines" ], objects_excel ["Lines" ])
131129
132130
133131@patch ("power_grid_model_io.data_stores.excel_file_store.ExcelFileStore._handle_duplicate_columns" )
134132@patch ("power_grid_model_io.data_stores.excel_file_store.ExcelFileStore._remove_unnamed_column_placeholders" )
135- @patch ("power_grid_model_io.data_stores.excel_file_store.Path.open" , mock_open ())
136- @patch ("power_grid_model_io.data_stores.excel_file_store.pd.read_excel" )
133+ @patch ("power_grid_model_io.data_stores.excel_file_store.pd.ExcelFile" )
137134def test_load__extra (
138- mock_read_excel : MagicMock ,
135+ mock_excel_file : MagicMock ,
139136 mock_remove_unnamed_column_placeholders : MagicMock ,
140137 mock_handle_duplicate_columns : MagicMock ,
141138 objects_excel : PandasExcelData ,
142139 specs_excel : PandasExcelData ,
143140):
141+
144142 # Arrange
145143 fs = ExcelFileStore (Path ("input_data.xlsx" ), foo = Path ("foo_types.xlsx" ))
146- mock_read_excel .side_effect = (objects_excel , specs_excel )
144+ mock_excel_file .side_effect = (MockExcelFile ( objects_excel ), MockExcelFile ( specs_excel ) )
147145 mock_remove_unnamed_column_placeholders .side_effect = noop
148146 mock_handle_duplicate_columns .side_effect = noop
149147
150148 # Act
151149 data = fs .load ()
152150
153151 # Assert
154- assert mock_read_excel .call_count == 2
152+ assert mock_excel_file .call_count == 2
153+ pd .testing .assert_frame_equal (data ["Nodes" ], objects_excel ["Nodes" ])
154+ pd .testing .assert_frame_equal (data ["Lines" ], objects_excel ["Lines" ])
155+ pd .testing .assert_frame_equal (data ["foo.Colors" ], specs_excel ["Colors" ])
156+ pd .testing .assert_frame_equal (data ["foo.Lines" ], specs_excel ["Lines" ])
155157 assert mock_remove_unnamed_column_placeholders .call_args_list [0 ] == call (data = objects_excel ["Nodes" ])
156158 assert mock_remove_unnamed_column_placeholders .call_args_list [1 ] == call (data = objects_excel ["Lines" ])
157159 assert mock_remove_unnamed_column_placeholders .call_args_list [2 ] == call (data = specs_excel ["Colors" ])
@@ -160,26 +162,21 @@ def test_load__extra(
160162 assert mock_handle_duplicate_columns .call_args_list [1 ] == call (data = objects_excel ["Lines" ], sheet_name = "Lines" )
161163 assert mock_handle_duplicate_columns .call_args_list [2 ] == call (data = specs_excel ["Colors" ], sheet_name = "Colors" )
162164 assert mock_handle_duplicate_columns .call_args_list [3 ] == call (data = specs_excel ["Lines" ], sheet_name = "Lines" )
163- pd .testing .assert_frame_equal (data ["Nodes" ], objects_excel ["Nodes" ])
164- pd .testing .assert_frame_equal (data ["Lines" ], objects_excel ["Lines" ])
165- pd .testing .assert_frame_equal (data ["foo.Colors" ], specs_excel ["Colors" ])
166- pd .testing .assert_frame_equal (data ["foo.Lines" ], specs_excel ["Lines" ])
167165
168166
169167@patch ("power_grid_model_io.data_stores.excel_file_store.ExcelFileStore._handle_duplicate_columns" )
170168@patch ("power_grid_model_io.data_stores.excel_file_store.ExcelFileStore._remove_unnamed_column_placeholders" )
171- @patch ("power_grid_model_io.data_stores.excel_file_store.Path.open" , mock_open ())
172- @patch ("power_grid_model_io.data_stores.excel_file_store.pd.read_excel" )
169+ @patch ("power_grid_model_io.data_stores.excel_file_store.pd.ExcelFile" )
173170def test_load__extra__duplicate_sheet_name (
174- mock_read_excel : MagicMock ,
171+ mock_excel_file : MagicMock ,
175172 mock_remove_unnamed_column_placeholders : MagicMock ,
176173 mock_handle_duplicate_columns : MagicMock ,
177174):
178175 # Arrange
179176 foo_data = {"bar.Nodes" : pd .DataFrame ()}
180177 bar_data = {"Nodes" : pd .DataFrame ()}
181178 fs = ExcelFileStore (Path ("foo.xlsx" ), bar = Path ("bar.xlsx" ))
182- mock_read_excel .side_effect = (foo_data , bar_data )
179+ mock_excel_file .side_effect = (MockExcelFile ( foo_data ), MockExcelFile ( bar_data ) )
183180 mock_remove_unnamed_column_placeholders .side_effect = noop
184181 mock_handle_duplicate_columns .side_effect = noop
185182
0 commit comments