1+ from django .conf import settings
12from django .core .urlresolvers import reverse
23from ietf .utils import TestCase
34
4- from ietf .meeting .models import Meeting , Schedule
5+ from ietf .person .models import Person
6+ from ietf .group .models import Group , GroupEvent
7+ from ietf .meeting .models import Meeting , Schedule , Room , TimeSlot , ScheduledSession
58from ietf .utils .test_data import make_test_data
9+ from ietf .utils .mail import outbox
10+ from ietf .meeting .test_data import make_meeting_test_data
611
712from pyquery import PyQuery
13+ from pprint import pprint
14+
15+ import datetime
16+ import os
17+ import shutil
818
919SECR_USER = 'secretary'
1020
1121class MainTestCase (TestCase ):
22+ def setUp (self ):
23+ self .bluesheet_dir = os .path .abspath ("tmp-bluesheet-dir" )
24+ self .bluesheet_path = os .path .join (self .bluesheet_dir ,'blue_sheet.rtf' )
25+ os .mkdir (self .bluesheet_dir )
26+ settings .SECR_BLUE_SHEET_PATH = self .bluesheet_path
27+
28+ def tearDown (self ):
29+ shutil .rmtree (self .bluesheet_dir )
30+
1231 def test_main (self ):
1332 "Main Test"
1433 url = reverse ('meetings' )
@@ -17,19 +36,161 @@ def test_main(self):
1736
1837 def test_view (self ):
1938 "View Test"
20- draft = make_test_data ()
21- meeting = Meeting .objects .all ()[0 ]
39+ meeting = make_meeting_test_data ()
2240 url = reverse ('meetings_view' , kwargs = {'meeting_id' :meeting .number })
2341 response = self .client .get (url , REMOTE_USER = SECR_USER )
2442 self .assertEqual (response .status_code , 200 )
25-
43+ q = PyQuery (response .content )
44+ self .assertEqual (len (q ('#id_schedule_selector option' )),2 )
45+
2646 def test_add_meeting (self ):
2747 "Add Meeting"
2848 url = reverse ('meetings_add' )
29- post_data = dict (number = 1 ,city = 'Seattle ' ,date = '2014-07-20' ,country = 'US ' ,
30- time_zone = 'America/Los_Angeles ' ,venue_name = 'Hilton' ,
49+ post_data = dict (number = 1 ,city = 'Toronto ' ,date = '2014-07-20' ,country = 'CA ' ,
50+ time_zone = 'America/New_York ' ,venue_name = 'Hilton' ,
3151 venue_addr = '100 First Ave' )
3252 response = self .client .post (url , post_data ,follow = True ,REMOTE_USER = SECR_USER )
3353 self .assertEqual (response .status_code , 200 )
3454 self .assertEqual (Meeting .objects .count (),1 )
3555 self .assertEqual (Schedule .objects .count (),1 )
56+
57+ def test_edit_meeting (self ):
58+ "Edit Meeting"
59+ Meeting .objects .create (number = 1 ,
60+ type_id = 'ietf' ,
61+ date = datetime .datetime (2014 ,7 ,20 ))
62+ url = reverse ('meetings_edit_meeting' ,kwargs = {'meeting_id' :1 })
63+ post_data = dict (number = '1' ,date = '2014-07-20' ,city = 'Toronto' )
64+ response = self .client .post (url , post_data ,follow = True ,REMOTE_USER = SECR_USER )
65+ self .assertEqual (response .status_code , 200 )
66+ meeting = Meeting .objects .get (number = 1 )
67+ self .assertEqual (meeting .city ,'Toronto' )
68+
69+ def test_blue_sheets (self ):
70+ "Test Bluesheets"
71+ meeting = make_meeting_test_data ()
72+ url = reverse ('meetings_blue_sheet' ,kwargs = {'meeting_id' :meeting .number })
73+ response = self .client .get (url , REMOTE_USER = SECR_USER )
74+ self .assertEqual (response .status_code , 200 )
75+
76+ url = reverse ('meetings_blue_sheet_generate' ,kwargs = {'meeting_id' :meeting .number })
77+ response = self .client .get (url , REMOTE_USER = SECR_USER )
78+ self .assertEqual (response .status_code , 302 )
79+ self .assertTrue (os .path .exists (self .bluesheet_path ))
80+
81+ def test_notifications (self ):
82+ "Test Notifications"
83+ meeting = make_meeting_test_data ()
84+ url = reverse ('meetings_notifications' ,kwargs = {'meeting_id' :42 })
85+ response = self .client .get (url , REMOTE_USER = SECR_USER )
86+ self .assertEqual (response .status_code , 200 )
87+ q = PyQuery (response .content )
88+ self .assertEqual (q ('#id_notification_list' ).html (),'ames,mars' )
89+
90+ # test that only changes since last notification show up
91+ mars_group = Group .objects .get (acronym = 'mars' )
92+ ames_group = Group .objects .get (acronym = 'ames' )
93+ now = datetime .datetime .now ()
94+ then = datetime .datetime .now ()+ datetime .timedelta (hours = 1 )
95+ person = Person .objects .get (name = "(System)" )
96+ GroupEvent .objects .create (group = mars_group ,time = now ,type = 'sent_notification' ,
97+ by = person ,desc = 'sent scheduled notification for %s' % meeting )
98+ ss = meeting .agenda .scheduledsession_set .get (session__group = ames_group )
99+ ss .modified = then
100+ ss .save ()
101+ response = self .client .get (url , REMOTE_USER = SECR_USER )
102+ self .assertEqual (response .status_code , 200 )
103+ q = PyQuery (response .content )
104+ self .assertEqual (q ('#id_notification_list' ).html (),'ames' )
105+
106+ # test that email goes out
107+ mailbox_before = len (outbox )
108+ response = self .client .post (url , REMOTE_USER = SECR_USER )
109+ self .assertEqual (response .status_code , 302 )
110+ self .assertEqual (len (outbox ), mailbox_before + 1 )
111+
112+ def test_meetings_select (self ):
113+ meeting = make_meeting_test_data ()
114+ url = reverse ('meetings_select' ,kwargs = {'meeting_id' :42 ,'schedule_name' :'test-agenda' })
115+ response = self .client .get (url , REMOTE_USER = SECR_USER )
116+ self .assertEqual (response .status_code , 200 )
117+
118+ def test_meetings_rooms (self ):
119+ meeting = make_meeting_test_data ()
120+ url = reverse ('meetings_rooms' ,kwargs = {'meeting_id' :42 ,'schedule_name' :'test-agenda' })
121+ response = self .client .get (url , REMOTE_USER = SECR_USER )
122+ self .assertEqual (response .status_code , 200 )
123+ q = PyQuery (response .content )
124+ self .assertEqual (len (q ("#id_rooms_table tr" )),2 )
125+
126+ # test delete
127+ # first unschedule sessions so we can delete
128+ ScheduledSession .objects .filter (schedule = meeting .agenda ).delete ()
129+ response = self .client .post (url , {
130+ 'room-TOTAL_FORMS' : q ('input[name="room-TOTAL_FORMS"]' ).val (),
131+ 'room-INITIAL_FORMS' : q ('input[name="room-INITIAL_FORMS"]' ).val (),
132+ 'room-0-meeting' : q ('input[name="room-0-meeting"]' ).val (),
133+ 'room-0-id' : q ('input[name="room-0-id"]' ).val (),
134+ 'room-0-name' : q ('input[name="room-0-name"]' ).val (),
135+ 'room-0-capacity' : q ('input[name="room-0-capacity"]' ).val (),
136+ 'room-0-DELETE' : 'on'
137+ }, REMOTE_USER = SECR_USER )
138+ self .assertEqual (response .status_code , 302 )
139+ self .assertEqual (Room .objects .filter (meeting = meeting ).count (),0 )
140+
141+ def test_meetings_times (self ):
142+ meeting = make_meeting_test_data ()
143+ url = reverse ('meetings_times' ,kwargs = {'meeting_id' :42 ,'schedule_name' :'test-agenda' })
144+ response = self .client .get (url , REMOTE_USER = SECR_USER )
145+ self .assertEqual (response .status_code , 200 )
146+
147+ def test_meetings_times_delete (self ):
148+ meeting = make_meeting_test_data ()
149+ qs = TimeSlot .objects .filter (meeting = meeting ,type = 'session' )
150+ before = qs .count ()
151+ url = reverse ('meetings_times_delete' ,kwargs = {
152+ 'meeting_id' :42 ,
153+ 'schedule_name' :'test-agenda' ,
154+ 'time' :qs .first ().time .strftime ("%Y:%m:%d:%H:%M" )
155+ })
156+ response = self .client .get (url , REMOTE_USER = SECR_USER )
157+ self .assertEqual (response .status_code , 302 )
158+ pprint (response .content )
159+ after = TimeSlot .objects .filter (meeting = meeting ,type = 'session' ).count ()
160+ self .assertEqual (after ,before - (Room .objects .filter (meeting = meeting ).count ()))
161+
162+ def test_meetings_times_edit (self ):
163+ meeting = make_meeting_test_data ()
164+ timeslot = TimeSlot .objects .filter (meeting = meeting ,type = 'session' ).first ()
165+ url = reverse ('meetings_times_edit' ,kwargs = {
166+ 'meeting_id' :42 ,
167+ 'schedule_name' :'test-agenda' ,
168+ 'time' :timeslot .time .strftime ("%Y:%m:%d:%H:%M" )
169+ })
170+ response = self .client .post (url , {
171+ 'day' :'1' ,
172+ 'time' :'08:00' ,
173+ 'duration_hours' :'1' ,
174+ 'duration_minutes' :'0' ,
175+ 'name' :'Testing'
176+ },REMOTE_USER = SECR_USER )
177+ pprint (response .content )
178+ self .assertEqual (response .status_code , 302 )
179+ self .assertTrue (TimeSlot .objects .filter (meeting = meeting ,name = 'Testing' ))
180+
181+ def test_meetings_nonsession (self ):
182+ meeting = make_meeting_test_data ()
183+ url = reverse ('meetings_non_session' ,kwargs = {'meeting_id' :42 ,'schedule_name' :'test-agenda' })
184+ response = self .client .get (url , REMOTE_USER = SECR_USER )
185+ self .assertEqual (response .status_code , 200 )
186+
187+ def test_meetings_select_group (self ):
188+ meeting = make_meeting_test_data ()
189+ url = reverse ('meetings_select_group' ,kwargs = {'meeting_id' :42 ,'schedule_name' :'test-agenda' })
190+ response = self .client .get (url , REMOTE_USER = SECR_USER )
191+ self .assertEqual (response .status_code , 200 )
192+ q = PyQuery (response .content )
193+ self .assertEqual (len (q ("#id_scheduled_sessions" )),1 )
194+
195+ # def test_meetings_schedule():
196+
0 commit comments