예제 #1
0
    def test_assemble_return_value(self):

        self.view.searchterms = ['One', 'Two']
        self.view.earliest_date = AlexDate(1970)
        self.view.latest_date = AlexDate(1980)
        self.view.local_only = True
        self.view.unverified_only = False

        event_filter = self.presenter._build_filter_object()
        self.assertEqual(EventFilter, event_filter.__class__)
        self.assertEqual(['One', 'Two'], event_filter.searchterms)
        self.assertEqual(AlexDate(1970), event_filter.earliest_date)
        self.assertEqual(AlexDate(1980), event_filter.latest_date)
        self.assertTrue(event_filter.local_only)
        self.assertFalse(event_filter.unverified_only)
예제 #2
0
 def get(self):
     '''
     Gets an AlexDate. Non integer input is silently ignored.
     If the year is empty, None is returned. If the date
     is not a valid AlexDate, an InvalidDateException is
     thrown.
     '''
     year_as_int = None
     month_as_int = None
     day_as_int = None
     try:
         year_as_int = int(self.year)
     except ValueError:
         self.year = ''
     try:
         month_as_int = int(self.month)
     except ValueError:
         self.month = ''
     try:
         day_as_int = int(self.day)
     except ValueError:
         self.day = ''
     if self.year == '':
         return None
     return AlexDate(year_as_int, month_as_int, day_as_int)
    def check_document_event_reference_new(self):

        print("Checking new document event reference...", end='')
        reference = self.document_window.references[0]
        dialog = reference.event_selection_dialog
        self.document_window.presenter.goto_first()
        original_references = len(reference.listbox.get_items())

        self.event_window.presenter.goto_last()
        self.start_dialog(reference._get_reference_event)

        # Verify we got the correct event from the event window
        self.assertEquals(dialog.date_entry.get(), AlexDate(1961, 5, 1))
        # "go to" page 2
        dialog.presenter.update_event_list()
        # Select the event and close dialog
        event = dialog.event_list_box.get_items()[0]
        dialog.event_list_box.set(event)
        dialog.presenter.ok_action()

        self.assertEquals(original_references + 1,
                          len(reference.listbox.get_items()))
        self.document_window.presenter.goto_last()
        self.document_window.presenter.goto_first()
        self.assertEquals(original_references + 1,
                          len(reference.listbox.get_items()))

        print("OK")
예제 #4
0
def export_info_object_hook(obj):
    '''
    This function is used for deserializing ExportInfo json objects
    '''

    if 'cd_name' in obj:
        export_info = ExportInfo()
        export_info.start_date = obj['start_date']
        export_info.end_date = obj['end_date']
        export_info.signature = obj['signature']
        export_info.cd_name = obj['cd_name']
        export_info.pagecontent = obj['pagecontent']
        export_info.start_image = obj['start_image']
        return export_info

    if '_year' in obj:
        return AlexDate(obj['_year'], obj['_month'], obj['_day'])

    if 'description' in obj:
        return SystematicPoint(obj['id'], obj['description'])

    if 'node_id' in obj:
        return SystematicIdentifier(obj['node_id'], obj['roman'],
                                    obj['subfolder'])

    return obj
 def test_invalid_date(self):
     exception_raised = False
     try:
         AlexDate(None)
     except InvalidDateException:
         exception_raised = True
     self.assertTrue(exception_raised)
 def test_valid_date(self):
     self.view.days = ["1"]
     self.view.months = ["12"]
     self.view.years = ["1960"]
     
     self.presenter.ok_action()
     
     self.assertEqual(AlexDate(1960, 12, 1), self.view.return_value)
예제 #7
0
    def testDateValidationCombinedFail(self):

        exception = None
        try:
            AlexDate(year=1971, month=2, day=29)
        except InvalidDateException as e:
            exception = e
        self.assertEqual("Illegal date: 29.2.1971!", str(exception))
예제 #8
0
    def testDateValidationYearAndMonthAndDay(self):

        exception = None
        try:
            AlexDate(year=1970, month=12, day=31)
        except InvalidDateException as e:
            exception = e
        self.assertFalse(exception)
