Skip to content
Snippets Groups Projects
Commit cbad232e authored by Conor Finn's avatar Conor Finn
Browse files

RE #27778 Fix and add presenter tests

parent 7617f4f6
No related merge requests found
...@@ -67,11 +67,10 @@ class FittingDataPresenter(object): ...@@ -67,11 +67,10 @@ class FittingDataPresenter(object):
self._emit_enable_button_signal() self._emit_enable_button_signal()
def _on_worker_success(self, _): def _on_worker_success(self, _):
self.view.remove_all() self._remove_all_table_rows()
self.row_numbers = {} self.row_numbers = {}
for i, name in enumerate(self.get_loaded_workspaces()): for i, name in enumerate(self.get_loaded_workspaces()):
self.row_numbers[name] = i self._add_row_to_table(name, i)
self._add_row_to_table(name)
def _enable_load_button(self, enabled): def _enable_load_button(self, enabled):
self.view.set_load_button_enabled(enabled) self.view.set_load_button_enabled(enabled)
...@@ -97,12 +96,12 @@ class FittingDataPresenter(object): ...@@ -97,12 +96,12 @@ class FittingDataPresenter(object):
return False return False
return True return True
def _add_row_to_table(self, ws_name): def _add_row_to_table(self, ws_name, row):
words = ws_name.split("_") words = ws_name.split("_")
if len(words) == 4 and words[2] == "bank": if len(words) == 4 and words[2] == "bank":
self.view.add_table_row(words[1], words[3]) self.view.add_table_row(words[1], words[3])
self.row_numbers[ws_name] = row
else: else:
self.remove_workspace(ws_name)
logger.warning( logger.warning(
"The workspace '{}' was not in the correct naming format. Files should be named in the following way: " "The workspace '{}' was not in the correct naming format. Files should be named in the following way: "
"INSTRUMENT_RUNNUMBER_bank_BANK.".format(ws_name) "INSTRUMENT_RUNNUMBER_bank_BANK.".format(ws_name)
......
...@@ -32,7 +32,8 @@ class FittingDataPresenterTest(unittest.TestCase): ...@@ -32,7 +32,8 @@ class FittingDataPresenterTest(unittest.TestCase):
mock_worker.assert_called_with("mocked model method", mock_worker.assert_called_with("mocked model method",
("/a/file/to/load.txt, /another/one.nxs",), ("/a/file/to/load.txt, /another/one.nxs",),
error_cb=self.presenter._on_worker_error, error_cb=self.presenter._on_worker_error,
finished_cb=self.presenter._emit_enable_button_signal) finished_cb=self.presenter._emit_enable_button_signal,
success_cb=self.presenter._on_worker_success)
@patch(dir_path + ".data_presenter.create_error_message") @patch(dir_path + ".data_presenter.create_error_message")
@patch(dir_path + ".data_presenter.AsyncTask") @patch(dir_path + ".data_presenter.AsyncTask")
...@@ -68,61 +69,96 @@ class FittingDataPresenterTest(unittest.TestCase): ...@@ -68,61 +69,96 @@ class FittingDataPresenterTest(unittest.TestCase):
self.assertEqual(1, self.view.sig_enable_load_button.emit.call_count) self.assertEqual(1, self.view.sig_enable_load_button.emit.call_count)
self.view.sig_enable_load_button.emit.called_with(True) self.view.sig_enable_load_button.emit.called_with(True)
def test_worker_success_valid_filename(self):
model_dict = {"ENGINX_1_bank_1": "ws1", "ENGINX_2_bank_South": "ws2"}
self.model.get_loaded_workspaces.return_value = model_dict
self.presenter._on_worker_success("info")
self.assertEqual(1, self.view.remove_all.call_count)
self.view.add_table_row.assert_any_call("1", "1")
self.view.add_table_row.assert_any_call("2", "South")
@patch(dir_path + ".data_presenter.logger")
def test_worker_success_invalid_filename(self, mock_logger):
model_dict = {"invalid": "ws1", "invalid2": "ws2"}
self.model.get_loaded_workspaces.return_value = model_dict
self.presenter._on_worker_success("info")
self.assertEqual(1, self.view.remove_all.call_count)
self.assertEqual(0, self.view.add_table_row.call_count)
self.assertEqual(2, mock_logger.warning.call_count)
def test_remove_workspace_tracked(self): def test_remove_workspace_tracked(self):
model_dict = {"name1": "ws1", "name2": "ws2"} model_dict = {"name1": "ws1", "name2": "ws2"}
self.model.get_loaded_workspaces.return_value = model_dict self.model.get_loaded_workspaces.return_value = model_dict
self.presenter.row_numbers = {"name1": 0, "name2": 1}
self.presenter.remove_workspace("name1") self.presenter.remove_workspace("name1")
self.assertEqual({"name2": "ws2"}, model_dict) self.assertEqual({"name2": "ws2"}, model_dict)
self.assertEqual({"name2": 1}, self.presenter.row_numbers)
def test_remove_workspace_not_tracked(self): def test_remove_workspace_not_tracked(self):
model_dict = {"name1": "ws1", "name2": "ws2"} model_dict = {"name1": "ws1", "name2": "ws2"}
self.model.get_loaded_workspaces.return_value = model_dict self.model.get_loaded_workspaces.return_value = model_dict
self.presenter.row_numbers = {"name1": 0, "name2": 1}
self.presenter.remove_workspace("name3") self.presenter.remove_workspace("name3")
self.assertEqual({"name1": "ws1", "name2": "ws2"}, model_dict) self.assertEqual({"name1": "ws1", "name2": "ws2"}, model_dict)
self.assertEqual({"name1": 0, "name2": 1}, self.presenter.row_numbers)
def test_rename_workspace_tracked(self): def test_rename_workspace_tracked(self):
model_dict = {"name1": "ws1", "name2": "ws2"} model_dict = {"name1": "ws1", "name2": "ws2"}
self.model.get_loaded_workspaces.return_value = model_dict self.model.get_loaded_workspaces.return_value = model_dict
self.presenter.row_numbers = {"name1": 0, "name2": 1}
self.presenter.rename_workspace("name1", "new") self.presenter.rename_workspace("name1", "new")
self.assertEqual({"new": "ws1", "name2": "ws2"}, model_dict) self.assertEqual({"new": "ws1", "name2": "ws2"}, model_dict)
self.assertEqual({"new": 0, "name2": 1}, self.presenter.row_numbers)
def test_rename_workspace_not_tracked(self): def test_rename_workspace_not_tracked(self):
model_dict = {"name1": "ws1", "name2": "ws2"} model_dict = {"name1": "ws1", "name2": "ws2"}
self.model.get_loaded_workspaces.return_value = model_dict self.model.get_loaded_workspaces.return_value = model_dict
self.presenter.row_numbers = {"name1": 0, "name2": 1}
self.presenter.rename_workspace("name3", "new") self.presenter.rename_workspace("name3", "new")
self.assertEqual({"name1": "ws1", "name2": "ws2"}, model_dict) self.assertEqual({"name1": "ws1", "name2": "ws2"}, model_dict)
self.assertEqual({"name1": 0, "name2": 1}, self.presenter.row_numbers)
def test_clear_workspaces(self): def test_clear_workspaces(self):
model_dict = {"name1": "ws1", "name2": "ws2"} model_dict = {"name1": "ws1", "name2": "ws2"}
self.model.get_loaded_workspaces.return_value = model_dict self.model.get_loaded_workspaces.return_value = model_dict
self.presenter.row_numbers = {"name1": 0, "name2": 1}
self.presenter.clear_workspaces() self.presenter.clear_workspaces()
self.assertEqual({}, model_dict) self.assertEqual({}, model_dict)
self.assertEqual({}, self.presenter.row_numbers)
def test_replace_workspace_tracked(self): def test_replace_workspace_tracked(self):
model_dict = {"name1": "ws1", "name2": "ws2"} model_dict = {"name1": "ws1", "name2": "ws2"}
self.model.get_loaded_workspaces.return_value = model_dict self.model.get_loaded_workspaces.return_value = model_dict
self.presenter.row_numbers = {"name1": 0, "name2": 1}
self.presenter.replace_workspace("name1", "new") self.presenter.replace_workspace("name1", "new")
self.assertEqual({"name1": "new", "name2": "ws2"}, model_dict) self.assertEqual({"name1": "new", "name2": "ws2"}, model_dict)
self.assertEqual({"name1": 0, "name2": 1}, self.presenter.row_numbers)
def test_replace_workspace_not_tracked(self): def test_replace_workspace_not_tracked(self):
model_dict = {"name1": "ws1", "name2": "ws2"} model_dict = {"name1": "ws1", "name2": "ws2"}
self.model.get_loaded_workspaces.return_value = model_dict self.model.get_loaded_workspaces.return_value = model_dict
self.presenter.row_numbers = {"name1": 0, "name2": 1}
self.presenter.replace_workspace("name3", "new") self.presenter.replace_workspace("name3", "new")
self.assertEqual({"name1": "ws1", "name2": "ws2"}, model_dict) self.assertEqual({"name1": "ws1", "name2": "ws2"}, model_dict)
self.assertEqual({"name1": 0, "name2": 1}, self.presenter.row_numbers)
if __name__ == '__main__': if __name__ == '__main__':
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment