Пример #1
0
    def setUp(self):
        # Store an empty widget to parent all the views, and ensure they are deleted correctly
        self.obj = QWidget()

        setup_context_for_ea_tests(self)

        self.view = mock.create_autospec(LoadRunWidgetView, autospec=True)
        self.model = mock.Mock(LoadRunWidgetModel, autospec=True)
        self.presenter = LoadRunWidgetPresenterEA(self.view, self.model)
Пример #2
0
class LoadRunWidgetPresenterTest(unittest.TestCase):
    def wait_for_thread(self, thread_model):
        if thread_model and thread_model.worker:
            while thread_model.worker.is_alive():
                time.sleep(0.1)
            QApplication.sendPostedEvents()

    def setUp(self):
        # Store an empty widget to parent all the views, and ensure they are deleted correctly
        self.obj = QWidget()

        setup_context_for_ea_tests(self)

        self.view = mock.create_autospec(LoadRunWidgetView, autospec=True)
        self.model = mock.Mock(LoadRunWidgetModel, autospec=True)
        self.presenter = LoadRunWidgetPresenterEA(self.view, self.model)

    def tearDown(self):
        self.obj = None

    # ------------------------------------------------------------------------------------------------------------------
    # TESTS
    # ------------------------------------------------------------------------------------------------------------------

    def test_model_initialized_to_contain_no_data(self):
        self.assertEqual(self.presenter.run_list, [])

    def test_user_can_enter_a_run_and_load_it_in_single_run_mode(self):
        """
            Tests a user inputting a single run
        """
        self.view.get_run_edit_text.return_value = "5555"
        self.model.execute = mock.Mock()

        self.model._data_context = mock.Mock(current_runs=[5555])
        self.presenter.handle_run_changed_by_user()

        self.model.get_latest_loaded_run.return_value = 5555
        self.model._loaded_data_store = mock.Mock(run=5555)
        self.model._directory = mock.Mock()
        self.model.loaded_runs = [[5555]]

        self.wait_for_thread(self.presenter._load_thread)

        self.assertEqual(self.presenter.runs, [[5555]])

    def test_clear_loaded_data(self):
        """
            Tests that clearing loaded data sends calls to clear both
            the loaded_data in the model and the view
        """
        self.presenter.clear_loaded_data()

        self.assertEqual(self.view.clear.call_count, 1)
        self.assertEqual(self.model.clear_loaded_data.call_count, 1)
    def setUp(self):
        # Store an empty widget to parent all the views, and ensure they are deleted correctly
        self.obj = QWidget()

        setup_context_for_ea_tests(self)

        self.view = mock.Mock()
        self.model = LoadRunWidgetModel(self.loaded_data, self.context)
        self.presenter = LoadRunWidgetPresenterEA(self.view, self.model)

        self.view.warning_popup = mock.Mock()
        self.model.execute = mock.Mock()

        self.load_single_run()
Пример #4
0
    def __init__(self, loaded_data, context, parent):
        # set up the views
        self.load_file_view = BrowseFileWidgetView(parent)
        self.load_file_view.hide_browse()
        self.load_run_view = LoadRunWidgetView(parent)
        self.load_run_view.hide_current_run_button()
        self.load_run_view.hide_instrument_label()
        self.load_widget_view = LoadWidgetView(
            parent=parent,
            load_file_view=self.load_file_view,
            load_run_view=self.load_run_view)
        self.load_widget = LoadWidgetPresenterEA(
            self.load_widget_view, LoadWidgetModel(loaded_data, context))

        self.file_widget = BrowseFileWidgetPresenter(
            self.load_file_view, BrowseFileWidgetModel(loaded_data, context))
        self.run_widget = LoadRunWidgetPresenterEA(
            self.load_run_view, LoadRunWidgetModel(loaded_data, context))

        self.load_widget.set_load_file_widget(self.file_widget)
        self.load_widget.set_load_run_widget(self.run_widget)

        self.load_widget.set_current_instrument(
            context.data_context.instrument)

        self.run_widget.updated_directory.add_subscriber(
            self.file_widget.updated_file_path)
    def setUp(self):
        # Store an empty widget to parent all the views, and ensure they are deleted correctly
        self.obj = QWidget()

        setup_context_for_ea_tests(self)
        self.load_file_view = BrowseFileWidgetView(self.obj)
        self.load_run_view = LoadRunWidgetView(self.obj)
        self.load_run_view.set_current_instrument = mock.Mock()
        self.view = LoadWidgetView(parent=self.obj,
                                   load_file_view=self.load_file_view,
                                   load_run_view=self.load_run_view)
        self.model = LoadWidgetModel(self.loaded_data, self.context)
        self.model.instrument = mock.Mock()
        self.presenter = LoadWidgetPresenterEA(self.view, self.model)
        loaded_data = mock.Mock()
        context = mock.Mock()
        self.run_widget = LoadRunWidgetPresenterEA(
            self.load_run_view, LoadRunWidgetModel(loaded_data, context))
        self.presenter.set_load_run_widget(self.run_widget)
class LoadRunWidgetIncrementDecrementSingleFileModeTest(unittest.TestCase):
    def wait_for_thread(self, thread_model):
        if thread_model:
            thread_model._thread.wait()
            QApplication.sendPostedEvents()

    def setUp(self):
        # Store an empty widget to parent all the views, and ensure they are deleted correctly
        self.obj = QWidget()

        setup_context_for_ea_tests(self)

        self.view = mock.Mock()
        self.model = LoadRunWidgetModel(self.loaded_data, self.context)
        self.presenter = LoadRunWidgetPresenterEA(self.view, self.model)

        self.view.warning_popup = mock.Mock()
        self.model.execute = mock.Mock()

        self.load_single_run()

    def tearDown(self):
        self.obj = None

    def load_single_run(self):
        self.model._data_context.current_runs = []
        self._loaded_run = 5647

        self.view.get_run_edit_text.return_value = str(self._loaded_run)

        self.presenter.handle_run_changed_by_user()

        grpws = mock.Mock()
        for run in self.model._runs:
            self.model._loaded_data_store.add_data(run=[run], workspace=grpws)
            self.model._data_context.current_runs.append(run)

        self.wait_for_thread(self.presenter._load_thread)

    @staticmethod
    def load_failure(self):
        raise ValueError("Error text")

    # ------------------------------------------------------------------------------------------------------------------
    # TESTS : Test the increment/decrement buttons
    # ------------------------------------------------------------------------------------------------------------------

    def test_that_decrement_run_attempts_to_load_the_correct_run(self):
        original_run = self._loaded_run
        grpws = mock.Mock()

        self.presenter.handle_decrement_run()
        for run in self.model._runs:
            self.model._loaded_data_store.add_data(run=[run], workspace=grpws)

        self.wait_for_thread(self.presenter._load_thread)
        self.view.get_run_edit_text.return_value = str(
            self.presenter.runs[-1][0])

        self.assertEqual(self.presenter.runs[-1], [original_run - 1])

        run_in_view = self.view.get_run_edit_text()
        self.assertEqual(run_in_view, str(original_run - 1))

    def test_that_increment_run_attempts_to_load_the_correct_run(self):
        original_run = self._loaded_run
        grpws = mock.Mock()

        self.presenter.handle_increment_run()
        for run in self.model._runs:
            self.model._loaded_data_store.add_data(run=[run], workspace=grpws)

        self.view.get_run_edit_text.return_value = str(
            self.presenter.runs[-1][0])

        self.wait_for_thread(self.presenter._load_thread)
        self.assertEqual(self.presenter.runs[-1], [original_run + 1])

        run_in_view = self.view.get_run_edit_text()
        self.assertEqual(run_in_view, str(original_run + 1))