예제 #9
0
    def testDateValidationDayOutOfRange(self):

        exception = None
        try:
            AlexDate(year=1970, month=12, day=32)
        except InvalidDateException as e:
            exception = e
        self.assertEqual("Day 32 is out of range (1-31)!", str(exception))
예제 #10
0
    def testDateValidationNonIntDay(self):

        exception = None
        try:
            AlexDate(year=1970, month=12, day="bla")
        except InvalidDateException as e:
            exception = e
        self.assertEqual("bla is not a valid day!", str(exception))
예제 #11
0
    def testDateValidationMonthOutOfRange(self):

        exception = None
        try:
            AlexDate(year=1970, month=13)
        except InvalidDateException as e:
            exception = e
        self.assertEqual("Month 13 is out of range (1-12)!", str(exception))
예제 #12
0
    def testDateValidationYear(self):

        exception = None
        try:
            AlexDate(year=1970)
        except InvalidDateException as e:
            exception = e
        self.assertFalse(exception)
예제 #13
0
    def testDateValidationYearOutOfRange(self):

        exception = None
        try:
            AlexDate(year=3001)
        except InvalidDateException as e:
            exception = e
        self.assertEqual("Year 3001 is out of range (0-3000)!", str(exception))
예제 #14
0
    def testDateValidationCombinedWorking(self):

        exception = None
        try:
            AlexDate(year=1972, month=2, day=29)
        except InvalidDateException as e:
            exception = e
        self.assertFalse(exception)
예제 #15
0
    def testDateValidationNonIntYear(self):

        exception = None
        try:
            AlexDate(year="bla")
        except InvalidDateException as e:
            exception = e
        self.assertEqual("bla is not a valid year!", str(exception))
    def check_create_event(self):
        print("Checking creation of event works...", end='')

        dialog = self.event_window.dialogs[EventWindow.DATE_RANGE_DIALOG]

        self.start_dialog(self.event_window._create_new)
        set_date_range(dialog, AlexDate(1941), AlexDate(1942))
        self.close_dialog(dialog)

        self.event_window._description_widget.set("Completely new event.")
        self.event_window_presenter.goto_first()
        self.event_window_presenter.goto_next()

        event = self.event_window.entity
        self.assertEquals(1941000001, event.id)
        self.assertEquals("Completely new event.", event.description)

        print("OK")
    def test_fetch_doc_and_event_ids_II(self):

        der_filter = DocumentEventReferenceFilter()
        der_filter.earliest_date = AlexDate(1950)
        references = self.dao.fetch_doc_event_references(der_filter)
        self.assertEqual(1, len(references.keys()))
        self.assertEqual(1, len(references[4]))
        self.assertIn(1960013001, references[4])
        self.assertIn(4, references)
    def test_empty_day_and_month(self):

        self.view.days = [""]
        self.view.months = [""]
        self.view.years = ["1970"]
        
        self.presenter.ok_action()
        
        self.assertEqual(AlexDate(1970), self.view.return_value)
예제 #19
0
    def set_current_event(self, event_id):

        if event_id is not None:
            event = self.event_dao.get_by_id(event_id)
        else:
            event = Event()
            event.daterange = AlexDateRange(AlexDate(1936), None)
        message = Message(CONF_EVENT_CHANGED, event=event)
        
        self.message_broker.send_message(message)
    def check_goto_event(self):
        print("Checking going to nearest selected event works...", end='')
        dialog = self.event_window.dialogs[BaseWindow.GOTO_DIALOG]

        self.start_dialog(self.event_window._activate_record_dialog)
        set_date(dialog, AlexDate(1960, 1, 1))
        self.close_dialog(dialog)

        self.assert_that_event_is(1960013001)
        print("OK")
 def test_filtering_latest_date(self):
     event_filter = EventFilter()
     event_filter.latest_date = AlexDate(1960, 1, 30)
     filter_expression_builder = EventFilterExpressionBuilder()
     filter_expression = filter_expression_builder.create_filter_expression(
         event_filter)
     event = self.dao.get_first(filter_expression)
     self.assertEqual(event.id, 1940000001)
     event = self.dao.get_last(filter_expression)
     self.assertEqual(event.id, 1960013001)
    def ok_action(self):
        try:
            (day, month, year) = self._basic_input_conversion(0)
        except Exception as e:
            return

        # Leave further input validation to the AlexDate class
        try:
            self._view.return_value = AlexDate(year, month, day)
        except InvalidDateException as e:
            self._view.errormessage = e.args[0]
