Exemplo n.º 1
0
    def test_two_reminder(self, mail_mock):
        """ Test the cron job for a meeting with a single reminder to send.
        """
        mail_mock.return_value = None

        # Meeting with a reminder
        remobj = model.Reminder('H-12', '[email protected]',
                                '[email protected],[email protected]',
                                'Come to our test meeting')
        remobj.save(self.session)
        self.session.flush()

        date_sa = datetime.utcnow() + timedelta(hours=12)
        date_so = datetime.utcnow() + timedelta(hours=13)

        obj = model.Meeting(  # id:1
            meeting_name='Test meeting with reminder',
            meeting_date=date_sa.date(),
            meeting_date_end=date_so.date(),
            meeting_time_start=date_sa.time(),
            meeting_time_stop=date_so.time(),
            meeting_information='This is a test meeting with reminder',
            calendar_name='test_calendar',
            reminder_id=remobj.reminder_id)
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        msgs = fedocal_cron.send_reminder()

        self.assertEqual(len(msgs), 1)
        self.assertEqual(msgs[0]['To'], '[email protected], [email protected]')
        self.assertEqual(msgs[0]['From'], '[email protected]')
Exemplo n.º 2
0
    def test_no_reminder(self):
        """ Test the cron job for run with no reminders.
        """
        # Meeting with a reminder but outside the standard offsets
        remobj = model.Reminder('H-12', '*****@*****.**',
                                'root@localhost', 'Come to our test meeting')
        remobj.save(self.session)
        self.session.flush()

        date_sa = datetime.utcnow() + timedelta(hours=15)
        date_so = datetime.utcnow() + timedelta(hours=16)

        obj = model.Meeting(  # id:1
            meeting_name='Test meeting with reminder',
            meeting_date=date_sa.date(),
            meeting_date_end=date_so.date(),
            meeting_time_start=date_sa.time(),
            meeting_time_stop=date_so.time(),
            meeting_information='This is a test meeting with reminder',
            calendar_name='test_calendar',
            reminder_id=remobj.reminder_id)
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        msgs = fedocal_cron.send_reminder()

        self.assertEqual(len(msgs), 0)
Exemplo n.º 3
0
def convert_meetings(fed03_sess, fed04_sess):
    ''' Convert the Meetings from fedocal-0.3.x to fedocal-0.4.0.
    '''
    cnt = 0
    for meeting in fed03_sess.query(F03Meetings).all():
        calendarobj = model.Calendar.by_id(fed04_sess, meeting.calendar_name)

        if meeting.reminder_id:
            reminderobj = model.Reminder.by_id(fed04_sess, meeting.reminder_id)

        # Create the meeting
        meetingobj = model.Meeting(
            meeting_name=meeting.meeting_name,
            meeting_date=meeting.meeting_date,
            meeting_date_end=meeting.meeting_date_end,
            meeting_time_start=meeting.meeting_time_start,
            meeting_time_stop=meeting.meeting_time_stop,
            meeting_information=meeting.meeting_information,
            calendar_name=meeting.calendar_name,
            meeting_timezone=meeting.meeting_timezone,
            reminder_id=meeting.reminder_id,
            meeting_location=meeting.meeting_location,
            recursion_frequency=meeting.recursion_frequency,
            recursion_ends=meeting.recursion_ends,
            full_day=meeting.full_day)
        fed04_sess.add(meetingobj)
        # Add the managers
        meetingobj.add_manager(fed04_sess, meeting.meeting_manager)
        fed04_sess.add(meetingobj)
        fed04_sess.flush()
        cnt += 1
    fed04_sess.commit()
    print '%s meetings added' % cnt
