class RealsControllerTest(unittest.TestCase): def setUp(self): self.model = MagicMock(spec=ValidationModel) self.model.get_current_source_observed_magnitude.return_value = 10, 20, 100, 1 self.view = Mock(spec=ApplicationView) self.controller = ProcessRealsController( self.model, self.view, Mock(spec=ProvisionalNameGenerator)) def test_accept_sets_note1_to_hand_adjusted_if_current_source_adjusted(self): self.model.is_current_source_adjusted.return_value = True self.controller.on_accept() self.view.show_accept_source_dialog.assert_called_once_with( ANY, ANY, ANY, ANY, ANY, ANY, ANY, note1_choices=ANY, note2_choices=ANY, note1_default=config.read("MPC.NOTE1_HAND_ADJUSTED"), note2_default=ANY, default_observatory_code=ANY, default_comment=ANY, phot_failure=ANY) def test_accept_doesnt_set_note1_to_hand_adjusted_if_current_source_not_adjusted(self): self.model.is_current_source_adjusted.return_value = False self.controller.on_accept() self.view.show_accept_source_dialog.assert_called_once_with( ANY, ANY, ANY, ANY, ANY, ANY, ANY, note1_choices=ANY, note2_choices=ANY, note1_default=None, note2_default=ANY, default_observatory_code=ANY, default_comment=ANY, phot_failure=ANY)
def setUp(self): self.model = MagicMock(spec=ValidationModel) self.model.get_current_source_observed_magnitude.return_value = 10, 20, 100, 1 self.view = Mock(spec=ApplicationView) self.controller = ProcessRealsController( self.model, self.view, Mock(spec=ProvisionalNameGenerator))
def create_controller(self, view): if self.dry_run: name_generator = DryRunNameGenerator() else: name_generator = ProvisionalNameGenerator() return ProcessRealsController(self.model, view, name_generator)
def setUp(self): WxWidgetTestCase.setUp(self) parser = AstromParser() directory_manager = DirectoryContext( self.get_abs_path("data/controller_testdir")) progress_manager = ProgressManager(directory_manager) workunit_provider = WorkUnitProvider(tasks.get_suffix(tasks.REALS_TASK), directory_manager, progress_manager, RealsWorkUnitBuilder(parser, progress_manager)) download_manager = Mock(spec=AsynchronousImageDownloadManager) self.model = UIModel(workunit_provider, progress_manager, download_manager) self.name_generator = Mock() self.controller = ProcessRealsController(self.model, self.name_generator)
class ProcessRealsControllerTest(WxWidgetTestCase, FileReadingTestCase, DirectoryCleaningTestCase): def setUp(self): WxWidgetTestCase.setUp(self) parser = AstromParser() directory_manager = DirectoryContext( self.get_abs_path("data/controller_testdir")) progress_manager = ProgressManager(directory_manager) workunit_provider = WorkUnitProvider(tasks.get_suffix(tasks.REALS_TASK), directory_manager, progress_manager, RealsWorkUnitBuilder(parser, progress_manager)) download_manager = Mock(spec=AsynchronousImageDownloadManager) self.model = UIModel(workunit_provider, progress_manager, download_manager) self.name_generator = Mock() self.controller = ProcessRealsController(self.model, self.name_generator) def tearDown(self): WxWidgetTestCase.tearDown(self) DirectoryCleaningTestCase.tearDown(self) def get_directory_to_clean(self): return self.get_abs_path("data/controller_testdir") def get_files_to_keep(self): return ["1584431p15.measure3.reals.astrom", "1616681p10.measure3.reals.astrom"] def test_reject_disables_validation_controls(self): comment = "test" view = self.controller.get_view() assert_that(view.is_source_validation_enabled(), equal_to(True)) self.controller.on_do_reject(comment) # We have moved to the next item, so it should still be enabled assert_that(view.is_source_validation_enabled(), equal_to(True)) # Loop back to that first item self.controller.on_next_obs() self.controller.on_next_obs() assert_that(view.is_source_validation_enabled(), equal_to(False)) self.controller.on_next_obs() assert_that(view.is_source_validation_enabled(), equal_to(True)) self.controller.on_next_obs() assert_that(view.is_source_validation_enabled(), equal_to(True)) def test_reject_last_item_disables_validation_controls(self): comment = "test" view = self.controller.get_view() self.controller.on_next_obs() self.controller.on_next_obs() assert_that(view.is_source_validation_enabled(), equal_to(True)) self.controller.on_do_reject(comment) # We have moved to the next item (looped back to beginning), so it should still be enabled assert_that(view.is_source_validation_enabled(), equal_to(True)) # Move forward to that last item again self.controller.on_next_obs() self.controller.on_next_obs() assert_that(view.is_source_validation_enabled(), equal_to(False)) self.controller.on_next_obs() assert_that(view.is_source_validation_enabled(), equal_to(True)) self.controller.on_next_obs() assert_that(view.is_source_validation_enabled(), equal_to(True)) def accept_source_reading(self): self.controller.on_do_accept(TEST_MINOR_PLANET_NUMBER, TEST_PROVISIONAL_NAME, TEST_DISCOVERY_AST, TEST_NOTE1, TEST_NOTE2, TEST_DATE, TEST_RA, TEST_DEC, TEST_MAG, TEST_BAND, TEST_OBS_CODE, TEST_COMMENT ) def reject_source_reading(self): self.controller.on_do_reject(TEST_COMMENT) def test_accept_moves_to_first_observation_of_new_workunit(self): workunit1 = self.model.get_current_workunit() assert_that(self.model.get_current_source_number(), equal_to(0)) assert_that(self.model.get_current_obs_number(), equal_to(0)) self.accept_source_reading() assert_that(self.model.get_current_source_number(), equal_to(0)) assert_that(self.model.get_current_obs_number(), equal_to(1)) self.accept_source_reading() assert_that(self.model.get_current_source_number(), equal_to(0)) assert_that(self.model.get_current_obs_number(), equal_to(2)) self.accept_source_reading() assert_that(self.model.get_current_source_number(), equal_to(1)) assert_that(self.model.get_current_obs_number(), equal_to(0)) self.accept_source_reading() assert_that(self.model.get_current_source_number(), equal_to(1)) assert_that(self.model.get_current_obs_number(), equal_to(1)) self.accept_source_reading() assert_that(self.model.get_current_source_number(), equal_to(1)) assert_that(self.model.get_current_obs_number(), equal_to(2)) self.accept_source_reading() assert_that(self.model.get_current_source_number(), equal_to(2)) assert_that(self.model.get_current_obs_number(), equal_to(0)) self.accept_source_reading() assert_that(self.model.get_current_source_number(), equal_to(2)) assert_that(self.model.get_current_obs_number(), equal_to(1)) self.accept_source_reading() assert_that(self.model.get_current_source_number(), equal_to(2)) assert_that(self.model.get_current_obs_number(), equal_to(2)) self.accept_source_reading() workunit2 = self.model.get_current_workunit() assert_that(workunit2, is_not(same_instance(workunit1))) assert_that(self.model.get_current_source_number(), equal_to(0)) assert_that(self.model.get_current_obs_number(), equal_to(0)) def read_written_results(self): writer = self.model.get_current_workunit().get_writer() filehandle = writer.filehandle filehandle.seek(0) return filehandle.read() def test_writer_flushing(self): def assert_sources_written_equals(num_sources): if num_sources == 0: assert_that(self.read_written_results(), equal_to("")) else: # Each source has 3 readings, and each reading has a comment # line and MPC line assert_that(self.read_written_results().rstrip().split("\n"), has_length(6 * num_sources)) # Should flush only after accepting all readings for a source assert_sources_written_equals(0) self.accept_source_reading() assert_sources_written_equals(0) self.accept_source_reading() assert_sources_written_equals(0) self.accept_source_reading() assert_sources_written_equals(1) self.reject_source_reading() assert_sources_written_equals(1) self.reject_source_reading() assert_sources_written_equals(1) self.reject_source_reading() assert_sources_written_equals(2)
def create_controller(self, view): return ProcessRealsController(self.model, view, self.name_generator)
def create_controller(self, model): return ProcessRealsController(model, ProvisionalNameGenerator())