@@ -33,11 +33,27 @@ def write_materials_file(self, meeting, doc, content):
3333 with open (path , "w" ) as f :
3434 f .write (content )
3535
36+ def write_materials_files (self , meeting , session ):
37+
38+ draft = Document .objects .filter (type = "draft" , group = session .group ).first ()
39+
40+ self .write_materials_file (meeting , session .materials .get (type = "agenda" ),
41+ "1. WG status (15 minutes)\n \n 2. Status of %s\n \n " % draft .name )
42+
43+ self .write_materials_file (meeting , session .materials .get (type = "minutes" ),
44+ "1. More work items underway\n \n 2. The draft will be finished before next meeting\n \n " )
45+
46+ self .write_materials_file (meeting , session .materials .filter (type = "slides" ).exclude (states__type__slug = 'slides' ,states__slug = 'deleted' ).first (),
47+ "This is a slideshow" )
48+
49+
3650 def test_agenda (self ):
3751 meeting = make_meeting_test_data ()
3852 session = Session .objects .filter (meeting = meeting , group__acronym = "mars" ).first ()
3953 slot = TimeSlot .objects .get (scheduledsession__session = session )
4054
55+ self .write_materials_files (meeting , session )
56+
4157 time_interval = "%s-%s" % (slot .time .strftime ("%H%M" ), (slot .time + slot .duration ).strftime ("%H%M" ))
4258
4359 # plain
@@ -51,6 +67,13 @@ def test_agenda(self):
5167 self .assertTrue (slot .location .name in agenda_content )
5268 self .assertTrue (time_interval in agenda_content )
5369
70+ # Make sure there's a frame for the agenda and it points to the right place
71+ self .assertTrue (any ([session .materials .get (type = 'agenda' ).href () in x .attrib ['xsrc' ] for x in q ('tr.groupagenda iframe' )]))
72+
73+ # Make sure undeleted slides are present and deleted slides are not
74+ self .assertTrue (any ([session .materials .filter (type = 'slides' ).exclude (states__type__slug = 'slides' ,states__slug = 'deleted' ).first ().title in x .text for x in q ('tr.groupagenda a' )]))
75+ self .assertFalse (any ([session .materials .filter (type = 'slides' ,states__type__slug = 'slides' ,states__slug = 'deleted' ).first ().title in x .text for x in q ('tr.groupagenda a' )]))
76+
5477 # mobile
5578 r = self .client .get (urlreverse ("ietf.meeting.views.agenda" , kwargs = dict (num = meeting .number )),
5679 { '_testiphone' : "1" })
@@ -81,6 +104,10 @@ def test_agenda(self):
81104 self .assertTrue (session .group .parent .acronym .upper () in agenda_content )
82105 self .assertTrue (slot .location .name in agenda_content )
83106
107+ self .assertTrue (session .materials .get (type = 'agenda' ).external_url in r .content )
108+ self .assertTrue (session .materials .filter (type = 'slides' ).exclude (states__type__slug = 'slides' ,states__slug = 'deleted' ).first ().external_url in r .content )
109+ self .assertFalse (session .materials .filter (type = 'slides' ,states__type__slug = 'slides' ,states__slug = 'deleted' ).first ().external_url in r .content )
110+
84111 # iCal
85112 r = self .client .get (urlreverse ("ietf.meeting.views.ical_agenda" , kwargs = dict (num = meeting .number ))
86113 + "?" + session .group .parent .acronym .upper ())
@@ -92,6 +119,11 @@ def test_agenda(self):
92119 self .assertTrue ("BEGIN:VTIMEZONE" in agenda_content )
93120 self .assertTrue ("END:VTIMEZONE" in agenda_content )
94121
122+ self .assertTrue (session .agenda ().get_absolute_url () in r .content )
123+ self .assertTrue (session .materials .filter (type = 'slides' ).exclude (states__type__slug = 'slides' ,states__slug = 'deleted' ).first ().get_absolute_url () in r .content )
124+ # TODO - the ics view uses .all on a queryset in a view so it's showing the deleted slides.
125+ #self.assertFalse(session.materials.filter(type='slides',states__type__slug='slides',states__slug='deleted').first().get_absolute_url() in r.content)
126+
95127 # week view
96128 r = self .client .get (urlreverse ("ietf.meeting.views.week_view" , kwargs = dict (num = meeting .number )))
97129 self .assertEqual (r .status_code , 200 )
@@ -102,16 +134,8 @@ def test_agenda(self):
102134 def test_materials (self ):
103135 meeting = make_meeting_test_data ()
104136 session = Session .objects .filter (meeting = meeting , group__acronym = "mars" ).first ()
105- draft = Document .objects .filter (type = "draft" , group = session .group ).first ()
106-
107- self .write_materials_file (meeting , session .materials .get (type = "agenda" ),
108- "1. WG status (15 minutes)\n \n 2. Status of %s\n \n " % draft .name )
109-
110- self .write_materials_file (meeting , session .materials .get (type = "minutes" ),
111- "1. More work items underway\n \n 2. The draft will be finished before next meeting\n \n " )
112137
113- self .write_materials_file (meeting , session .materials .get (type = "slides" ),
114- "This is a slideshow" )
138+ self .write_materials_files (meeting , session )
115139
116140 # session agenda
117141 r = self .client .get (urlreverse ("ietf.meeting.views.session_agenda" ,
@@ -132,6 +156,7 @@ def test_materials(self):
132156 self .assertTrue (row .find ("a:contains(\" Agenda\" )" ))
133157 self .assertTrue (row .find ("a:contains(\" Minutes\" )" ))
134158 self .assertTrue (row .find ("a:contains(\" Slideshow\" )" ))
159+ self .assertFalse (row .find ("a:contains(\" Bad Slideshow\" )" ))
135160
136161 # FIXME: missing tests of .pdf/.tar generation (some code can
137162 # probably be lifted from similar tests in iesg/tests.py)
0 commit comments