예제 #23
0
    def setUp(self):

        self.export_info = ExportInfo()
        self.export_info = ExportInfo()
        self.export_info.cd_name = "TEST_CD"
        self.export_info.start_date = AlexDate(1973, 5, 1)
        self.export_info.end_date = AlexDate(1974, 5, 1)
        self.export_info.location_id = SystematicPoint(
            SystematicIdentifier("1.2.3", 4, 5), "dummy description")

        self.export_info_json = '{%s, %s, %s, %s}' % (
            '"cd_name": "TEST_CD"',
            '"end_date": {"_day": 1, "_month": 5, "_year": 1974}',
            '"location_id": {%s, %s}' %
            ('"description": "dummy description"',
             '"id": {"node_id": "1.2.3", "roman": 4, "subfolder": 5}'),
            '"start_date": {"_day": 1, "_month": 5, "_year": 1973}')

        self.message_broker = MessageBroker()
        self.generation_engine = MagicMock(spec=GenerationEngine)
        self.presenter = ChronoCDExporterMenuAdditionsPresenter(
            self.message_broker, self.generation_engine)

        self.presenter.view = MagicMock()
    def check_event_cross_reference_new(self):
        print("Checking create new event cross reference...", end='')
        reference = self.event_window.references[0]
        dialog = reference.event_selection_dialog

        self.event_window_presenter.goto_first()

        self.assertEquals(len(reference.items), 2)

        self.start_dialog(reference._select_new_cross_reference)
        dialog.presenter.view.date_entry.set(AlexDate(1961, 5, 1))
        dialog.presenter.update_event_list()
        dialog.presenter.view.event_list_box.set(
            dialog.presenter.view.event_list[0])
        dialog.presenter.ok_action()
        self.wait()

        self.assertEquals(len(reference.items), 3)

        print("OK")
    def check_filtering_events(self):
        print("Checking filtering events works...", end='')
        dialog = self.event_window.dialogs[BaseWindow.FILTER_DIALOG]

        self.start_dialog(self.event_window._toggle_filter)
        dialog.earliest_date = AlexDate(1961, 1, 1)
        self.close_dialog(dialog)

        self.assert_that_event_is(1961050101)
        self.event_window_presenter.goto_first()
        self.assert_that_event_is(1961050101)

        # Turn filtering off
        self.event_window._toggle_filter()

        self.assert_that_event_is(1961050101)
        self.event_window_presenter.goto_first()
        self.assert_that_event_is(1940000001)

        print("OK")
    def check_filtering_events_with_empty_selection(self):
        print("Checking filtering events works even if nothing is selected...",
              end='')
        dialog = self.event_window.dialogs[BaseWindow.FILTER_DIALOG]

        self.start_dialog(self.event_window._toggle_filter)
        dialog.earliest_date = AlexDate(1980, 1, 1)
        self.close_dialog(dialog)

        self.assert_no_event()
        self.event_window_presenter.goto_first()
        self.assert_no_event()

        # Turn filtering off
        self.event_window._toggle_filter()

        self.assert_no_event()
        self.event_window_presenter.goto_first()
        self.assert_that_event_is(1940000001)

        print("OK")