Exemplo n.º 4
0
    def test_start_date_delete_meeting_form(self):
        """ Test the content of the start_date in the delete meeting form.
        """
        self.__setup_calendar()

        calendar = model.Calendar.by_id(self.session, 'test_calendar')
        # Create a meeting
        obj = model.Meeting(  # id:1
            meeting_name='recursive meeting',
            meeting_date=TODAY,
            meeting_date_end=TODAY,
            meeting_time_start=time(19, 50),
            meeting_time_stop=time(20, 50),
            meeting_information='This is a test meeting',
            calendar_name='test_calendar',
            recursion_frequency=14,
            recursion_ends=TODAY + timedelta(days=90))
        obj.add_manager(self.session, 'pingou,')
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        user = FakeUser(['fi-apprentice'], username='******')
        with user_set(fedocal.APP, user):
            output = self.app.get('/meeting/delete/1/')
            self.assertEqual(output.status_code, 200)

            next_date = TODAY + timedelta(days=14)
            if date.today() <= TODAY:
                next_date = TODAY

            # If no date is specified, it returns the next occurence
            self.assertTrue('<li>Date: %s</li>' % next_date in output.data)

            # If a date in the future is specified, return the next occurence
            # for this date
            url = '/meeting/delete/1/?from_date=%s' % (TODAY +
                                                       timedelta(days=20))
            output2 = self.app.get(url)
            self.assertEqual(output2.status_code, 200)

            self.assertTrue('<li>Date: %s</li>' %
                            (TODAY + timedelta(days=28)) in output2.data)

            # If an exact date in the future is specified, return that date
            url = '/meeting/delete/1/?from_date=%s' % (TODAY +
                                                       timedelta(days=14))
            output2 = self.app.get(url)
            self.assertEqual(output2.status_code, 200)

            self.assertTrue('<li>Date: %s</li>' % next_date in output.data)

            # If an old date in the future is specified, return the first date
            output2 = self.app.get('/meeting/delete/1/?from_date=2000-01-01')
            self.assertEqual(output2.status_code, 200)

            self.assertTrue('<li>Date: %s</li>' % (TODAY) in output2.data)
