diff --git a/src/api/schedule.py b/src/api/schedule.py index 9fcd5049f8e66ad2b9257afa9477b4f62c71d3e4..0c37d9db0effaa12d7eb8daeac95886ccfc9b1bf 100644 --- a/src/api/schedule.py +++ b/src/api/schedule.py @@ -87,7 +87,7 @@ class ScheduleEncoder(json.JSONEncoder): days = duration.days hours = duration.seconds // 3600 - minutes = duration.seconds // 60 + minutes = (duration.seconds % 3600) // 60 if days: return f"{days}:{hours:02d}:{minutes:02d}" return f"{hours:02d}:{minutes:02d}" diff --git a/src/api/tests/schedule.py b/src/api/tests/schedule.py index b890bc6fde1d1d5b9740df3a771141e71839aabd..9cff2b76bec8663ee6f4500d21866912919961a4 100644 --- a/src/api/tests/schedule.py +++ b/src/api/tests/schedule.py @@ -22,7 +22,7 @@ class ScheduleTest(TestCase): self.conf.save() self.conf.tracks.create(slug='community', name='Community').save() self.conf.tracks.create(slug='security', name='Security').save() - self.assembly = Assembly(name='TestAssembly', slug='asmbly', conference=self.conf) + self.assembly = Assembly(name='TestAssembly', slug='asmbly', conference=self.conf, state_assembly=Assembly.State.PLACED) self.assembly.save() self.room = Room(conference=self.conf, assembly=self.assembly, name='Foo Room', room_type=Room.RoomType.STAGE) self.room.save() @@ -261,6 +261,34 @@ class ScheduleTest(TestCase): self.assertEqual(400, resp.status_code, f'Unexpected success result from POST: {resp.content}') + def testScheduleExport(self): + # TODO write this test. This just tests some duration formatting edge cases for now + r = self.assembly.rooms.create(conference=self.conf, name='Zelt', room_type='stage') + ev1 = Event( + conference=self.conf, + assembly=self.assembly, + room=r, + name='Example Event', + is_public=True, + schedule_start=self.conf.start, + schedule_duration=timedelta(minutes=120), + ) + ev1.save() + + resp = self.client.get(reverse('api:conference-schedule', kwargs={'conference': self.conf.slug}) + '.xml') + self.assertEqual(resp.status_code, 200) + content = ET.fromstring(resp.content.decode('utf-8')) + day1, *remaining_days = content.findall('day') + for remaining_day in remaining_days: + self.assertEqual(len(remaining_day), 0) + + room, = day1 + event1, = room + self.assertEqual(event1.findtext('title'), ev1.name) + self.assertEqual(event1.findtext('date'), '2020-12-27T01:23:45+01:00') + self.assertEqual(event1.findtext('start'), '01:23') + self.assertEqual(event1.findtext('duration'), '02:00') + def test_cache(self): event = Event(conference=self.conf, assembly=self.assembly, name='Example Event', is_public=False) event.save()