1515from ietf .person .models import Person
1616from ietf .secr .meetings .forms import get_times
1717from ietf .utils .mail import outbox
18- from ietf .utils .test_utils import TestCase
18+ from ietf .utils .test_utils import TestCase
1919
2020
2121class SecrMeetingTestCase (TestCase ):
@@ -25,14 +25,14 @@ def setUp(self):
2525 settings .SECR_PROCEEDINGS_DIR = self .proceedings_dir
2626 self .saved_agenda_path = settings .AGENDA_PATH
2727 settings .AGENDA_PATH = self .proceedings_dir
28-
28+
2929 self .bluesheet_dir = self .tempdir ('bluesheet' )
3030 self .bluesheet_path = os .path .join (self .bluesheet_dir ,'blue_sheet.rtf' )
3131 self .saved_secr_blue_sheet_path = settings .SECR_BLUE_SHEET_PATH
3232 settings .SECR_BLUE_SHEET_PATH = self .bluesheet_path
3333
3434 self .materials_dir = self .tempdir ('materials' )
35-
35+
3636 def tearDown (self ):
3737 settings .SECR_PROCEEDINGS_DIR = self .saved_secr_proceedings_dir
3838 settings .AGENDA_PATH = self .saved_agenda_path
@@ -61,7 +61,7 @@ def test_view(self):
6161 self .assertEqual (response .status_code , 200 )
6262 q = PyQuery (response .content )
6363 self .assertEqual (len (q ('#id_schedule_selector option' )),3 )
64-
64+
6565 def test_add_meeting (self ):
6666 "Add Meeting"
6767 meeting = make_meeting_test_data ()
@@ -85,7 +85,7 @@ def test_add_meeting(self):
8585 self .assertEqual (response .status_code , 200 )
8686 self .assertEqual (Meeting .objects .count (),count + 1 )
8787 new_meeting = Meeting .objects .get (number = number )
88-
88+
8989 # ensure new schedule is populated with specials sessions from previous meeting
9090 self .assertTrue (new_meeting .agenda )
9191 self .assertTrue (meeting .agenda .assignments .filter (timeslot__type = 'break' ).count () > 0 )
@@ -129,12 +129,12 @@ def test_blue_sheets_upload(self):
129129 "Test Bluesheets"
130130 meeting = make_meeting_test_data ()
131131 os .makedirs (os .path .join (self .proceedings_dir ,str (meeting .number ),'bluesheets' ))
132-
132+
133133 url = reverse ('ietf.secr.meetings.views.blue_sheet' ,kwargs = {'meeting_id' :meeting .number })
134134 self .client .login (username = "secretary" , password = "secretary+password" )
135135 response = self .client .get (url )
136136 self .assertEqual (response .status_code , 200 )
137-
137+
138138 # test upload
139139 group = Group .objects .filter (type = 'wg' ,state = 'active' ).first ()
140140 file = StringIO ('dummy bluesheet' )
@@ -152,7 +152,7 @@ def test_blue_sheets_generate(self):
152152 response = self .client .post (url )
153153 self .assertEqual (response .status_code , 302 )
154154 self .assertTrue (os .path .exists (self .bluesheet_path ))
155-
155+
156156 def test_notifications (self ):
157157 "Test Notifications"
158158 meeting = make_meeting_test_data ()
@@ -162,7 +162,7 @@ def test_notifications(self):
162162 self .assertEqual (response .status_code , 200 )
163163 q = PyQuery (response .content )
164164 self .assertEqual (q ('#id_notification_list' ).html (),'ames, mars' )
165-
165+
166166 # test that only changes since last notification show up
167167 mars_group = Group .objects .get (acronym = 'mars' )
168168 ames_group = Group .objects .get (acronym = 'ames' )
@@ -179,21 +179,21 @@ def test_notifications(self):
179179 self .assertEqual (response .status_code , 200 )
180180 q = PyQuery (response .content )
181181 self .assertEqual (q ('#id_notification_list' ).html (),'ames' )
182-
182+
183183 # test that email goes out
184184 mailbox_before = len (outbox )
185185 self .client .login (username = "secretary" , password = "secretary+password" )
186186 response = self .client .post (url )
187187 self .assertEqual (response .status_code , 302 )
188188 self .assertEqual (len (outbox ), mailbox_before + 1 )
189-
189+
190190 def test_meetings_select (self ):
191191 make_meeting_test_data ()
192192 url = reverse ('ietf.secr.meetings.views.select' ,kwargs = {'meeting_id' :42 ,'schedule_name' :'test-agenda' })
193193 self .client .login (username = "secretary" , password = "secretary+password" )
194194 response = self .client .get (url )
195195 self .assertEqual (response .status_code , 200 )
196-
196+
197197 def test_meetings_rooms (self ):
198198 meeting = make_meeting_test_data ()
199199 url = reverse ('ietf.secr.meetings.views.rooms' ,kwargs = {'meeting_id' :42 ,'schedule_name' :'test-agenda' })
@@ -202,7 +202,7 @@ def test_meetings_rooms(self):
202202 self .assertEqual (response .status_code , 200 )
203203 q = PyQuery (response .content )
204204 self .assertEqual (len (q ("#id_rooms_table tr input[type='checkbox']" )),meeting .room_set .count ())
205-
205+
206206 # test delete
207207 # first unschedule sessions so we can delete
208208 SchedTimeSessAssignment .objects .filter (schedule = meeting .agenda ).delete ()
@@ -219,7 +219,7 @@ def test_meetings_rooms(self):
219219 response = self .client .post (url , post_dict )
220220 self .assertEqual (response .status_code , 302 )
221221 self .assertEqual (Room .objects .filter (meeting = meeting ).count (),0 )
222-
222+
223223 def test_meetings_times (self ):
224224 make_meeting_test_data ()
225225 url = reverse ('ietf.secr.meetings.views.times' ,kwargs = {'meeting_id' :42 ,'schedule_name' :'test-agenda' })
@@ -239,7 +239,7 @@ def test_meetings_times_delete(self):
239239 meeting = make_meeting_test_data ()
240240 qs = TimeSlot .objects .filter (meeting = meeting ,type = 'session' )
241241 before = qs .count ()
242- expected_deletion_count = qs .filter (time = qs .first ().time ).count ()
242+ expected_deletion_count = qs .filter (time = qs .first ().time ).count ()
243243 url = reverse ('ietf.secr.meetings.views.times_delete' ,kwargs = {
244244 'meeting_id' :meeting .number ,
245245 'schedule_name' :meeting .agenda .name ,
@@ -256,7 +256,7 @@ def test_meetings_times_delete(self):
256256 self .assertRedirects (response , redirect_url )
257257 after = TimeSlot .objects .filter (meeting = meeting ,type = 'session' ).count ()
258258 self .assertEqual (after ,before - expected_deletion_count )
259-
259+
260260 def test_meetings_times_edit (self ):
261261 meeting = make_meeting_test_data ()
262262 timeslot = TimeSlot .objects .filter (meeting = meeting ,type = 'session' ).first ()
@@ -274,14 +274,37 @@ def test_meetings_times_edit(self):
274274 })
275275 self .assertEqual (response .status_code , 302 )
276276 self .assertTrue (TimeSlot .objects .filter (meeting = meeting ,name = 'Testing' ))
277-
277+
278278 def test_meetings_nonsession (self ):
279279 make_meeting_test_data ()
280280 url = reverse ('ietf.secr.meetings.views.non_session' ,kwargs = {'meeting_id' :42 ,'schedule_name' :'test-agenda' })
281281 self .client .login (username = "secretary" , password = "secretary+password" )
282282 response = self .client .get (url )
283283 self .assertEqual (response .status_code , 200 )
284-
284+
285+ def test_meetings_nonsession_add_valid (self ):
286+ meeting = make_meeting_test_data ()
287+ room = meeting .room_set .first ()
288+ group = Group .objects .get (acronym = 'secretariat' )
289+ url = reverse ('ietf.secr.meetings.views.non_session' ,kwargs = {'meeting_id' :42 ,'schedule_name' :'test-agenda' })
290+ self .client .login (username = "secretary" , password = "secretary+password" )
291+ response = self .client .post (url , {
292+ 'day' :'1' ,
293+ 'time' :'08:00' ,
294+ 'duration' :'02:00' ,
295+ 'name' :'Testing' ,
296+ 'short' :'test' ,
297+ 'type' :'reg' ,
298+ 'group' :group .pk ,
299+ 'location' : room .pk ,
300+ })
301+ print response .content
302+ self .assertRedirects (response , url )
303+ session = Session .objects .filter (meeting = meeting , name = 'Testing' ).first ()
304+ self .assertTrue (session )
305+
306+ self .assertEqual (session .timeslotassignments .first ().timeslot .location , room )
307+
285308 def test_meetings_nonsession_add_invalid (self ):
286309 make_meeting_test_data ()
287310 group = Group .objects .get (acronym = 'secretariat' )
@@ -396,4 +419,3 @@ def test_get_times(self):
396419 values = [ x [0 ] for x in times ]
397420 self .assertTrue (times )
398421 self .assertTrue (timeslot .time .strftime ('%H%M' ) in values )
399-
0 commit comments