|
3 | 3 | import datetime |
4 | 4 | import urlparse |
5 | 5 |
|
| 6 | +import debug # pyflakes:ignore |
| 7 | + |
6 | 8 | from django.core.urlresolvers import reverse as urlreverse |
7 | 9 | from django.conf import settings |
8 | 10 |
|
|
13 | 15 | from ietf.meeting.test_data import make_meeting_test_data |
14 | 16 | from ietf.utils.test_utils import TestCase, login_testing_unauthorized, unicontent |
15 | 17 |
|
| 18 | +from ietf.person.factories import PersonFactory |
16 | 19 | from ietf.group.factories import GroupFactory |
17 | 20 | from ietf.meeting.factories import SessionFactory, SessionPresentationFactory |
| 21 | +from ietf.doc.factories import DocumentFactory |
18 | 22 |
|
19 | 23 | class MeetingTests(TestCase): |
20 | 24 | def setUp(self): |
@@ -338,8 +342,51 @@ def test_session_details(self): |
338 | 342 | SessionPresentationFactory.create(session=session,document__type_id='slides') |
339 | 343 | SessionPresentationFactory.create(session=session,document__type_id='agenda') |
340 | 344 |
|
341 | | - url = urlreverse("ietf.meeting.views.session_details", kwargs=dict(num=session.meeting.number, acronym=group.acronym)) |
| 345 | + url = urlreverse('ietf.meeting.views.session_details', kwargs=dict(num=session.meeting.number, acronym=group.acronym)) |
342 | 346 | r = self.client.get(url) |
343 | 347 | self.assertTrue(all([x in unicontent(r) for x in ('slides','agenda','minutes','draft')])) |
344 | 348 | self.assertFalse('deleted' in unicontent(r)) |
345 | 349 |
|
| 350 | + def test_add_session_drafts(self): |
| 351 | + group = GroupFactory.create(type_id='wg',state_id='active') |
| 352 | + group_chair = PersonFactory.create() |
| 353 | + group.role_set.create(name_id='chair',person = group_chair, email = group_chair.email()) |
| 354 | + session = SessionFactory.create(meeting__type_id='ietf',group=group, meeting__date=datetime.date.today()+datetime.timedelta(days=90)) |
| 355 | + SessionPresentationFactory.create(session=session,document__type_id='draft',rev=None) |
| 356 | + old_draft = session.sessionpresentation_set.filter(document__type='draft').first().document |
| 357 | + new_draft = DocumentFactory(type_id='draft') |
| 358 | + |
| 359 | + url = urlreverse('ietf.meeting.views.add_session_drafts', kwargs=dict(num=session.meeting.number, session_id=session.pk)) |
| 360 | + |
| 361 | + r = self.client.get(url) |
| 362 | + self.assertEqual(r.status_code, 404) |
| 363 | + |
| 364 | + self.client.login(username="plain",password="plain+password") |
| 365 | + r = self.client.get(url) |
| 366 | + self.assertEqual(r.status_code, 404) |
| 367 | + |
| 368 | + self.client.login(username=group_chair.user.username, password='%s+password'%group_chair.user.username) |
| 369 | + r = self.client.get(url) |
| 370 | + self.assertEqual(r.status_code, 200) |
| 371 | + self.assertTrue(old_draft.name in unicontent(r)) |
| 372 | + |
| 373 | + r = self.client.post(url,dict(drafts=[new_draft.name,old_draft.name])) |
| 374 | + self.assertTrue(r.status_code, 200) |
| 375 | + q=PyQuery(r.content) |
| 376 | + self.assertTrue(q('form .alert-danger:contains("Already linked:")')) |
| 377 | + |
| 378 | + self.assertEqual(1,session.sessionpresentation_set.count()) |
| 379 | + r = self.client.post(url,dict(drafts=[new_draft.name,])) |
| 380 | + self.assertTrue(r.status_code, 302) |
| 381 | + self.assertEqual(2,session.sessionpresentation_set.count()) |
| 382 | + |
| 383 | + session.meeting.date -= datetime.timedelta(days=180) |
| 384 | + session.meeting.save() |
| 385 | + r = self.client.get(url) |
| 386 | + self.assertEqual(r.status_code,404) |
| 387 | + self.client.login(username='secretary',password='secretary+password') |
| 388 | + r = self.client.get(url) |
| 389 | + self.assertEqual(r.status_code,200) |
| 390 | + q = PyQuery(r.content) |
| 391 | + self.assertEqual(1,len(q(".alert-warning:contains('may affect published proceedings')"))) |
| 392 | + |
0 commit comments