class TestStudySubmitter:
    def setup_method(self):
        self.remote_env = mock.Mock(spec_set=IRemoteEnvironment)
        self.display_mock = mock.Mock(spec_set=IDisplay)
        self.study_submitter = StudySubmitter(self.remote_env, self.display_mock)

    @pytest.mark.unit_test
    def test_submit_study_shows_message_if_submit_succeeds(self):
        self.remote_env.submit_job = mock.Mock(return_value=42)
        study = StudyDTO(path="hello")

        new_study = self.study_submitter.submit_job(study)

        expected_message = f'"hello": was submitted'
        self.display_mock.show_message.assert_called_once_with(
            expected_message, mock.ANY
        )
        assert new_study.job_id == 42

    @pytest.mark.unit_test
    def test_submit_study_shows_error_if_submit_fails_and_exception_is_raised(
        self,
    ):
        self.remote_env.submit_job = mock.Mock(return_value=None)
        study = StudyDTO(path="hello")

        with pytest.raises(
            antareslauncher.use_cases.launch.study_submitter.FailedSubmissionException
        ):
            self.study_submitter.submit_job(study)

        expected_error_message = f'"hello": was not submitted'
        self.display_mock.show_error.assert_called_once_with(
            expected_error_message, mock.ANY
        )

    @pytest.mark.unit_test
    def test_remote_env_not_called_if_study_has_already_a_jobid(self):
        self.remote_env.submit_job = mock.Mock()
        study = StudyDTO(path="hello")
        study.job_id = 42

        self.study_submitter.submit_job(study)

        self.remote_env.submit_job.assert_not_called()

    @pytest.mark.unit_test
    def test_remote_env_is_called_if_study_has_no_jobid(self):
        self.remote_env.submit_job = mock.Mock(return_value=42)
        study = StudyDTO(path="hello")
        study.zipfile_path = "ciao.zip"
        study.job_id = None

        new_study = self.study_submitter.submit_job(study)

        self.remote_env.submit_job.assert_called_once()
        first_call = self.remote_env.submit_job.call_args_list[0]
        first_argument = first_call[0][0]
        assert asdict(first_argument) == asdict(study)
        assert new_study.job_id is 42
示例#2
0
 def setup_method(self):
     env = mock.Mock(spec_set=IRemoteEnvironment)
     display = mock.Mock(spec_set=IDisplay)
     file_manager = mock.Mock(spec_set=FileManager)
     repo = mock.Mock(spec_set=IDataRepo)
     self.reporter = DataReporter(repo)
     self.zipper = StudyZipper(file_manager, display)
     self.study_uploader = StudyZipfileUploader(env, display)
     self.zipfile_cleaner = StudyZipCleaner(file_manager, display)
     self.study_submitter = StudySubmitter(env, display)
     self.study_launcher = StudyLauncher(
         self.zipper,
         self.study_uploader,
         self.zipfile_cleaner,
         self.study_submitter,
         self.reporter,
     )
 def __init__(
     self,
     repo: IDataRepo,
     env: IRemoteEnvironment,
     file_manager: FileManager,
     display: IDisplay,
 ):
     self.repo = repo
     self.env = env
     self.file_manager = file_manager
     self.display = display
     zipper = StudyZipper(file_manager, display)
     study_uploader = StudyZipfileUploader(env, display)
     zipfile_cleaner = StudyZipCleaner(file_manager, display)
     study_submitter = StudySubmitter(env, display)
     self.study_launcher = StudyLauncher(zipper, study_uploader,
                                         zipfile_cleaner, study_submitter,
                                         DataReporter(repo))
示例#4
0
 def setup_method(self):
     self.remote_env = mock.Mock(spec_set=IRemoteEnvironment)
     self.display_mock = mock.Mock(spec_set=IDisplay)
     self.study_submitter = StudySubmitter(self.remote_env,
                                           self.display_mock)