Skip to content

Commit a5dab53

Browse files
committed
Improve the tests for session draft bundles to exercise the code that extracts draftnames from agendas. Commit ready for merge.
- Legacy-Id: 17266
1 parent 7c3a4ce commit a5dab53

2 files changed

Lines changed: 32 additions & 20 deletions

File tree

ietf/meeting/tests_views.py

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
from ietf.meeting.utils import finalize, condition_slide_order
4040
from ietf.meeting.utils import add_event_info_to_session_qs
4141
from ietf.meeting.utils import current_session_status
42+
from ietf.meeting.views import session_draft_list
4243
from ietf.name.models import SessionStatusName, ImportantDateName
4344
from ietf.utils.decorators import skip_coverage
4445
from ietf.utils.mail import outbox, empty_outbox
@@ -49,7 +50,7 @@
4950
from ietf.group.factories import GroupFactory, GroupEventFactory, RoleFactory
5051
from ietf.meeting.factories import ( SessionFactory, SessionPresentationFactory, ScheduleFactory,
5152
MeetingFactory, FloorPlanFactory, TimeSlotFactory, SlideSubmissionFactory )
52-
from ietf.doc.factories import DocumentFactory
53+
from ietf.doc.factories import DocumentFactory, WgDraftFactory
5354
from ietf.submit.tests import submission_file
5455

5556

@@ -504,37 +505,46 @@ def test_group_ical(self):
504505
self.assertNotContains(r, t2.time.strftime('%Y%m%dT%H%M%S'))
505506
self.assertContains(r, 'END:VEVENT')
506507

507-
def test_session_draft_tarfile(self):
508+
def build_session_setup(self):
509+
# This setup is intentionally unusual - the session has one draft attached as a session presentation,
510+
# but lists a different on in its agenda. The expectation is that the pdf and tgz views will return both.
508511
session = SessionFactory(group__type_id='wg',meeting__type_id='ietf')
509-
doc = DocumentFactory(type_id='draft')
510-
session.sessionpresentation_set.create(document=doc)
511-
file,_ = submission_file(name=doc.name,format='txt',templatename='test_submission.txt',group=session.group,rev="00")
512-
filename = os.path.join(doc.get_file_path(),file.name)
513-
with io.open(filename,'w') as draftbits:
514-
draftbits.write(file.getvalue())
515-
512+
draft1 = WgDraftFactory(group=session.group)
513+
session.sessionpresentation_set.create(document=draft1)
514+
draft2 = WgDraftFactory(group=session.group)
515+
agenda = DocumentFactory(type_id='agenda',group=session.group, uploaded_filename='agenda-%s-%s' % (session.meeting.number,session.group.acronym), states=[('agenda','active')])
516+
session.sessionpresentation_set.create(document=agenda)
517+
self.write_materials_file(session.meeting, session.materials.get(type="agenda"),
518+
"1. WG status (15 minutes)\n\n2. Status of %s\n\n" % draft2.name)
519+
filenames = []
520+
for d in (draft1, draft2):
521+
file,_ = submission_file(name=d.name,format='txt',templatename='test_submission.txt',group=session.group,rev="00")
522+
filename = os.path.join(d.get_file_path(),file.name)
523+
with io.open(filename,'w') as draftbits:
524+
draftbits.write(file.getvalue())
525+
filenames.append(filename)
526+
self.assertEqual( len(session_draft_list(session.meeting.number,session.group.acronym)), 2)
527+
return (session, filenames)
528+
529+
def test_session_draft_tarfile(self):
530+
session, filenames = self.build_session_setup()
516531
url = urlreverse('ietf.meeting.views.session_draft_tarfile', kwargs={'num':session.meeting.number,'acronym':session.group.acronym})
517532
response = self.client.get(url)
518533
self.assertEqual(response.status_code, 200)
519534
self.assertEqual(response.get('Content-Type'), 'application/octet-stream')
520-
os.unlink(filename)
535+
for filename in filenames:
536+
os.unlink(filename)
521537

522538
@skipIf(skip_pdf_tests, skip_message)
523539
@skip_coverage
524540
def test_session_draft_pdf(self):
525-
session = SessionFactory(group__type_id='wg',meeting__type_id='ietf')
526-
doc = DocumentFactory(type_id='draft')
527-
session.sessionpresentation_set.create(document=doc)
528-
file,_ = submission_file(name=doc.name,format='txt',templatename='test_submission.txt',group=session.group,rev="00")
529-
filename = os.path.join(doc.get_file_path(),file.name)
530-
with io.open(filename,'w') as draftbits:
531-
draftbits.write(file.getvalue())
532-
541+
session, filenames = self.build_session_setup()
533542
url = urlreverse('ietf.meeting.views.session_draft_pdf', kwargs={'num':session.meeting.number,'acronym':session.group.acronym})
534543
response = self.client.get(url)
535544
self.assertEqual(response.status_code, 200)
536545
self.assertEqual(response.get('Content-Type'), 'application/pdf')
537-
os.unlink(filename)
546+
for filename in filenames:
547+
os.unlink(filename)
538548

539549
def test_current_materials(self):
540550
url = urlreverse('ietf.meeting.views.current_materials')

ietf/meeting/views.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,10 @@
3939
from django.forms.models import modelform_factory, inlineformset_factory
4040
from django.template import TemplateDoesNotExist
4141
from django.template.loader import render_to_string
42+
from django.utils.encoding import force_str
4243
from django.utils.functional import curry
43-
from django.views.decorators.cache import cache_page
4444
from django.utils.text import slugify
45+
from django.views.decorators.cache import cache_page
4546
from django.views.decorators.csrf import ensure_csrf_cookie, csrf_exempt
4647
from django.views.generic import RedirectView
4748

@@ -686,6 +687,7 @@ def session_draft_list(num, acronym):
686687

687688
result = []
688689
for draft in drafts:
690+
draft = force_str(draft)
689691
try:
690692
if re.search('-[0-9]{2}$', draft):
691693
doc_name = draft

0 commit comments

Comments
 (0)