|
23 | 23 | from ietf.meeting.helpers import send_interim_approval_request |
24 | 24 | from ietf.meeting.helpers import send_interim_cancellation_notice |
25 | 25 | from ietf.meeting.helpers import send_interim_minutes_reminder, populate_important_dates |
26 | | -from ietf.meeting.models import Session, TimeSlot, Meeting |
| 26 | +from ietf.meeting.models import Session, TimeSlot, Meeting, SchedTimeSessAssignment |
27 | 27 | from ietf.meeting.test_data import make_meeting_test_data, make_interim_meeting |
28 | 28 | from ietf.meeting.utils import finalize |
29 | 29 | from ietf.name.models import SessionStatusName |
@@ -424,6 +424,40 @@ def test_important_dates(self): |
424 | 424 | self.assertEqual(r.status_code, 200) |
425 | 425 | self.assertIn(str(meeting.importantdate_set.first().date), unicontent(r)) |
426 | 426 |
|
| 427 | + def test_group_ical(self): |
| 428 | + meeting = make_meeting_test_data() |
| 429 | + s1 = Session.objects.filter(meeting=meeting, group__acronym="mars").first() |
| 430 | + a1 = s1.official_timeslotassignment() |
| 431 | + t1 = a1.timeslot |
| 432 | + # Create an extra session |
| 433 | + t2 = TimeSlotFactory.create(meeting=meeting, time=datetime.datetime.combine(meeting.date, datetime.time(11, 30))) |
| 434 | + s2 = SessionFactory.create(meeting=meeting, group=s1.group, add_to_schedule=False) |
| 435 | + SchedTimeSessAssignment.objects.create(timeslot=t2, session=s2, schedule=meeting.agenda) |
| 436 | + # |
| 437 | + url = urlreverse('ietf.meeting.views.ical_agenda', kwargs={'num':meeting.number, 'acronym':s1.group.acronym, }) |
| 438 | + r = self.client.get(url) |
| 439 | + self.assertEqual(r.status_code, 200) |
| 440 | + self.assertEqual(r.get('Content-Type'), "text/calendar") |
| 441 | + self.assertContains(r, 'BEGIN:VEVENT') |
| 442 | + self.assertEqual(r.content.count('UID'), 2) |
| 443 | + self.assertContains(r, 'SUMMARY:mars - Martian Special Interest Group') |
| 444 | + self.assertContains(r, t1.time.strftime('%Y%m%dT%H%M%S')) |
| 445 | + self.assertContains(r, t2.time.strftime('%Y%m%dT%H%M%S')) |
| 446 | + self.assertContains(r, 'END:VEVENT') |
| 447 | + # |
| 448 | + url = urlreverse('ietf.meeting.views.ical_agenda', kwargs={'num':meeting.number, 'session_id':s1.id, }) |
| 449 | + r = self.client.get(url) |
| 450 | + self.assertEqual(r.status_code, 200) |
| 451 | + self.assertEqual(r.get('Content-Type'), "text/calendar") |
| 452 | + self.assertContains(r, 'BEGIN:VEVENT') |
| 453 | + self.assertEqual(r.content.count('UID'), 1) |
| 454 | + self.assertContains(r, 'SUMMARY:mars - Martian Special Interest Group') |
| 455 | + self.assertContains(r, t1.time.strftime('%Y%m%dT%H%M%S')) |
| 456 | + self.assertNotContains(r, t2.time.strftime('%Y%m%dT%H%M%S')) |
| 457 | + self.assertContains(r, 'END:VEVENT') |
| 458 | + |
| 459 | + |
| 460 | + |
427 | 461 | class EditTests(TestCase): |
428 | 462 | def setUp(self): |
429 | 463 | # make sure we have the colors of the area |
|
0 commit comments