Exemplo n.º 5
0
def add_meeting(
        session,
        meeting_name,
        meeting_manager,
        meeting_date,
        meeting_date_end,
        meeting_time_start,
        meeting_time_stop,
        meeting_information,
        calendarobj,
        meeting_timezone='UTC',
        reminder_id=None,
        meeting_location=None,
        recursion_frequency=None,
        recursion_ends=None,
        full_day=False):
    """ Logic to add a meeting to the database.
    """

    if not recursion_frequency:
        recursion_frequency = None
    if not recursion_ends and recursion_frequency:
        recursion_ends = date(2025, 12, 31)

    # Unless we test directly dbaction we will never hit this as
    # fedocallib.add_meeting already covers it
    if not meeting_date_end:  # pragma: no cover
        meeting_date_end = meeting_date

    meeting = model.Meeting(
        meeting_name=meeting_name,
        meeting_date=meeting_date,
        meeting_date_end=meeting_date_end,
        meeting_time_start=meeting_time_start.time(),
        meeting_time_stop=meeting_time_stop.time(),
        meeting_timezone=meeting_timezone,
        meeting_information=meeting_information,
        calendar_name=calendarobj.calendar_name,
        reminder_id=reminder_id,
        meeting_location=meeting_location,
        recursion_frequency=recursion_frequency,
        recursion_ends=recursion_ends,
        full_day=full_day)
    meeting.save(session)
    meeting.add_manager(session, meeting_manager)
    meeting.save(session)
    session.commit()
    return meeting
    def test_delete_recurring_meeting(self):
        """ Test deleting a recurring meeting in the middle of the
        recursion.
        """
        # Setup info
        self.__setup_calendar()
        obj = model.Meeting(  # id:1
            meeting_name='test recurring',
            meeting_date=datetime(2014, 9, 1).date(),
            meeting_date_end=datetime(2014, 9, 1).date(),
            meeting_time_start=time(9, 0),
            meeting_time_stop=time(10, 0),
            meeting_information='This is a test meeting recurring',
            calendar_name='test_calendar',
            recursion_frequency=7,
            recursion_ends=datetime(2014, 10, 27).date(),
        )
        obj.add_manager(self.session, 'pingou')
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Before deletion
        calendarobj = model.Calendar.by_id(self.session, 'test_calendar')
        meetings = fedocallib.get_by_date(self.session, calendarobj,
                                          datetime(2014, 9, 1).date(),
                                          datetime(2014, 10, 27).date())
        self.assertEqual(len(meetings), 9)
        ids = set([mtg.meeting_id for mtg in meetings])
        self.assertEqual(len(ids), 1)
        self.assertEqual(list(ids)[0], 1)
        dates = [str(mtg.meeting_date) for mtg in meetings]
        self.assertEqual(dates, [
            '2014-09-01',
            '2014-09-08',
            '2014-09-15',
            '2014-09-22',
            '2014-09-29',
            '2014-10-06',
            '2014-10-13',
            '2014-10-20',
            '2014-10-27',
        ])

        # Delete meeting in the middle
        meeting = model.Meeting.by_id(self.session, 1)
        fedocallib.delete_recursive_meeting(self.session,
                                            meeting=meeting,
                                            del_date=datetime(2014, 10,
                                                              20).date(),
                                            all_meetings=False)

        # After deletion
        meetings = fedocallib.get_by_date(self.session, calendarobj,
                                          datetime(2014, 9, 1).date(),
                                          datetime(2014, 10, 27).date())
        self.assertEqual(len(meetings), 8)
        self.assertEqual(len(ids), 1)
        self.assertEqual(list(ids)[0], 1)
        dates = [str(mtg.meeting_date) for mtg in meetings]
        self.assertEqual(dates, [
            '2014-09-01',
            '2014-09-08',
            '2014-09-15',
            '2014-09-22',
            '2014-09-29',
            '2014-10-06',
            '2014-10-13',
            '2014-10-27',
        ])

        # Delete meeting after the end of the recursion
        meeting = model.Meeting.by_id(self.session, 1)
        fedocallib.delete_recursive_meeting(self.session,
                                            meeting=meeting,
                                            del_date=datetime(2015, 10,
                                                              20).date(),
                                            all_meetings=False)

        # After deletion
        meetings = fedocallib.get_by_date(self.session, calendarobj,
                                          datetime(2014, 9, 1).date(),
                                          datetime(2015, 10, 27).date())
        self.assertEqual(len(meetings), 8)
        self.assertEqual(len(ids), 1)
        self.assertEqual(list(ids)[0], 1)
        dates = [str(mtg.meeting_date) for mtg in meetings]
        self.assertEqual(dates, [
            '2014-09-01',
            '2014-09-08',
            '2014-09-15',
            '2014-09-22',
            '2014-09-29',
            '2014-10-06',
            '2014-10-13',
            '2014-10-27',
        ])

        # Delete meeting before the start of the recursion
        # This will delete the first occurrence of the meeting as it is the
        # first one after the date specified.
        meeting = model.Meeting.by_id(self.session, 1)
        fedocallib.delete_recursive_meeting(self.session,
                                            meeting=meeting,
                                            del_date=datetime(2014, 8,
                                                              18).date(),
                                            all_meetings=False)

        # After deletion
        meetings = fedocallib.get_by_date(self.session, calendarobj,
                                          datetime(2014, 8, 1).date(),
                                          datetime(2015, 10, 27).date())
        self.assertEqual(len(meetings), 7)
        self.assertEqual(len(ids), 1)
        self.assertEqual(list(ids)[0], 1)
        dates = [str(mtg.meeting_date) for mtg in meetings]
        self.assertEqual(dates, [
            '2014-09-08',
            '2014-09-15',
            '2014-09-22',
            '2014-09-29',
            '2014-10-06',
            '2014-10-13',
            '2014-10-27',
        ])
    def test_editing_recurring_meeting_one_day_earlier(self):
        """ Test editing moving a meeting one day earlier in a recursion
        """
        # Setup info
        self.__setup_calendar()
        obj = model.Meeting(  # id:1
            meeting_name='test recurring',
            meeting_date=datetime(2014, 9, 1).date(),
            meeting_date_end=datetime(2014, 9, 1).date(),
            meeting_time_start=time(9, 0),
            meeting_time_stop=time(10, 0),
            meeting_information='This is a test meeting recurring',
            calendar_name='test_calendar',
            recursion_frequency=7,
            recursion_ends=datetime(2014, 10, 27).date(),
        )
        obj.add_manager(self.session, 'pingou')
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Before edition
        calendarobj = model.Calendar.by_id(self.session, 'test_calendar')
        meetings = fedocallib.get_by_date(self.session, calendarobj,
                                          datetime(2014, 9, 1).date(),
                                          datetime(2014, 10, 27).date())
        self.assertEqual(len(meetings), 9)
        ids = set([mtg.meeting_id for mtg in meetings])
        self.assertEqual(list(ids)[0], 1)
        dates = [str(mtg.meeting_date) for mtg in meetings]
        self.assertEqual(dates, [
            '2014-09-01',
            '2014-09-08',
            '2014-09-15',
            '2014-09-22',
            '2014-09-29',
            '2014-10-06',
            '2014-10-13',
            '2014-10-20',
            '2014-10-27',
        ])

        # Edit meeting in the middle to move it by one day
        meeting = model.Meeting.by_id(self.session, 1)
        fedocallib.edit_meeting(
            session=self.session,
            meeting=meeting,
            calendarobj=calendarobj,
            fas_user=FakeUser(groups=['fi-apprentice'], username='******'),
            meeting_name='test recurring',
            meeting_date=datetime(2014, 9, 14).date(),
            meeting_date_end=datetime(2014, 9, 14).date(),
            meeting_time_start=time(9, 0),
            meeting_time_stop=time(10, 0),
            comanager='pingou',
            meeting_information='This is a test meeting recurring',
            meeting_location=None,
            tzone='UTC',
            recursion_frequency=7,
            recursion_ends=datetime(2014, 10, 27).date(),
            remind_when=None,
            reminder_from=None,
            remind_who=None,
            full_day=False,
            edit_all_meeting=False,
            admin=False)

        # After edition
        calendarobj = model.Calendar.by_id(self.session, 'test_calendar')
        meetings = fedocallib.get_by_date(self.session, calendarobj,
                                          datetime(2014, 9, 1).date(),
                                          datetime(2014, 10, 27).date())
        #self.assertEqual(len(meetings), 9)
        ids = set([mtg.meeting_id for mtg in meetings])
        #self.assertEqual(list(ids), [1, 2, 3])
        dates = [str(mtg.meeting_date) for mtg in meetings]
        # One meeting moved by 1 day
        self.assertEqual(sorted(dates), [
            '2014-09-01',
            '2014-09-08',
            '2014-09-14',
            '2014-09-22',
            '2014-09-29',
            '2014-10-06',
            '2014-10-13',
            '2014-10-20',
            '2014-10-27',
        ])

        # Edit meeting in the middle to move it by 3 days (earlier)
        meeting = model.Meeting.by_id(self.session, 3)
        fedocallib.edit_meeting(
            session=self.session,
            meeting=meeting,
            calendarobj=calendarobj,
            fas_user=FakeUser(groups=['fi-apprentice'], username='******'),
            meeting_name='test recurring',
            meeting_date=datetime(2014, 9, 26).date(),
            meeting_date_end=datetime(2014, 9, 26).date(),
            meeting_time_start=time(9, 0),
            meeting_time_stop=time(10, 0),
            comanager='pingou',
            meeting_information='This is a test meeting recurring',
            meeting_location=None,
            tzone='UTC',
            recursion_frequency=7,
            recursion_ends=datetime(2014, 10, 27).date(),
            remind_when=None,
            reminder_from=None,
            remind_who=None,
            full_day=False,
            edit_all_meeting=False,
            admin=False)

        # After edition
        calendarobj = model.Calendar.by_id(self.session, 'test_calendar')
        meetings = fedocallib.get_by_date(self.session, calendarobj,
                                          datetime(2014, 9, 1).date(),
                                          datetime(2014, 10, 27).date())
        self.assertEqual(len(meetings), 9)
        ids = set([mtg.meeting_id for mtg in meetings])
        self.assertEqual(list(ids), [1, 2, 3, 4, 5])
        dates = [str(mtg.meeting_date) for mtg in meetings]
        # One meeting moved by 3 day
        self.assertEqual(sorted(dates), [
            '2014-09-01',
            '2014-09-08',
            '2014-09-14',
            '2014-09-22',
            '2014-09-26',
            '2014-10-06',
            '2014-10-13',
            '2014-10-20',
            '2014-10-27',
        ])
