def test_on_rows_removed_updates_view(self): presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(mock.MagicMock()) row_0 = [ '74040', '', '74040', '', '74040', '', '74040', '', '74040', '', '74040', '', 'test_reduction', 'user_file', '1.2', '' ] row_1 = [ '74041', '', '74041', '', '74041', '', '74041', '', '74041', '', '74041', '', 'test_reduction', 'user_file', '1.2', '' ] row_2 = [ '74042', '', '74042', '', '74042', '', '74042', '', '74042', '', '74042', '', 'test_reduction', 'user_file', '1.2', '' ] row_3 = [ '74043', '', '74043', '', '74043', '', '74043', '', '74043', '', '74043', '', 'test_reduction', 'user_file', '1.2', '' ] presenter._table_model.add_table_entry(0, TableIndexModel(*row_0)) presenter._table_model.add_table_entry(1, TableIndexModel(*row_1)) presenter._table_model.add_table_entry(2, TableIndexModel(*row_2)) presenter._table_model.add_table_entry(3, TableIndexModel(*row_3)) presenter.update_view_from_table_model = mock.MagicMock() rows = [0, 2] presenter.on_rows_removed(rows) presenter.update_view_from_table_model.assert_called_once_with()
def test_on_erase_rows_updates_view(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() view.get_selected_rows = mock.MagicMock(return_value=[1, 2]) presenter.set_view(view) test_row_0 = [ 'SANS2D00022024', '', 'SANS2D00022048', '', 'SANS2D00022048', '', '', '', '', '', '', '', 'test_file', '', '1.0', '', '', '', '' ] presenter.on_row_inserted(0, test_row_0) presenter.on_row_inserted(1, test_row_0) presenter.on_row_inserted(2, test_row_0) presenter.update_view_from_table_model = mock.MagicMock() presenter.on_erase_rows() self.assertEqual(presenter._table_model._table_entries[0].to_list(), [ 'SANS2D00022024', '', 'SANS2D00022048', '', 'SANS2D00022048', '', '', '', '', '', '', '', 'test_file', '', '1.0', '', '', '', '' ]) self.assertEqual(presenter._table_model._table_entries[1].to_list(), [ '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' ]) self.assertEqual(presenter._table_model._table_entries[2].to_list(), [ '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' ])
def test_on_erase_rows_clears_rows_from_table_model(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() view.get_selected_rows = mock.MagicMock(return_value=[1, 2]) presenter.set_view(view) test_row_0 = [ 'SANS2D00022024', '', 'SANS2D00022048', '', 'SANS2D00022048', '', '', '', '', '', '', '', 'test_file', '', '1.0', '', '', '', '' ] empty_row = TableModel.create_empty_row() presenter.on_row_inserted(0, test_row_0) presenter.on_row_inserted(1, test_row_0) presenter.on_row_inserted(2, test_row_0) presenter.on_erase_rows() self.assertEqual(presenter._table_model.get_number_of_rows(), 3) self.assertEqual( presenter._table_model.get_table_entry(0).to_list(), test_row_0) empty_row.id = 3 self.assertEqual( presenter._table_model.get_table_entry(1).__dict__, empty_row.__dict__) empty_row.id = 4 self.assertEqual( presenter._table_model.get_table_entry(2).__dict__, empty_row.__dict__)
def test_on_row_removed_removes_correct_row(self): presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(mock.MagicMock()) row_0 = [ '74040', '', '74040', '', '74040', '', '74040', '', '74040', '', '74040', '', 'test_reduction', 'user_file', '1.2', '' ] row_1 = [ '74041', '', '74041', '', '74041', '', '74041', '', '74041', '', '74041', '', 'test_reduction', 'user_file', '1.2', '' ] row_2 = [ '74042', '', '74042', '', '74042', '', '74042', '', '74042', '', '74042', '', 'test_reduction', 'user_file', '1.2', '' ] row_3 = [ '74043', '', '74043', '', '74043', '', '74043', '', '74043', '', '74043', '', 'test_reduction', 'user_file', '1.2', '' ] presenter._table_model.add_table_entry(0, TableIndexModel(*row_0)) presenter._table_model.add_table_entry(1, TableIndexModel(*row_1)) presenter._table_model.add_table_entry(2, TableIndexModel(*row_2)) presenter._table_model.add_table_entry(3, TableIndexModel(*row_3)) rows = [0, 2] presenter.on_rows_removed(rows) self.assertEqual(presenter._table_model.get_number_of_rows(), 2) model_row_0 = presenter._table_model.get_table_entry(0) self.assertEqual(model_row_0, TableIndexModel(*row_1)) model_row_1 = presenter._table_model.get_table_entry(1) self.assertEqual(model_row_1, TableIndexModel(*row_3))
def test_that_period_columns_hidden_when_multi_period_is_false(self): presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(mock.MagicMock()) presenter.on_multiperiod_changed(False) presenter._view.hide_period_columns.assert_called_once_with()
def test_that_all_columns_shown_when_multi_period_is_true(self): presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(mock.MagicMock()) presenter.on_multiperiod_changed(True) presenter._view.show_period_columns.assert_called_once_with()
def test_on_paste_rows_requested_replaces_first_row_and_removes_rest_if_multiple_rows_selected( self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() view.get_selected_rows = mock.MagicMock(return_value=[0, 2]) presenter.set_view(view) test_row_0 = [ 'SANS2D00022024', '', 'SANS2D00022048', '', 'SANS2D00022048', '', '', '', '', '', '', '', 'test_file', '', '1.0', '' ] test_row_1 = [ 'SANS2D00022024', '', '', '', '', '', '', '', '', '', '', '', 'test_file2', '', '1.0', '' ] test_row_2 = [ 'SANS2D00022024', '', '', '', '', '', '', '', '', '', '', '', 'test_file3', '', '1.0', '' ] presenter.on_row_inserted(0, test_row_0) presenter.on_row_inserted(1, test_row_1) presenter.on_row_inserted(2, test_row_2) presenter._clipboard = [test_row_2] presenter.on_paste_rows_requested() self.assertEqual(presenter._table_model.get_number_of_rows(), 2) self.assertEqual( presenter._table_model.get_table_entry(0).to_list(), test_row_2) self.assertEqual( presenter._table_model.get_table_entry(1).to_list(), test_row_1)
def test_on_row_removed_removes_correct_row(self): presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(mock.MagicMock()) row_0 = ['74040', '', '74040', '', '74040', '', '74040', '', '74040', '', '74040', '', 'test_reduction' , 'user_file', '1.2', ''] row_1 = ['74041', '', '74041', '', '74041', '', '74041', '', '74041', '', '74041', '', 'test_reduction' , 'user_file', '1.2', ''] row_2 = ['74042', '', '74042', '', '74042', '', '74042', '', '74042', '', '74042', '', 'test_reduction' , 'user_file', '1.2', ''] row_3 = ['74043', '', '74043', '', '74043', '', '74043', '', '74043', '', '74043', '', 'test_reduction' , 'user_file', '1.2', ''] presenter._table_model.add_table_entry(0, TableIndexModel(*row_0)) presenter._table_model.add_table_entry(1, TableIndexModel(*row_1)) presenter._table_model.add_table_entry(2, TableIndexModel(*row_2)) presenter._table_model.add_table_entry(3, TableIndexModel(*row_3)) rows = [0, 2] expected_row_0 = TableIndexModel(*row_1) expected_row_0.id = 1 expected_row_0.file_finding = True expected_row_1 = TableIndexModel(*row_3) expected_row_1.id = 3 expected_row_1.file_finding = True presenter.on_rows_removed(rows) self.assertEqual(presenter._table_model.get_number_of_rows(), 2) model_row_0 = presenter._table_model.get_table_entry(0) self.assertEqual(model_row_0, expected_row_0) model_row_1 = presenter._table_model.get_table_entry(1) self.assertEqual(model_row_1, expected_row_1)
def test_on_insert_row_adds_row_to_table_model_after_selected_row(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() view.get_selected_rows = mock.MagicMock(return_value=[0]) presenter.set_view(view) test_row_0 = [ 'SANS2D00022024', '', 'SANS2D00022048', '', 'SANS2D00022048', '', '', '', '', '', '', '', 'test_file', '', '1.0', '' ] test_row_1 = [ 'SANS2D00022024', '', '', '', '', '', '', '', '', '', '', '', 'test_file2', '', '1.0', '' ] presenter.on_row_inserted(0, test_row_0) presenter.on_row_inserted(1, test_row_1) presenter.on_insert_row() self.assertEqual(presenter._table_model.get_number_of_rows(), 3) self.assertEqual( presenter._table_model.get_table_entry(1).to_list(), [''] * 16) self.assertEqual( presenter._table_model.get_table_entry(0).to_list(), test_row_0) self.assertEqual( presenter._table_model.get_table_entry(2).to_list(), test_row_1)
def test_that_period_columns_hidden_when_multi_period_is_false(self): presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(mock.MagicMock()) presenter.on_multiperiod_changed(False) presenter._view.hide_period_columns.assert_called_once_with()
def test_that_all_columns_shown_when_multi_period_is_true(self): presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(mock.MagicMock()) presenter.on_multiperiod_changed(True) presenter._view.show_period_columns.assert_called_once_with()
def _get_files_and_mock_presenter(content): batch_file_path = save_to_csv(content) user_file_path = create_user_file(sample_user_file) view, _, _ = create_mock_view(user_file_path, batch_file_path) # We just use the sample_user_file since it exists. view.get_mask_file = mock.MagicMock(return_value=user_file_path) presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(view) return batch_file_path, user_file_path, presenter, view
def test_fails_silently_when_user_file_does_not_exist(self): view, _, _ = create_mock_view("non_existent_user_file") presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(view) try: presenter.on_user_file_load() has_raised = False except: # noqa has_raised = True self.assertFalse(has_raised)
def test_that_process_selected_does_nothing_if_no_states_selected(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() view.get_selected_rows = mock.MagicMock(return_value=[]) presenter.set_view(view) presenter._process_rows = mock.MagicMock() presenter.on_process_selected_clicked() self.assertEqual( presenter._process_rows.call_count, 0, "Expected presenter._process_rows to not have been called. Called {} times.".format( presenter._process_rows.call_count))
def test_setup_instrument_specific_settings(self): presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(mock.MagicMock()) presenter._beam_centre_presenter = mock.MagicMock() presenter._workspace_diagnostic_presenter = mock.MagicMock() instrument = SANSInstrument.LOQ presenter._setup_instrument_specific_settings(SANSInstrument.LOQ) presenter._view.set_instrument_settings.called_once_with(instrument) presenter._beam_centre_presenter.on_update_instrument.called_once_with(instrument) presenter._workspace_diagnostic_presenter.called_once_with(instrument)
def test_notify_progress_increments_progress(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() presenter.set_view(view) test_row_0 = ['SANS2D00022024', '', 'SANS2D00022048', '', 'SANS2D00022048', '', '', '', '', '', '', '', 'test_file', '', '1.0', ''] presenter.on_row_inserted(0, test_row_0) presenter.notify_progress(0, [0.0], [1.0]) self.assertEqual(presenter.progress, 1) self.assertEqual(presenter._view.progress_bar_value, 1)
def test_notify_progress_increments_progress(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() presenter.set_view(view) test_row_0 = [ 'SANS2D00022024', '', 'SANS2D00022048', '', 'SANS2D00022048', '', '', '', '', '', '', '', 'test_file', '', '1.0', '' ] presenter.on_row_inserted(0, test_row_0) presenter.notify_progress(0) self.assertEqual(presenter.progress, 1) self.assertEqual(presenter._view.progress_bar_value, 1)
def test_that_notify_progress_updates_state_and_tooltip_of_row(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() presenter.set_view(view) test_row_0 = ['SANS2D00022024', '', 'SANS2D00022048', '', 'SANS2D00022048', '', '', '', '', '', '', '', 'test_file', '', '1.0', ''] presenter.on_row_inserted(0, test_row_0) presenter.notify_progress(0, [], []) self.assertEqual(presenter._table_model.get_table_entry(0).row_state, RowState.Processed) self.assertEqual(presenter._table_model.get_table_entry(0).tool_tip, '')
def test_that_process_selected_does_nothing_if_no_states_selected(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() view.get_selected_rows = mock.MagicMock(return_value=[]) presenter.set_view(view) presenter._process_rows = mock.MagicMock() presenter.on_process_selected_clicked() self.assertEqual( presenter._process_rows.call_count, 0, "Expected presenter._process_rows to not have been called. Called {} times." .format(presenter._process_rows.call_count))
def test_on_cut_rows_requested_updates_clipboard(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() view.get_selected_rows = mock.MagicMock(return_value=[0]) presenter.set_view(view) test_row = ['SANS2D00022024', '', 'SANS2D00022048', '', 'SANS2D00022048', '', '', '', '', '', '', '', 'test_file', '', '1.0', '', '', '', ''] presenter.on_row_inserted(0, test_row) presenter.on_cut_rows_requested() self.assertEqual(presenter._clipboard, [test_row])
def _get_files_and_mock_presenter(self, content, is_multi_period=True, row_user_file_path = ""): batch_parser = mock.MagicMock() batch_parser.parse_batch_file = mock.MagicMock(return_value=content) self.BatchCsvParserMock.return_value = batch_parser batch_file_path = 'batch_file_path' user_file_path = create_user_file(sample_user_file) view, _, _ = create_mock_view(user_file_path, batch_file_path, row_user_file_path) # We just use the sample_user_file since it exists. view.get_mask_file = mock.MagicMock(return_value=user_file_path) view.is_multi_period_view = mock.MagicMock(return_value=is_multi_period) presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(view) return batch_file_path, user_file_path, presenter, view
def _get_files_and_mock_presenter(self, content, is_multi_period=True, row_user_file_path = ""): batch_parser = mock.MagicMock() batch_parser.parse_batch_file = mock.MagicMock(return_value=content) self.BatchCsvParserMock.return_value = batch_parser batch_file_path = 'batch_file_path' user_file_path = create_user_file(sample_user_file) view, _, _ = create_mock_view(user_file_path, batch_file_path, row_user_file_path) # We just use the sample_user_file since it exists. view.get_mask_file = mock.MagicMock(return_value=user_file_path) view.is_multi_period_view = mock.MagicMock(return_value=is_multi_period) presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(view) return batch_file_path, user_file_path, presenter, view
def test_that_table_not_exported_if_table_is_empty(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() presenter.set_view(view) presenter._export_table = mock.MagicMock() presenter.on_export_table_clicked() self.assertEqual( presenter._export_table.call_count, 0, "_export table should not have been called." " It was called {} times.".format( presenter._export_table.call_count))
def test_on_insert_row_updates_table_model(self): presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(mock.MagicMock()) row = [ '74044', '', '74044', '', '74044', '', '74044', '', '74044', '', '74044', '', 'test_reduction', 'user_file', '1.2', '' ] index = 0 presenter.on_row_inserted(index, row) self.assertEqual(presenter._table_model.get_number_of_rows(), 1) model_row = presenter._table_model.get_table_entry(0) self.assertEqual(model_row, TableIndexModel(*row))
def test_that_process_all_ignores_selected_rows(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() view.get_selected_rows = mock.MagicMock(return_value=[0, 3, 4]) presenter._table_model.get_number_of_rows = mock.MagicMock(return_value=7) presenter.set_view(view) presenter._table_model.reset_row_state = mock.MagicMock() presenter.on_process_all_clicked() self.assertEqual( presenter._table_model.reset_row_state.call_count, 7, "Expected reset_row_state to have been called 7 times. Called {} times.".format( presenter._table_model.reset_row_state.call_count))
def test_batch_file_dir_not_added_to_config_if_batch_file_load_fails(self): presenter = RunTabPresenter(SANSFacility.ISIS) user_file_path = create_user_file(sample_user_file) view, settings_diagnostic_tab, masking_table = create_mock_view( user_file_path, "A/Path/batch_file.csv") presenter.set_view(view) presenter.on_batch_file_load() config_dirs = config["datasearch.directories"] result = "A/Path/" in config_dirs self.assertFalse( result, "We do not expect A/Path/ to be added to config, " "datasearch.directories is now {}".format(config_dirs))
def test_fails_silently_when_user_file_does_not_exist(self): self.os_patcher.stop() view, _, _ = create_mock_view("non_existent_user_file") presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(view) try: presenter.on_user_file_load() has_raised = False except: # noqa has_raised = True self.assertFalse(has_raised) self.os_patcher.start()
def test_add_row_to_table_model_adds_row_to_table_model(self): presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(mock.MagicMock()) parsed_data = BATCH_FILE_TEST_CONTENT_2 for item, row in enumerate(parsed_data): presenter._add_row_to_table_model(row, item) table_entry_0 = presenter._table_model.get_table_entry(0) self.assertEqual(table_entry_0.output_name, 'test_file') self.assertEqual(table_entry_0.sample_scatter, 'SANS2D00022024') self.assertEqual(table_entry_0.sample_thickness, '') table_entry_1 = presenter._table_model.get_table_entry(1) self.assertEqual(table_entry_1.output_name, 'test_file2')
def test_that_checks_default_user_file(self): # Setup presenter and mock view view, settings_diagnostic_tab, _ = create_mock_view("") presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(view) self.assertEqual( presenter._view.set_out_default_user_file.call_count, 1, "Expected mock to have been called once. Called {} times.".format( presenter._view.set_out_default_user_file.call_count)) self.assertEqual( presenter._view._call_settings_listeners.call_count, 0, "Expected mock to not have been called. Called {} times.".format( presenter._view._call_settings_listeners.call_count))
def test_add_row_to_table_model_adds_row_to_table_model(self): presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(mock.MagicMock()) parsed_data = BATCH_FILE_TEST_CONTENT_2 for item, row in enumerate(parsed_data): presenter._add_row_to_table_model(row, item) table_entry_0 = presenter._table_model.get_table_entry(0) self.assertEqual(table_entry_0.output_name, 'test_file') self.assertEqual(table_entry_0.sample_scatter, 'SANS2D00022024') self.assertEqual(table_entry_0.sample_thickness, 1.0) table_entry_1 = presenter._table_model.get_table_entry(1) self.assertEqual(table_entry_1.output_name, 'test_file2')
def test_on_insert_row_updates_table_model(self): presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(mock.MagicMock()) row = ['74044', '', '74044', '', '74044', '', '74044', '', '74044', '', '74044', '', 'test_reduction' , 'user_file', '1.2', ''] index = 0 expected_table_index_model = TableIndexModel(*row) expected_table_index_model.id = 0 expected_table_index_model.file_finding = True presenter.on_row_inserted(index, row) self.assertEqual(presenter._table_model.get_number_of_rows(), 1) model_row = presenter._table_model.get_table_entry(0) self.assertEqual(model_row, expected_table_index_model)
def test_that_checks_default_user_file(self): # Setup presenter and mock view view, settings_diagnostic_tab, _ = create_mock_view("") presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(view) self.assertEqual( presenter._view.set_out_default_user_file.call_count, 1, "Expected mock to have been called once. Called {} times.".format( presenter._view.set_out_default_user_file.call_count)) self.assertEqual( presenter._view._call_settings_listeners.call_count, 0, "Expected mock to not have been called. Called {} times.".format( presenter._view._call_settings_listeners.call_count))
def test_fails_silently_when_batch_file_does_not_exist(self): presenter = RunTabPresenter(SANSFacility.ISIS) user_file_path = create_user_file(sample_user_file) view, settings_diagnostic_tab, masking_table = create_mock_view( user_file_path, "non_existent_batch_file") presenter.set_view(view) try: presenter.on_batch_file_load() has_raised = False except: # noqa has_raised = True self.assertFalse(has_raised) # Clean up self._remove_files(user_file_path=user_file_path)
def test_on_cut_rows_requested_removes_selected_rows(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() view.get_selected_rows = mock.MagicMock(return_value=[0]) presenter.set_view(view) test_row_0 = ['SANS2D00022024', '', 'SANS2D00022048', '', 'SANS2D00022048', '', '', '', '', '', '', '', 'test_file', '', '1.0', '', '', '', ''] test_row_1 = ['SANS2D00022024', '', '', '', '', '', '', '', '', '', '', '', 'test_file2', '', '1.0', '', '', '', ''] presenter.on_row_inserted(0, test_row_0) presenter.on_row_inserted(1, test_row_1) presenter.on_cut_rows_requested() self.assertEqual(presenter._table_model.get_number_of_rows(), 1) self.assertEqual(presenter._table_model.get_table_entry(0).to_list(), test_row_1)
def test_that_notify_progress_updates_state_and_tooltip_of_row_for_scale_and_shift(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() presenter.set_view(view) test_row_0 = ['SANS2D00022024', '', 'SANS2D00022048', '', 'SANS2D00022048', '', '', '', '', '', '', '', 'test_file', '', '1.0', ''] presenter.on_row_inserted(0, test_row_0) presenter.notify_progress(0, [0.0], [1.0]) self.assertEqual(presenter._table_model.get_table_entry(0).row_state, RowState.Processed) self.assertEqual(presenter._table_model.get_table_entry(0).options_column_model.get_options_string(), 'MergeScale=1.0, MergeShift=0.0') self.assertEqual(presenter.progress, 1) self.assertEqual(presenter._view.progress_bar_value, 1)
def test_on_insert_row_updates_view(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() view.get_selected_rows = mock.MagicMock(return_value=[0]) presenter.set_view(view) test_row_0 = ['SANS2D00022024', '', 'SANS2D00022048', '', 'SANS2D00022048', '', '', '', '', '', '', '', 'test_file', '', '1.0', '', '', '', ''] test_row_1 = ['SANS2D00022024', '', '', '', '', '', '', '', '', '', '', '', 'test_file2', '', '1.0', '', '', '', ''] presenter.on_row_inserted(0, test_row_0) presenter.on_row_inserted(1, test_row_1) presenter.update_view_from_table_model = mock.MagicMock() presenter.on_insert_row() presenter.update_view_from_table_model.assert_called_once_with()
def test_fails_silently_when_batch_file_does_not_exist(self): self.os_patcher.stop() presenter = RunTabPresenter(SANSFacility.ISIS) user_file_path = create_user_file(sample_user_file) view, settings_diagnostic_tab, masking_table = create_mock_view(user_file_path, "non_existent_batch_file") presenter.set_view(view) try: presenter.on_batch_file_load() has_raised = False except: # noqa has_raised = True self.assertFalse(has_raised) # Clean up self._remove_files(user_file_path=user_file_path) self.os_patcher.start()
def test_that_process_selected_only_processes_selected_rows(self): # Naive test. Doesn't check that we are processing the correct processed rows, # just that we are processing the same number of rows as we have selected. # This would only really fail if on_process_selected_clicked and on_process_all_clicked # get muddled-up presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() view.get_selected_rows = mock.MagicMock(return_value=[0, 3, 4]) presenter.set_view(view) presenter._table_model.reset_row_state = mock.MagicMock() presenter.on_process_selected_clicked() self.assertEqual( presenter._table_model.reset_row_state.call_count, 3, "Expected reset_row_state to have been called 3 times. Called {} times.".format( presenter._table_model.reset_row_state.call_count))
def test_on_paste_rows_requested_appends_new_row_if_no_row_selected(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() view.get_selected_rows = mock.MagicMock(return_value=[]) presenter.set_view(view) test_row_0 = ['SANS2D00022024', '', 'SANS2D00022048', '', 'SANS2D00022048', '', '', '', '', '', '', '', 'test_file', '', '1.0', '', '', '', ''] test_row_1 = ['SANS2D00022024', '', '', '', '', '', '', '', '', '', '', '', 'test_file2', '', '1.0', '', '', '', ''] presenter.on_row_inserted(0, test_row_0) presenter.on_row_inserted(1, test_row_1) presenter._clipboard = [test_row_0] presenter.on_paste_rows_requested() self.assertEqual(presenter._table_model.get_number_of_rows(), 3) self.assertEqual(presenter._table_model.get_table_entry(2).to_list(), test_row_0)
def test_that_returns_none_when_index_does_not_exist(self): # Arrange batch_file_path = save_to_csv(BATCH_FILE_TEST_CONTENT_2) user_file_path = create_user_file(sample_user_file) view, _, _ = create_mock_view(user_file_path, batch_file_path) presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(view) presenter.on_user_file_load() presenter.on_batch_file_load() # Act state = presenter.get_state_for_row(3) # Assert self.assertTrue(state is None) # Clean up remove_file(batch_file_path) remove_file(user_file_path)
def test_that_process_selected_ignores_all_empty_rows(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() view.get_selected_rows = mock.MagicMock(return_value=[0, 1]) presenter.set_view(view) table_model = TableModel() row_entry0 = [''] * 16 row_entry1 = [ '74040', '', '74040', '', '74040', '', '74040', '', '74040', '', '74040', '', 'test_reduction', 'user_file', '1.2', '' ] table_model.add_table_entry(0, TableIndexModel(*row_entry0)) table_model.add_table_entry(1, TableIndexModel(*row_entry1)) presenter._table_model = table_model presenter._process_rows = mock.MagicMock() presenter.on_process_selected_clicked() presenter._process_rows.assert_called_with([1])
def test_on_data_changed_updates_table_model(self): presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(mock.MagicMock()) row = ['74044', '', '74044', '', '74044', '', '74044', '', '74044', '', '74044', '', 'test_reduction' , 'user_file', '1.2', ''] expected_row = ['74044', '', '74040', '', '74044', '', '74044', '', '74044', '', '74044', '', 'test_reduction' , 'user_file', '1.2', ''] presenter._table_model.add_table_entry(0, TableIndexModel(*row)) row = 0 column = 2 value = '74040' expected_table_index_model = TableIndexModel(*expected_row) expected_table_index_model.id = 0 expected_table_index_model.file_finding = True presenter.on_data_changed(row, column, value, '') self.assertEqual(presenter._table_model.get_number_of_rows(), 1) model_row = presenter._table_model.get_table_entry(0) self.assertEqual(model_row, expected_table_index_model)
def test_row_created_for_batch_file_correctly(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() presenter.set_view(view) test_row = [ "SANS2D00022025", "another_file", "SANS2D00022052", "SANS2D00022022", "", "", "", "a_user_file.txt" ] expected_list = [ "sample_sans", "SANS2D00022025", "output_as", "another_file", "sample_trans", "SANS2D00022052", "sample_direct_beam", "SANS2D00022022", "can_sans", "", "can_trans", "", "can_direct_beam", "", "user_file", "a_user_file.txt" ] actual_list = presenter._create_batch_entry_from_row(test_row) self.assertEqual(actual_list, expected_list)
def test_on_erase_rows_clears_rows_from_table_model(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() view.get_selected_rows = mock.MagicMock(return_value=[1, 2]) presenter.set_view(view) test_row_0 = ['SANS2D00022024', '', 'SANS2D00022048', '', 'SANS2D00022048', '', '', '', '', '', '', '', 'test_file', '', '1.0', '', '', '', ''] empty_row = TableModel.create_empty_row() presenter.on_row_inserted(0, test_row_0) presenter.on_row_inserted(1, test_row_0) presenter.on_row_inserted(2, test_row_0) presenter.on_erase_rows() self.assertEqual(presenter._table_model.get_number_of_rows(), 3) self.assertEqual(presenter._table_model.get_table_entry(0).to_list(), test_row_0) empty_row.id = 3 self.assertEqual(presenter._table_model.get_table_entry(1).__dict__, empty_row.__dict__) empty_row.id = 4 self.assertEqual(presenter._table_model.get_table_entry(2).__dict__, empty_row.__dict__)
def test_on_rows_removed_updates_view(self): presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(mock.MagicMock()) row_0 = ['74040', '', '74040', '', '74040', '', '74040', '', '74040', '', '74040', '', 'test_reduction' , 'user_file', '1.2', ''] row_1 = ['74041', '', '74041', '', '74041', '', '74041', '', '74041', '', '74041', '', 'test_reduction' , 'user_file', '1.2', ''] row_2 = ['74042', '', '74042', '', '74042', '', '74042', '', '74042', '', '74042', '', 'test_reduction' , 'user_file', '1.2', ''] row_3 = ['74043', '', '74043', '', '74043', '', '74043', '', '74043', '', '74043', '', 'test_reduction' , 'user_file', '1.2', ''] presenter._table_model.add_table_entry(0, TableIndexModel(*row_0)) presenter._table_model.add_table_entry(1, TableIndexModel(*row_1)) presenter._table_model.add_table_entry(2, TableIndexModel(*row_2)) presenter._table_model.add_table_entry(3, TableIndexModel(*row_3)) presenter.update_view_from_table_model = mock.MagicMock() rows = [0, 2] presenter.on_rows_removed(rows) presenter.update_view_from_table_model.assert_called_once_with()
def test_on_paste_rows_requested_replaces_first_row_and_removes_rest_if_multiple_rows_selected(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() view.get_selected_rows = mock.MagicMock(return_value=[0, 2]) presenter.set_view(view) test_row_0 = ['SANS2D00022024', '', 'SANS2D00022048', '', 'SANS2D00022048', '', '', '', '', '', '', '', 'test_file', '', '1.0', '', '', '', ''] test_row_1 = ['SANS2D00022024', '', '', '', '', '', '', '', '', '', '', '', 'test_file2', '', '1.0', '', '', '', ''] test_row_2 = ['SANS2D00022024', '', '', '', '', '', '', '', '', '', '', '', 'test_file3', '', '1.0', '', '', '', ''] presenter.on_row_inserted(0, test_row_0) presenter.on_row_inserted(1, test_row_1) presenter.on_row_inserted(2, test_row_2) presenter._clipboard = [test_row_2] presenter.on_paste_rows_requested() self.assertEqual(presenter._table_model.get_number_of_rows(), 2) self.assertEqual(presenter._table_model.get_table_entry(0).to_list(), test_row_2) self.assertEqual(presenter._table_model.get_table_entry(1).to_list(), test_row_1)
def test_on_erase_rows_updates_view(self): presenter = RunTabPresenter(SANSFacility.ISIS) view = mock.MagicMock() view.get_selected_rows = mock.MagicMock(return_value=[1, 2]) presenter.set_view(view) test_row_0 = ['SANS2D00022024', '', 'SANS2D00022048', '', 'SANS2D00022048', '', '', '', '', '', '', '', 'test_file', '', '1.0', '', '', '', ''] presenter.on_row_inserted(0, test_row_0) presenter.on_row_inserted(1, test_row_0) presenter.on_row_inserted(2, test_row_0) presenter.update_view_from_table_model = mock.MagicMock() presenter.on_erase_rows() self.assertEqual(presenter._table_model._table_entries[0].to_list(), ['SANS2D00022024', '', 'SANS2D00022048', '', 'SANS2D00022048', '', '', '', '', '', '', '', 'test_file', '', '1.0', '', '', '', '']) self.assertEqual(presenter._table_model._table_entries[1].to_list(), ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']) self.assertEqual(presenter._table_model._table_entries[2].to_list(), ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''])
def test_that_will_load_user_file(self): # Setup presenter and mock view user_file_path = create_user_file(sample_user_file) view, settings_diagnostic_tab, _ = create_mock_view(user_file_path) presenter = RunTabPresenter(SANSFacility.ISIS) presenter.set_view(view) # Act presenter.on_user_file_load() # Assert # Note that the event slices are not set in the user file self.assertFalse(view.event_slices) self.assertTrue(view.reduction_dimensionality is ReductionDimensionality.OneDim) self.assertTrue(view.save_types[0] is SaveType.NXcanSAS) self.assertTrue(view.zero_error_free) self.assertTrue(view.use_optimizations) self.assertTrue(view.reduction_mode is ISISReductionMode.LAB) self.assertTrue(view.merge_scale == 1.) self.assertTrue(view.merge_shift == 0.) self.assertFalse(view.merge_scale_fit) self.assertFalse(view.merge_shift_fit) self.assertTrue(view.event_binning == "7000.0,500.0,60000.0") self.assertTrue(view.wavelength_step_type is RangeStepType.Lin) self.assertTrue(view.wavelength_min == 1.5) self.assertTrue(view.wavelength_max == 12.5) self.assertTrue(view.wavelength_step == 0.125) self.assertTrue(view.absolute_scale == 0.074) self.assertTrue(view.z_offset == 53.) self.assertTrue(view.normalization_incident_monitor == 1) self.assertTrue(view.normalization_interpolate) self.assertTrue(view.transmission_incident_monitor == 1) self.assertTrue(view.transmission_interpolate) self.assertTrue(view.transmission_roi_files == "test2.xml") self.assertTrue(view.transmission_mask_files == "test4.xml") self.assertTrue(view.transmission_radius == 7.) self.assertTrue(view.transmission_monitor == 4) self.assertTrue(view.transmission_mn_shift == -70) self.assertTrue(view.transmission_sample_use_fit) self.assertTrue(view.transmission_sample_fit_type is FitType.Logarithmic) self.assertTrue(view.transmission_sample_polynomial_order == 2) self.assertTrue(view.transmission_sample_wavelength_min == 1.5) self.assertTrue(view.transmission_sample_wavelength_max == 12.5) self.assertTrue(view.transmission_sample_use_wavelength) self.assertFalse(view.pixel_adjustment_det_1) self.assertFalse(view.pixel_adjustment_det_2) self.assertFalse(view.wavelength_adjustment_det_1) self.assertFalse(view.wavelength_adjustment_det_2) self.assertTrue(view.q_1d_min_or_rebin_string == "0.001,0.001,0.0126,-0.08,0.2") self.assertTrue(view.q_xy_max == 0.05) self.assertTrue(view.q_xy_step == 0.001) self.assertTrue(view.q_xy_step_type == RangeStepType.Lin) self.assertTrue(view.gravity_on_off) self.assertTrue(view.use_q_resolution) self.assertTrue(view.q_resolution_sample_a == 14.) self.assertTrue(view.q_resolution_source_a == 13.) self.assertTrue(view.q_resolution_delta_r == 11.) self.assertTrue(view.q_resolution_collimation_length == 12.) self.assertTrue(view.q_resolution_moderator_file == "moderator_rkh_file.txt") self.assertFalse(view.phi_limit_use_mirror) self.assertTrue(view.radius_limit_min == 12.) self.assertTrue(view.radius_limit_min == 12.) self.assertTrue(view.radius_limit_max == 15.) self.assertFalse(view.compatibility_mode) self.assertFalse(view.show_transmission) # Assert that Beam Centre View is updated correctly self.assertEqual(view.beam_centre.lab_pos_1, 155.45) self.assertEqual(view.beam_centre.lab_pos_2, -169.6) self.assertEqual(view.beam_centre.hab_pos_1, 155.45) self.assertEqual(view.beam_centre.hab_pos_2, -169.6) # Assert certain function calls self.assertTrue(view.get_user_file_path.call_count == 3) self.assertTrue(view.get_batch_file_path.call_count == 2) # called twice for the sub presenter updates (masking table and settings diagnostic tab) # noqa self.assertTrue(view.get_cell.call_count == 64) self.assertTrue(view.get_number_of_rows.call_count == 6) # clean up remove_file(user_file_path)
# # Copyright © 2018 ISIS Rutherford Appleton Laboratory UKRI, # NScD Oak Ridge National Laboratory, European Spallation Source # & Institut Laue - Langevin # SPDX - License - Identifier: GPL - 3.0 + #pylint: disable=invalid-name """ Script used to start the Test Interface from MantidPlot """ from ui.sans_isis import sans_data_processor_gui from sans.gui_logic.presenter.run_tab_presenter import RunTabPresenter from sans.common.enums import SANSFacility # ----------------------------------------------- # Create presenter # ----------------------------------------------- run_tab_presenter = RunTabPresenter(SANSFacility.ISIS) # ------------------------------------------------- # Create view # ------------------------------------------------ ui = sans_data_processor_gui.SANSDataProcessorGui() # ----------------------------------------------- # Set view on the presenter. # The presenter delegates the view. # ----------------------------------------------- run_tab_presenter.set_view(ui) # Show ui.show()