Repository :
http://git.fedorahosted.org/cgit/fedocal.git
On branch : master
---------------------------------------------------------------
commit 380d7589be5afcf698f85cab76fa1100d9d2157f
Author: Pierre-Yves Chibon <pingou(a)pingoured.fr>
Date: Wed Nov 14 17:36:24 2012 +0100
Fix the case the meeting ends at 24:00
Since this is actually not a valid time, we transform it to 23:59 and
convert it back when needed
Cover the new code handling the end time at 24h with tests
and fix the others unit-tests accordingly.
Fixes #11
---------------------------------------------------------------
fedocal/fedocallib/__init__.py | 9 +++++-
fedocal/tests/test_fedocallib.py | 53 +++++++++++++++++++++++++++++--------
fedocal/tests/test_flask.py | 10 +++---
fedocal/tests/test_flask_api.py | 6 ++--
fedocal/tests/test_meeting.py | 49 ++++++++++++++++++++++-------------
fedocal/tests/test_week.py | 4 +-
6 files changed, 90 insertions(+), 41 deletions(-)
diff --git a/fedocal/fedocallib/__init__.py b/fedocal/fedocallib/__init__.py
index e8cd26b..3a41877 100644
--- a/fedocal/fedocallib/__init__.py
+++ b/fedocal/fedocallib/__init__.py
@@ -238,6 +238,8 @@ def get_meetings(session, calendar, year=None, month=None, day=None,
for meeting in week.meetings:
start = meeting.meeting_time_start.hour
stop = meeting.meeting_time_stop.hour
+ if meeting.meeting_time_stop.minute == 59:
+ stop = stop + 1
order = range(0, stop - start)
invorder = order[:]
invorder.reverse()
@@ -555,8 +557,13 @@ def add_meeting(session, calendarobj, fas_user,
meeting_time_start = convert_time(
datetime(2000, 1, 1, int(meeting_time_start), 0),
tzone, 'UTC')
+ tsp_hour = int(meeting_time_stop)
+ tsp_minute = 0
+ if tsp_hour == 24:
+ tsp_hour = 23
+ tsp_minute = 59
meeting_time_stop = convert_time(
- datetime(2000, 1, 1, int(meeting_time_stop), 0),
+ datetime(2000, 1, 1, tsp_hour, tsp_minute),
tzone, 'UTC')
free_time = agenda_is_free(session, calendarobj,
diff --git a/fedocal/tests/test_fedocallib.py b/fedocal/tests/test_fedocallib.py
index 0fb97b7..ad36bb8 100644
--- a/fedocal/tests/test_fedocallib.py
+++ b/fedocal/tests/test_fedocallib.py
@@ -241,6 +241,20 @@ class Fedocallibtests(Modeltests):
self.assertEqual(cnt, 6)
self.assertEqual(meetings['19h00'][0], None)
+ new_day = TODAY + timedelta(days=20)
+ meetings = fedocallib.get_meetings(self.session, calendar,
+ new_day.year, new_day.month, new_day.day)
+ self.assertNotEqual(meetings, None)
+ cnt = 0
+ for meeting in meetings['23h00']:
+ if meeting is not None:
+ for meet in meeting:
+ self.assertEqual(meet.meeting_name,
+ 'test-meeting23h59')
+ else:
+ cnt = cnt + 1
+ self.assertEqual(cnt, 6)
+
# pylint: disable=C0103
def test_get_meetings_with_multiple_same_time(self):
""" Test the get_meetings function when there are several
@@ -320,7 +334,7 @@ class Fedocallibtests(Modeltests):
""" Test the get_future_single_meeting_of_user function.
"""
self.__setup_meeting()
meetings = fedocallib.get_future_single_meeting_of_user(self.session,
- 'pingou', TODAY)
+ 'pingou,', TODAY)
self.assertNotEqual(meetings, None)
self.assertEqual(len(meetings), 3)
self.assertEqual(meetings[0].meeting_name,
@@ -381,7 +395,7 @@ class Fedocallibtests(Modeltests):
def test_delete_recursive_meeting(self):
""" Test the delete_recursive_meeting function.
"""
self.__setup_meeting()
- meeting = model.Meeting.by_id(self.session, 7)
+ meeting = model.Meeting.by_id(self.session, 8)
self.assertNotEqual(meeting, None)
self.assertEqual(meeting.meeting_name, 'Another test meeting2')
self.assertEqual(meeting.recursion_ends,
@@ -389,7 +403,7 @@ class Fedocallibtests(Modeltests):
fedocallib.delete_recursive_meeting(self.session, meeting)
- meeting = model.Meeting.by_id(self.session, 7)
+ meeting = model.Meeting.by_id(self.session, 8)
self.assertNotEqual(meeting, None)
self.assertEqual(meeting.meeting_name, 'Another test meeting2')
self.assertEqual(meeting.recursion_ends, date.today())
@@ -399,7 +413,7 @@ class Fedocallibtests(Modeltests):
""" Test the delete_recursive_meeting for past end_datefunction.
"""
self.__setup_meeting()
- meeting = model.Meeting.by_id(self.session, 3)
+ meeting = model.Meeting.by_id(self.session, 4)
self.assertNotEqual(meeting, None)
self.assertEqual(meeting.meeting_name, 'test-meeting3')
self.assertEqual(meeting.recursion_ends,
@@ -407,7 +421,7 @@ class Fedocallibtests(Modeltests):
fedocallib.delete_recursive_meeting(self.session, meeting)
- meeting = model.Meeting.by_id(self.session, 3)
+ meeting = model.Meeting.by_id(self.session, 4)
self.assertNotEqual(meeting, None)
self.assertEqual(meeting.meeting_name, 'test-meeting3')
self.assertEqual(meeting.recursion_ends,
@@ -502,7 +516,7 @@ class Fedocallibtests(Modeltests):
calendar = vobject.iCalendar()
self.__setup_meeting()
meetings = fedocallib.get_future_single_meeting_of_user(
- self.session, 'pingou', TODAY)
+ self.session, 'pingou,', TODAY)
self.assertNotEqual(meetings, None)
self.assertEqual(len(meetings), 3)
@@ -513,7 +527,7 @@ class Fedocallibtests(Modeltests):
'Fedora-fr-test-meeting', 'Test meeting with reminder',
'test-meeting2'])
self.assertTrue(event.organizer.value in [
- 'pingou', 'pingou, shaiton'])
+ 'pingou,', 'pingou, shaiton,'])
cnt = cnt + 1
self.assertEqual(cnt, len(meetings))
@@ -529,7 +543,7 @@ class Fedocallibtests(Modeltests):
for meeting in meetings:
self.assertTrue(meeting.meeting_name in ['test-meeting2',
'Another test meeting', 'Test meeting with reminder'])
- self.assertEqual(meeting.meeting_manager, 'pingou')
+ self.assertEqual(meeting.meeting_manager, 'pingou,')
# pylint: disable=C0103
def test_get_meetings_by_date_and_region(self):
@@ -546,7 +560,7 @@ class Fedocallibtests(Modeltests):
self.assertNotEqual(obj, None)
self.assertEqual(len(obj), 1)
self.assertEqual(obj[0].meeting_name, 'test-meeting-st-2')
- self.assertEqual(obj[0].meeting_manager, 'test')
+ self.assertEqual(obj[0].meeting_manager, 'test,')
self.assertEqual(obj[0].calendar.calendar_name, 'test_calendar4')
self.assertEqual(obj[0].meeting_information,
'This is a second test meeting at the same time')
@@ -562,7 +576,7 @@ class Fedocallibtests(Modeltests):
self.assertNotEqual(obj, None)
self.assertEqual(len(obj), 1)
self.assertEqual(obj[0].meeting_name, 'test-meeting-st-1')
- self.assertEqual(obj[0].meeting_manager, 'test')
+ self.assertEqual(obj[0].meeting_manager, 'test,')
self.assertEqual(obj[0].calendar.calendar_name, 'test_calendar4')
self.assertEqual(obj[0].meeting_information,
'This is a test meeting at the same time')
@@ -815,14 +829,29 @@ class Fedocallibtests(Modeltests):
'Information', 'EMEA', 'Europe/Paris',
7, date.today() + timedelta(days=28),
'H-12', 'test(a)example.org')
- meeting = model.Meeting.by_id(self.session, 8)
+ meeting = model.Meeting.by_id(self.session, 9)
self.assertNotEqual(meeting, None)
self.assertEqual(meeting.meeting_name, 'Name')
self.assertEqual(meeting.meeting_manager, 'username,pingou')
self.assertEqual(meeting.meeting_information, 'Information')
self.assertEqual(meeting.meeting_region, 'EMEA')
self.assertEqual(meeting.recursion_frequency, 7)
- self.assertEqual(meeting.reminder, None)
+ self.assertEqual(meeting.reminder.reminder_offset, 'H-12')
+ self.assertEqual(meeting.reminder.reminder_to, 'test(a)example.org')
+
+ fedocallib.add_meeting(
+ self.session, calendarobj, fasuser,
+ 'Name23h59', date.today() + timedelta(days=1),
+ 23, 24, None,
+ 'Information', 'EMEA', 'Europe/Paris',
+ None, None,
+ None, None)
+ meeting = model.Meeting.by_id(self.session, 10)
+ self.assertNotEqual(meeting, None)
+ self.assertEqual(meeting.meeting_name, 'Name23h59')
+ self.assertEqual(meeting.meeting_manager, 'username,')
+ self.assertEqual(meeting.meeting_information, 'Information')
+ self.assertEqual(meeting.meeting_time_stop.minute, 59)
if __name__ == '__main__':
SUITE = unittest.TestLoader().loadTestsFromTestCase(Fedocallibtests)
diff --git a/fedocal/tests/test_flask.py b/fedocal/tests/test_flask.py
index 3d49716..0438a9d 100644
--- a/fedocal/tests/test_flask.py
+++ b/fedocal/tests/test_flask.py
@@ -147,14 +147,14 @@ class Flasktests(Modeltests):
self.assertTrue('DESCRIPTION:This is a test meeting with '\
'recursion' in output.data)
self.assertTrue('ORGANIZER:pingou' in output.data)
- self.assertEqual(output.data.count('BEGIN:VEVENT'), 6)
- self.assertEqual(output.data.count('END:VEVENT'), 6)
+ self.assertEqual(output.data.count('BEGIN:VEVENT'), 7)
+ self.assertEqual(output.data.count('END:VEVENT'), 7)
def test_view_meeting(self):
""" Test the view_meeting function. """
self.__setup_db()
- output = self.app.get('/meeting/4/')
+ output = self.app.get('/meeting/5/')
self.assertEqual(output.status_code, 200)
self.assertTrue('<title> test-meeting-st-1 -
Fedocal</title>' \
in output.data)
@@ -167,7 +167,7 @@ class Flasktests(Modeltests):
""" Test the view_meeting_page function. """
self.__setup_db()
- output = self.app.get('/meeting/4/1/')
+ output = self.app.get('/meeting/5/1/')
self.assertEqual(output.status_code, 200)
self.assertTrue('<title> test-meeting-st-1 -
Fedocal</title>' \
in output.data)
@@ -176,7 +176,7 @@ class Flasktests(Modeltests):
self.assertTrue('This is a test meeting at the same time' in
output.data)
- output = self.app.get('/meeting/4/0/')
+ output = self.app.get('/meeting/5/0/')
self.assertEqual(output.status_code, 200)
self.assertTrue('<title> test-meeting-st-1 -
Fedocal</title>' \
not in output.data)
diff --git a/fedocal/tests/test_flask_api.py b/fedocal/tests/test_flask_api.py
index 6f43542..3849214 100644
--- a/fedocal/tests/test_flask_api.py
+++ b/fedocal/tests/test_flask_api.py
@@ -94,10 +94,10 @@ class FlaskApitests(Modeltests):
output = self.app.get('/api/date/test_calendar/')
self.assertEqual(output.status_code, 200)
self.assertTrue('"retrieval": "ok"' in output.data)
- self.assertTrue(' "meeting_manager": "pingou,
shaiton",' in \
+ self.assertTrue(' "meeting_manager": "pingou,
shaiton,",' in \
output.data)
self.assertTrue('"meeting_name": "test-meeting2"' in
output.data)
- self.assertEqual(output.data.count('meeting_name'), 6)
+ self.assertEqual(output.data.count('meeting_name'), 7)
output = self.app.get('/api/date/test_calendar4/')
self.assertEqual(output.status_code, 200)
@@ -121,7 +121,7 @@ class FlaskApitests(Modeltests):
end_date))
self.assertEqual(output.status_code, 200)
self.assertTrue('"retrieval": "ok"' in output.data)
- self.assertTrue(' "meeting_manager": "pingou,
shaiton",' in \
+ self.assertTrue(' "meeting_manager": "pingou,
shaiton,",' in \
output.data)
self.assertTrue('"meeting_name": "Another test
meeting2",' in \
output.data)
diff --git a/fedocal/tests/test_meeting.py b/fedocal/tests/test_meeting.py
index aab8422..0fa6fe2 100644
--- a/fedocal/tests/test_meeting.py
+++ b/fedocal/tests/test_meeting.py
@@ -58,7 +58,7 @@ class Meetingtests(Modeltests):
caltest.test_init_calendar()
obj = model.Meeting(
meeting_name='Fedora-fr-test-meeting',
- meeting_manager='pingou, shaiton',
+ meeting_manager='pingou, shaiton,',
meeting_date=TODAY,
meeting_date_end=TODAY,
meeting_time_start=time(19, 00),
@@ -71,7 +71,7 @@ class Meetingtests(Modeltests):
obj = model.Meeting(
meeting_name='test-meeting2',
- meeting_manager='pingou',
+ meeting_manager='pingou,',
meeting_date=TODAY + timedelta(days=10),
meeting_date_end=TODAY + timedelta(days=10),
meeting_time_start=time(14, 00),
@@ -82,10 +82,23 @@ class Meetingtests(Modeltests):
self.session.commit()
self.assertNotEqual(obj, None)
+ obj = model.Meeting(
+ meeting_name='test-meeting23h59',
+ meeting_manager='pingou23h,',
+ 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.save(self.session)
+ self.session.commit()
+ self.assertNotEqual(obj, None)
+
# Meeting with end_recursion in the past
obj = model.Meeting(
meeting_name='test-meeting3',
- meeting_manager='test2',
+ meeting_manager='test2,',
meeting_date=TODAY - timedelta(days=16),
meeting_date_end=TODAY - timedelta(days=16),
meeting_time_start=time(14, 00),
@@ -101,7 +114,7 @@ class Meetingtests(Modeltests):
# Two meetings at the same time
obj = model.Meeting(
meeting_name='test-meeting-st-1',
- meeting_manager='test',
+ meeting_manager='test,',
meeting_date=TODAY + timedelta(days=1),
meeting_date_end=TODAY + timedelta(days=1),
meeting_time_start=time(14, 00),
@@ -115,7 +128,7 @@ class Meetingtests(Modeltests):
obj = model.Meeting(
meeting_name='test-meeting-st-2',
- meeting_manager='test',
+ meeting_manager='test,',
meeting_date=TODAY + timedelta(days=1),
meeting_date_end=TODAY + timedelta(days=1),
meeting_time_start=time(14, 00),
@@ -131,7 +144,7 @@ class Meetingtests(Modeltests):
# Meeting with a recursion
obj = model.Meeting(
meeting_name='Another test meeting',
- meeting_manager='pingou',
+ meeting_manager='pingou,',
meeting_date=TODAY + timedelta(days=10),
meeting_date_end=TODAY + timedelta(days=10),
meeting_time_start=time(2, 00),
@@ -143,7 +156,7 @@ class Meetingtests(Modeltests):
obj.save(self.session)
obj = model.Meeting(
meeting_name='Another test meeting2',
- meeting_manager='pingou',
+ meeting_manager='pingou,',
meeting_date=TODAY,
meeting_date_end=TODAY,
meeting_time_start=time(12, 00),
@@ -163,7 +176,7 @@ class Meetingtests(Modeltests):
self.session.flush()
obj = model.Meeting(
meeting_name='Test meeting with reminder',
- meeting_manager='pingou',
+ meeting_manager='pingou,',
meeting_date=TODAY + timedelta(days=11),
meeting_date_end=TODAY + timedelta(days=11),
meeting_time_start=time(11, 00),
@@ -183,7 +196,7 @@ class Meetingtests(Modeltests):
self.session.flush()
obj = model.Meeting(
meeting_name='Test meeting with reminder and recursion',
- meeting_manager='pingou',
+ meeting_manager='pingou,',
meeting_date=TODAY + timedelta(days=12),
meeting_date_end=TODAY + timedelta(days=12),
meeting_time_start=time(10, 00),
@@ -272,7 +285,7 @@ class Meetingtests(Modeltests):
obj = model.Meeting.by_id(self.session, 1)
self.assertNotEqual(obj, None)
self.assertEqual(obj.meeting_name, 'Fedora-fr-test-meeting')
- self.assertEqual(obj.meeting_manager, 'pingou, shaiton')
+ self.assertEqual(obj.meeting_manager, 'pingou, shaiton,')
self.assertEqual(obj.calendar.calendar_name, 'test_calendar')
self.assertEqual(obj.calendar.calendar_description,
'This is a test calendar')
@@ -284,7 +297,7 @@ class Meetingtests(Modeltests):
obj = model.Meeting.by_id(self.session, 1)
exp = u'{\n '\
'"meeting_name": "Fedora-fr-test-meeting",\n '\
- '"meeting_manager": "pingou, shaiton",\n '\
+ '"meeting_manager": "pingou, shaiton,",\n '\
'"meeting_date": "%s",\n '\
'"meeting_date_end": "%s",\n '\
'"meeting_time_start": "19:00:00",\n '\
@@ -307,14 +320,14 @@ class Meetingtests(Modeltests):
self.assertNotEqual(obj, None)
self.assertEqual(len(obj), 2)
self.assertEqual(obj[0].meeting_name, 'Fedora-fr-test-meeting')
- self.assertEqual(obj[0].meeting_manager, 'pingou, shaiton')
+ self.assertEqual(obj[0].meeting_manager, 'pingou, shaiton,')
self.assertEqual(obj[0].calendar.calendar_name, 'test_calendar')
self.assertEqual(obj[0].meeting_information,
'This is a test meeting')
self.assertEqual(obj[0].reminder, None)
self.assertEqual(obj[1].meeting_name, 'Another test meeting2')
- self.assertEqual(obj[1].meeting_manager, 'pingou')
+ self.assertEqual(obj[1].meeting_manager, 'pingou,')
self.assertEqual(obj[1].calendar.calendar_name, 'test_calendar')
self.assertEqual(obj[1].meeting_information,
'This is a test meeting with recursion2')
@@ -340,7 +353,7 @@ class Meetingtests(Modeltests):
self.assertNotEqual(obj, None)
self.assertEqual(len(obj), 1)
self.assertEqual(obj[0].meeting_name, 'test-meeting-st-2')
- self.assertEqual(obj[0].meeting_manager, 'test')
+ self.assertEqual(obj[0].meeting_manager, 'test,')
self.assertEqual(obj[0].calendar.calendar_name, 'test_calendar4')
self.assertEqual(obj[0].meeting_information,
'This is a second test meeting at the same time')
@@ -351,7 +364,7 @@ class Meetingtests(Modeltests):
self.assertNotEqual(obj, None)
self.assertEqual(len(obj), 1)
self.assertEqual(obj[0].meeting_name, 'test-meeting-st-1')
- self.assertEqual(obj[0].meeting_manager, 'test')
+ self.assertEqual(obj[0].meeting_manager, 'test,')
self.assertEqual(obj[0].calendar.calendar_name, 'test_calendar4')
self.assertEqual(obj[0].meeting_information,
'This is a test meeting at the same time')
@@ -412,7 +425,7 @@ class Meetingtests(Modeltests):
""" Test the Meeting get_past_meeting_of_user function.
"""
self.test_init_meeting()
meetings = model.Meeting.get_past_meeting_of_user(self.session,
- 'pingou', TODAY + timedelta(days=1))
+ 'pingou,', TODAY + timedelta(days=1))
self.assertNotEqual(meetings, None)
self.assertEqual(len(meetings), 2)
self.assertEqual(meetings[1].meeting_name,
@@ -421,7 +434,7 @@ class Meetingtests(Modeltests):
'Fedora-fr-test-meeting')
meetings = model.Meeting.get_past_meeting_of_user(self.session,
- 'shaiton', TODAY + timedelta(days=1))
+ 'shaiton,', TODAY + timedelta(days=1))
self.assertNotEqual(meetings, None)
self.assertEqual(len(meetings), 1)
self.assertEqual(meetings[0].meeting_name,
@@ -450,7 +463,7 @@ class Meetingtests(Modeltests):
"""
self.test_init_meeting()
meetings = model.Meeting.get_future_single_meeting_of_user(
- self.session, 'pingou', TODAY)
+ self.session, 'pingou,', TODAY)
self.assertNotEqual(meetings, None)
self.assertEqual(len(meetings), 3)
self.assertEqual(meetings[0].meeting_name,
diff --git a/fedocal/tests/test_week.py b/fedocal/tests/test_week.py
index f736f24..74afb83 100644
--- a/fedocal/tests/test_week.py
+++ b/fedocal/tests/test_week.py
@@ -95,7 +95,7 @@ class Weektests(Modeltests):
self.assertEqual(weekobj.meetings[0].meeting_name,
'Fedora-fr-test-meeting')
self.assertEqual(weekobj.meetings[0].meeting_manager,
- 'pingou, shaiton')
+ 'pingou, shaiton,')
self.assertEqual(weekobj.meetings[0].calendar.calendar_name,
'test_calendar')
self.assertEqual(weekobj.meetings[0].calendar.calendar_description,
@@ -107,7 +107,7 @@ class Weektests(Modeltests):
self.assertEqual(weekobj.meetings[1].meeting_name,
'Another test meeting2')
self.assertEqual(weekobj.meetings[1].meeting_manager,
- 'pingou')
+ 'pingou,')
self.assertEqual(weekobj.meetings[1].meeting_information,
'This is a test meeting with recursion2')