Exemplo n.º 8
0
    def test_init_meeting(self):
        """ Test the Meeting init function. """
        caltest = Calendartests('test_init_calendar')
        caltest.session = self.session
        caltest.test_init_calendar()
        obj = model.Meeting(  # id:1
            meeting_name='Fedora-fr-test-meeting',
            meeting_date=TODAY,
            meeting_date_end=TODAY,
            meeting_time_start=time(19, 50),
            meeting_time_stop=time(20, 50),
            meeting_information='This is a test meeting',
            calendar_name='test_calendar')
        obj.add_manager(self.session, 'pingou, shaiton,')
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        obj = model.Meeting(  # id:2
            meeting_name='test-meeting2',
            meeting_date=TODAY + timedelta(days=10),
            meeting_date_end=TODAY + timedelta(days=10),
            meeting_time_start=time(14, 15),
            meeting_time_stop=time(16, 15),
            meeting_information='This is another test meeting',
            calendar_name='test_calendar')
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        obj = model.Meeting(  # id:3
            meeting_name='test-meeting23h59',
            meeting_date=TODAY + timedelta(days=20),
            meeting_date_end=TODAY + timedelta(days=20),
            meeting_time_start=time(23, 00),
            meeting_time_stop=time(23, 59),
            meeting_information='This is another test meeting',
            calendar_name='test_calendar')
        obj.add_manager(self.session, ['pingou23h'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Meeting with end_recursion in the past
        obj = model.Meeting(  # id:4
            meeting_name='test-meeting3',
            meeting_date=TODAY - timedelta(days=16),
            meeting_date_end=TODAY - timedelta(days=16),
            meeting_time_start=time(14, 45),
            meeting_time_stop=time(16, 35),
            meeting_information='Test meeting with past end_recursion.',
            calendar_name='test_calendar3',
            recursion_frequency=7,
            recursion_ends=TODAY - timedelta(days=7))
        obj.add_manager(self.session, ['test2'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Two meetings at the same time
        obj = model.Meeting(  # id:5
            meeting_name='test-meeting-st-1',
            meeting_date=TODAY + timedelta(days=1),
            meeting_date_end=TODAY + timedelta(days=1),
            meeting_time_start=time(14, 00),
            meeting_time_stop=time(16, 00),
            meeting_information='This is a test meeting at the same time',
            calendar_name='test_calendar4',
            meeting_location='NA')
        obj.add_manager(self.session, ['test'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        obj = model.Meeting(  # id:6
            meeting_name='test-meeting-st-2',
            meeting_date=TODAY + timedelta(days=1),
            meeting_date_end=TODAY + timedelta(days=1),
            meeting_time_start=time(14, 00),
            meeting_time_stop=time(16, 00),
            meeting_information='This is a second test meeting at the'
            ' same time',
            calendar_name='test_calendar4',
            meeting_location='EMEA')
        obj.add_manager(self.session, ['test'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Meeting with a recursion
        obj = model.Meeting(  # id:7
            meeting_name='Another test meeting',
            meeting_date=TODAY + timedelta(days=10),
            meeting_date_end=TODAY + timedelta(days=10),
            meeting_time_start=time(2, 00),
            meeting_time_stop=time(3, 00),
            meeting_information='This is a test meeting with recursion',
            calendar_name='test_calendar',
            recursion_frequency=7,
            recursion_ends=TODAY + timedelta(days=90))
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)

        obj = model.Meeting(  # id:8
            meeting_name='Another test meeting2',
            meeting_date=TODAY,
            meeting_date_end=TODAY,
            meeting_time_start=time(12, 00),
            meeting_time_stop=time(13, 00),
            meeting_information='This is a test meeting with recursion2',
            calendar_name='test_calendar',
            recursion_frequency=14,
            recursion_ends=TODAY + timedelta(days=90))
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Meeting with a reminder
        remobj = model.Reminder('H-12', '[email protected]', 'root@localhost',
                                'Come to our test meeting')
        remobj.save(self.session)
        self.session.flush()
        obj = model.Meeting(  # id:9
            meeting_name='Test meeting with reminder',
            meeting_date=TODAY + timedelta(days=11),
            meeting_date_end=TODAY + timedelta(days=11),
            meeting_time_start=time(11, 00),
            meeting_time_stop=time(12, 00),
            meeting_information='This is a test meeting with reminder',
            calendar_name='test_calendar',
            reminder_id=remobj.reminder_id)
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Meeting with a recursion and reminder
        self.session.flush()
        remobj = model.Reminder('H-12', '[email protected]', 'root@localhost',
                                'Come to our test meeting')
        remobj.save(self.session)
        self.session.flush()
        obj = model.Meeting(  # id:10
            meeting_name='Test meeting with reminder and recursion',
            meeting_date=TODAY + timedelta(days=12),
            meeting_date_end=TODAY + timedelta(days=12),
            meeting_time_start=time(10, 00),
            meeting_time_stop=time(11, 00),
            meeting_information='This is a test meeting with recursion'
            ' and reminder',
            calendar_name='test_calendar',
            reminder_id=remobj.reminder_id,
            recursion_frequency=7,
            recursion_ends=TODAY + timedelta(days=60))
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        obj = model.Meeting(  # id:11
            meeting_name='test-meeting-11',
            meeting_date=TODAY + timedelta(days=20),
            meeting_date_end=TODAY + timedelta(days=20),
            meeting_time_start=time(17, 00),
            meeting_time_stop=time(18, 00),
            meeting_information='This is a second test meeting in EMEA',
            calendar_name='test_calendar4',
            meeting_location='EMEA')
        obj.add_manager(self.session, ['test'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Past meeting with a recursion
        obj = model.Meeting(  # id:12
            meeting_name='Another past test meeting',
            meeting_date=TODAY - timedelta(days=14),
            meeting_date_end=TODAY - timedelta(days=14),
            meeting_time_start=time(4, 00),
            meeting_time_stop=time(5, 00),
            meeting_information='This is a past meeting with recursion',
            calendar_name='test_calendar',
            recursion_frequency=7,
            recursion_ends=TODAY + timedelta(days=90),
            full_day=False)
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Full day meeting
        obj = model.Meeting(  # id:13
            meeting_name='Full-day meeting',
            meeting_date=TODAY + timedelta(days=3),
            meeting_date_end=TODAY + timedelta(days=3),
            meeting_time_start=time(0, 00),
            meeting_time_stop=time(23, 59),
            meeting_information='This is a full day meeting',
            calendar_name='test_calendar',
            recursion_frequency=None,
            recursion_ends=None,
            full_day=True)
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Full day meeting with recursion
        obj = model.Meeting(  # id:14
            meeting_name='Full-day meeting with recursion',
            meeting_date=TODAY + timedelta(days=10),
            meeting_date_end=TODAY + timedelta(days=10),
            meeting_time_start=time(0, 00),
            meeting_time_stop=time(23, 59),
            meeting_information='Full day meeting with recursion',
            calendar_name='test_calendar',
            recursion_frequency=7,
            recursion_ends=TODAY + timedelta(days=30),
            full_day=True)
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Full day meeting
        obj = model.Meeting(  # id:15
            meeting_name='Full-day meeting2',
            meeting_date=TODAY + timedelta(days=2),
            meeting_date_end=TODAY + timedelta(days=3),
            meeting_time_start=time(0, 00),
            meeting_time_stop=time(23, 59),
            meeting_information='Full day meeting 2',
            calendar_name='test_calendar2',
            full_day=True)
        obj.add_manager(self.session, ['toshio'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)
Exemplo n.º 9
0
    def test_two_reminder(self, smtp_mock, mail_mock):
        """ Test the cron job for a meeting with a single reminder to send.
        """
        smtp_mock.return_value = FakeSMTP()
        mail_mock.return_value = None

        # Meeting with a reminder
        remobj = model.Reminder('H-12', '[email protected]',
                                '[email protected],[email protected]',
                                'Come to our test meeting')
        remobj.save(self.session)
        self.session.flush()

        date_sa = datetime.utcnow() + timedelta(hours=12)
        date_so = datetime.utcnow() + timedelta(hours=13)

        obj = model.Meeting(  # id:1
            meeting_name='Test meeting with reminder',
            meeting_date=date_sa.date(),
            meeting_date_end=date_so.date(),
            meeting_time_start=date_sa.time(),
            meeting_time_stop=date_so.time(),
            meeting_information='This is a test meeting with reminder',
            calendar_name='test_calendar',
            reminder_id=remobj.reminder_id)
        obj.save(self.session)
        obj.add_manager(self.session, ['pingou'])
        self.session.commit()
        self.assertNotEqual(obj, None)

        with testing.mock_sends(
                api.Message(topic="fedocal.reminder",
                            body={
                                'meeting': {
                                    'meeting_id': 1,
                                    'meeting_name':
                                    'Test meeting with reminder',
                                    'meeting_manager': ['pingou'],
                                    'meeting_date': ANY,
                                    'meeting_date_end': ANY,
                                    'meeting_time_start': ANY,
                                    'meeting_time_stop': ANY,
                                    'meeting_timezone': 'UTC',
                                    'meeting_information':
                                    'This is a test meeting with reminder',
                                    'meeting_location': None,
                                    'calendar_name': 'test_calendar'
                                },
                                'calendar': {
                                    'calendar_name': 'test_calendar',
                                    'calendar_contact': '*****@*****.**',
                                    'calendar_description':
                                    'This is a test calendar',
                                    'calendar_editor_group': 'fi-apprentice',
                                    'calendar_admin_group':
                                    'infrastructure-main2',
                                    'calendar_status': 'Enabled'
                                }
                            })):
            msgs = fedocal_cron.send_reminder()

        self.assertEqual(len(msgs), 1)
        self.assertEqual(msgs[0]['To'], '[email protected], [email protected]')
        self.assertEqual(msgs[0]['From'], '[email protected]')