예제 #27
0
class EventTypeReferencesPresenterTest(BaseIntegrationTest):

    existing_event = Event(1940000001)
    non_existing_event = Event()
    non_existing_event.daterange = AlexDateRange(AlexDate(1930), None)

    def setUp(self):
        super().setUp()
        self.injector = self.get_injector(PresentersModule())
        self.event_service = self.injector.get(
            baseinjectorkeys.EVENT_SERVICE_KEY)
        self.event_type_dao = self.injector.get(
            baseinjectorkeys.EVENT_TYPE_DAO_KEY)
        self.presenter = self.injector.get(
            guiinjectorkeys.EVENT_TYPE_REFERENCES_PRESENTER_KEY)
        self.view = MagicMock(spec=DocumentFileReferencesView)
        self.presenter.view = self.view

    def receive_message(self, message):
        BaseIntegrationTest.receive_message(self, message)
        if message.key == REQ_SAVE_CURRENT_EVENT:
            self.event_service.save(self.view.current_event)

    @data([1940000001, 2], [1950000001, 1], [1961050101, 0])
    @unpack
    def test_receive_message_1(self, event_id, number_of_references):
        '''
        Assert that the event types are set on event changes.
        '''
        message = Message(CONF_EVENT_CHANGED,
                          event=self.event_service.get_by_id(event_id))
        self.message_broker.send_message(message)
        self.assertEqual(number_of_references, len(self.view.items))

    def test_load_event_types(self):
        '''
        Just an additional test when there is now event set. Can't be done via
        message.
        '''
        self.presenter._load_event_types(None)
        self.assertEqual(0, len(self.view.items))

    @data([existing_event, 3], [non_existing_event, 1])
    @unpack
    def test_add_event_type(self, event, number_of_references):

        message = Message(CONF_EVENT_CHANGED, event=event)
        self.message_broker.send_message(message)

        self.view.new_event_type = self.event_type_dao.get_by_id(
            EventTypeIdentifier(3, 2))

        self.presenter.add_event_type_reference()

        self.assertEqual(number_of_references,
                         len(self.event_service.get_event_types(event)))

    def test_add_event_type_2(self):
        '''
        Trying to readd already added type
        '''

        event = self.event_service.get_by_id(1940000001)
        event_type = self.event_type_dao.get_by_id(EventTypeIdentifier(5, 2))
        message = Message(CONF_EVENT_CHANGED, event=event)
        self.message_broker.send_message(message)

        self.view.new_event_type = event_type

        self.assertEqual(2, len(self.event_service.get_event_types(event)))

        self.presenter.add_event_type_reference()

        self.assertEqual(2, len(self.event_service.get_event_types(event)))

    def test_add_event_type_3(self):
        '''
        Test when no event type is selected
        '''

        event = self.event_service.get_by_id(1940000001)
        message = Message(CONF_EVENT_CHANGED, event=event)
        self.message_broker.send_message(message)

        self.view.new_event_type = None

        self.assertEqual(2, len(self.event_service.get_event_types(event)))

        self.presenter.add_event_type_reference()

        self.assertEqual(2, len(self.event_service.get_event_types(event)))

    def test_remove_event_type(self):

        event = self.event_service.get_by_id(1940000001)
        event_type = self.event_type_dao.get_by_id(EventTypeIdentifier(5, 2))
        message = Message(CONF_EVENT_CHANGED, event=event)
        self.message_broker.send_message(message)

        self.view.selected_item = event_type

        self.assertEqual(2, len(self.event_service.get_event_types(event)))

        self.presenter.remove_event_type_reference()

        self.assertEqual(1, len(self.event_service.get_event_types(event)))

    def test_remove_event_type_2(self):
        '''
        Test with no type selected.
        '''
        event = self.event_service.get_by_id(1940000001)
        message = Message(CONF_EVENT_CHANGED, event=event)
        self.message_broker.send_message(message)

        self.view.selected_item = None

        self.assertEqual(2, len(self.event_service.get_event_types(event)))

        self.presenter.remove_event_type_reference()

        self.assertEqual(2, len(self.event_service.get_event_types(event)))
 def testUpdateEventList1(self):
     self.presenter.view.date = AlexDate(1950)
     self.presenter.update_event_list()
     self.assertEqual(len(self.presenter.view.event_list), 1)
     self.assertEqual("%s" % self.presenter.view.event_list[0], "1950: Zweites Ereignis")
 def test_get_events_for_date(self):
     alex_date = AlexDate(1940)
     event_list = self.dao.get_events_for_date(alex_date)
     self.assertEqual(len(event_list), 1)
     self.assertEqual(event_list[0].id, 1940000001)
 def test_get_next_free_sequence_id(self):
     alex_date = AlexDate(1940)
     self.assertEqual(self.dao._get_next_free_sequence_id(alex_date), 2)
     alex_date = AlexDate(1941)
     self.assertEqual(self.dao._get_next_free_sequence_id(alex_date), 1)