Skip to content

Commit 0e932ff

Browse files
committed
Port edit position and send ballot comment views with tests to new schema
- Legacy-Id: 2852
1 parent 996b060 commit 0e932ff

8 files changed

Lines changed: 406 additions & 68 deletions

File tree

ietf/idrfc/idrfc_wrapper.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -642,7 +642,7 @@ def _init(self):
642642
for pos in BallotPosition.objects.filter(doc=self.ballot, type="changed_ballot_position", time__gte=self.ballot.process_start, time__lte=self.ballot.process_end).select_related('ad').order_by("-time", '-id'):
643643
if pos.ad not in seen:
644644
p = dict(ad_name=pos.ad.get_name(),
645-
ad_username="", # FIXME: don't seem to have username at the moment
645+
ad_username=pos.ad.pk, # ought to rename this in doc_ballot_list
646646
position=pos.pos.name,
647647
is_old_ad=pos.ad not in active_ads,
648648
old_positions=[])
@@ -676,7 +676,7 @@ def _init(self):
676676
for ad in active_ads:
677677
if ad not in seen:
678678
d = dict(ad_name=ad.get_name(),
679-
ad_username="", # FIXME: don't seem to have username at the moment
679+
ad_username=pos.ad.pk,
680680
position="No Record",
681681
)
682682
positions.append(d)

ietf/idrfc/testsREDESIGN.py

Lines changed: 75 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -534,63 +534,74 @@ def test_add_comment(self):
534534
self.assertTrue(draft.name in mail_outbox[-1]['Subject'])
535535

536536
class EditPositionTestCase(django.test.TestCase):
537-
fixtures = ['base', 'draft', 'ballot']
537+
fixtures = ['names']
538538

539539
def test_edit_position(self):
540-
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
541-
url = urlreverse('doc_edit_position', kwargs=dict(name=draft.filename))
542-
login_testing_unauthorized(self, "rhousley", url)
540+
draft = make_test_data()
541+
url = urlreverse('doc_edit_position', kwargs=dict(name=draft.name))
542+
login_testing_unauthorized(self, "ad", url)
543543

544+
ad = Email.objects.get(address="aread@ietf.org")
545+
544546
# normal get
545547
r = self.client.get(url)
546548
self.assertEquals(r.status_code, 200)
547549
q = PyQuery(r.content)
548550
self.assertTrue(len(q('form input[name=position]')) > 0)
549-
self.assertEquals(len(q('form textarea[name=comment_text]')), 1)
551+
self.assertEquals(len(q('form textarea[name=comment]')), 1)
550552

551553
# vote
552554
events_before = draft.event_set.count()
553-
self.assertTrue(not Position.objects.filter(ballot=draft.idinternal.ballot, ad__login_name="rhousley"))
554555

555556
r = self.client.post(url, dict(position="discuss",
556-
discuss_text="This is a discussion test.",
557-
comment_text="This is a test."))
557+
discuss="This is a discussion test.",
558+
comment="This is a test."))
558559
self.assertEquals(r.status_code, 302)
559560

560-
pos = Position.objects.get(ballot=draft.idinternal.ballot, ad__login_name="rhousley")
561-
self.assertTrue("This is a discussion test." in IESGDiscuss.objects.get(ballot=draft.idinternal.ballot, ad__login_name="rhousley").text)
562-
self.assertTrue("This is a test." in IESGComment.objects.get(ballot=draft.idinternal.ballot, ad__login_name="rhousley").text)
563-
self.assertTrue(pos.discuss)
564-
self.assertTrue(not (pos.yes or pos.noobj or pos.abstain or pos.recuse))
565-
561+
pos = draft.latest_event(BallotPosition, ad=ad)
562+
self.assertEquals(pos.pos.slug, "discuss")
563+
self.assertTrue("This is a discussion test." in pos.discuss)
564+
self.assertTrue(pos.discuss_time != None)
565+
self.assertTrue("This is a test." in pos.comment)
566+
self.assertTrue(pos.comment_time != None)
567+
self.assertTrue("New position" in pos.desc)
566568
self.assertEquals(draft.event_set.count(), events_before + 3)
567-
self.assertTrue("New position" in draft.idinternal.comments()[2].comment_text)
568569

569570
# recast vote
570571
events_before = draft.event_set.count()
571572
r = self.client.post(url, dict(position="noobj"))
572573
self.assertEquals(r.status_code, 302)
573574

574-
pos = Position.objects.filter(ballot=draft.idinternal.ballot, ad__login_name="rhousley")[0]
575-
self.assertTrue(pos.noobj)
576-
self.assertTrue(not (pos.yes or pos.abstain or pos.recuse))
577-
self.assertTrue(pos.discuss == -1)
575+
pos = draft.latest_event(BallotPosition, ad=ad)
576+
self.assertEquals(pos.pos.slug, "noobj")
578577
self.assertEquals(draft.event_set.count(), events_before + 1)
579-
self.assertTrue("Position" in draft.idinternal.comments()[0].comment_text)
578+
self.assertTrue("Position for" in pos.desc)
580579

581580
# clear vote
582581
events_before = draft.event_set.count()
583-
r = self.client.post(url, dict(position=""))
582+
r = self.client.post(url, dict(position="norecord"))
584583
self.assertEquals(r.status_code, 302)
585584

586-
pos = Position.objects.filter(ballot=draft.idinternal.ballot, ad__login_name="rhousley")
587-
self.assertEquals(len(pos), 0)
585+
pos = draft.latest_event(BallotPosition, ad=ad)
586+
self.assertEquals(pos.pos.slug, "norecord")
588587
self.assertEquals(draft.event_set.count(), events_before + 1)
589-
self.assertTrue("Position" in draft.idinternal.comments()[0].comment_text)
588+
self.assertTrue("Position for" in pos.desc)
589+
590+
# change comment
591+
events_before = draft.event_set.count()
592+
r = self.client.post(url, dict(position="norecord", comment="New comment."))
593+
self.assertEquals(r.status_code, 302)
594+
595+
pos = draft.latest_event(BallotPosition, ad=ad)
596+
self.assertEquals(pos.pos.slug, "norecord")
597+
self.assertEquals(draft.event_set.count(), events_before + 2)
598+
self.assertTrue("Ballot comment text updated" in pos.desc)
599+
590600
def test_edit_position_as_secretary(self):
591-
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
592-
url = urlreverse('doc_edit_position', kwargs=dict(name=draft.filename))
593-
url += "?ad=rhousley"
601+
draft = make_test_data()
602+
url = urlreverse('doc_edit_position', kwargs=dict(name=draft.name))
603+
ad = Email.objects.get(address="aread@ietf.org")
604+
url += "?ad=%s" % ad.pk
594605
login_testing_unauthorized(self, "secretary", url)
595606

596607
# normal get
@@ -599,23 +610,30 @@ def test_edit_position_as_secretary(self):
599610
q = PyQuery(r.content)
600611
self.assertTrue(len(q('form input[name=position]')) > 0)
601612

602-
# vote for rhousley
613+
# vote on behalf of AD
603614
events_before = draft.event_set.count()
604-
self.assertTrue(not Position.objects.filter(ballot=draft.idinternal.ballot, ad__login_name="rhousley"))
605-
606615
r = self.client.post(url, dict(position="discuss"))
607616
self.assertEquals(r.status_code, 302)
608617

609-
pos = Position.objects.get(ballot=draft.idinternal.ballot, ad__login_name="rhousley")
610-
self.assertTrue(pos.discuss)
611-
self.assertTrue(not (pos.yes or pos.noobj or pos.abstain or pos.recuse))
612-
618+
pos = draft.latest_event(BallotPosition, ad=ad)
619+
self.assertEquals(pos.pos.slug, "discuss")
620+
self.assertTrue("New position" in pos.desc)
621+
self.assertTrue("by Sec" in pos.desc)
613622

614623
def test_send_ballot_comment(self):
615-
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
616-
url = urlreverse('doc_send_ballot_comment', kwargs=dict(name=draft.filename))
617-
login_as = "rhousley"
618-
login_testing_unauthorized(self, login_as, url)
624+
draft = make_test_data()
625+
draft.notify = "somebody@example.com"
626+
draft.save()
627+
628+
ad = Email.objects.get(address="aread@ietf.org")
629+
630+
BallotPosition.objects.create(doc=draft, type="changed_ballot_position",
631+
by=ad, ad=ad, pos=BallotPositionName.objects.get(slug="yes"),
632+
comment="Test!",
633+
comment_time=datetime.datetime.now())
634+
635+
url = urlreverse('doc_send_ballot_comment', kwargs=dict(name=draft.name))
636+
login_testing_unauthorized(self, "ad", url)
619637

620638
# normal get
621639
r = self.client.get(url)
@@ -625,24 +643,23 @@ def test_send_ballot_comment(self):
625643

626644
# send
627645
mailbox_before = len(mail_outbox)
628-
IESGComment.objects.create(ballot=draft.idinternal.ballot,
629-
ad=IESGLogin.objects.get(login_name=login_as),
630-
text="Test!", date=date.today(),
631-
revision=draft.revision_display(), active=1)
632-
646+
633647
r = self.client.post(url, dict(cc="test@example.com", cc_state_change="1"))
634648
self.assertEquals(r.status_code, 302)
635649

636650
self.assertEquals(len(mail_outbox), mailbox_before + 1)
637-
self.assertTrue("COMMENT" in mail_outbox[-1]['Subject'])
651+
m = mail_outbox[-1]
652+
self.assertTrue("COMMENT" in m['Subject'])
653+
self.assertTrue(draft.name in m['Subject'])
654+
self.assertTrue("Test!" in str(m))
638655

639656

640657
class DeferBallotTestCase(django.test.TestCase):
641658
fixtures = ['base', 'draft', 'ballot']
642659

643660
def test_defer_ballot(self):
644661
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
645-
url = urlreverse('doc_defer_ballot', kwargs=dict(name=draft.filename))
662+
url = urlreverse('doc_defer_ballot', kwargs=dict(name=draft.name))
646663
login_testing_unauthorized(self, "rhousley", url)
647664

648665
# normal get
@@ -666,7 +683,7 @@ def test_defer_ballot(self):
666683

667684
def test_undefer_ballot(self):
668685
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
669-
url = urlreverse('doc_undefer_ballot', kwargs=dict(name=draft.filename))
686+
url = urlreverse('doc_undefer_ballot', kwargs=dict(name=draft.name))
670687
login_testing_unauthorized(self, "rhousley", url)
671688

672689
draft.idinternal.ballot.defer = True
@@ -691,7 +708,7 @@ class BallotWriteupsTestCase(django.test.TestCase):
691708

692709
def test_edit_last_call_text(self):
693710
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
694-
url = urlreverse('doc_ballot_lastcall', kwargs=dict(name=draft.filename))
711+
url = urlreverse('doc_ballot_lastcall', kwargs=dict(name=draft.name))
695712
login_testing_unauthorized(self, "secretary", url)
696713

697714
# normal get
@@ -728,7 +745,7 @@ def test_edit_last_call_text(self):
728745

729746
def test_request_last_call(self):
730747
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
731-
url = urlreverse('doc_ballot_lastcall', kwargs=dict(name=draft.filename))
748+
url = urlreverse('doc_ballot_lastcall', kwargs=dict(name=draft.name))
732749
login_testing_unauthorized(self, "secretary", url)
733750

734751
mailbox_before = len(mail_outbox)
@@ -745,7 +762,7 @@ def test_request_last_call(self):
745762

746763
def test_edit_ballot_writeup(self):
747764
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
748-
url = urlreverse('doc_ballot_writeupnotes', kwargs=dict(name=draft.filename))
765+
url = urlreverse('doc_ballot_writeupnotes', kwargs=dict(name=draft.name))
749766
login_testing_unauthorized(self, "secretary", url)
750767

751768
# normal get
@@ -765,7 +782,7 @@ def test_edit_ballot_writeup(self):
765782

766783
def test_issue_ballot(self):
767784
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
768-
url = urlreverse('doc_ballot_writeupnotes', kwargs=dict(name=draft.filename))
785+
url = urlreverse('doc_ballot_writeupnotes', kwargs=dict(name=draft.name))
769786
login_testing_unauthorized(self, "rhousley", url)
770787

771788
draft.idinternal.ballot.ballot_issued = False
@@ -800,7 +817,7 @@ def test_issue_ballot(self):
800817

801818
def test_edit_approval_text(self):
802819
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
803-
url = urlreverse('doc_ballot_approvaltext', kwargs=dict(name=draft.filename))
820+
url = urlreverse('doc_ballot_approvaltext', kwargs=dict(name=draft.name))
804821
login_testing_unauthorized(self, "secretary", url)
805822

806823
# normal get
@@ -840,7 +857,7 @@ class ApproveBallotTestCase(django.test.TestCase):
840857

841858
def test_approve_ballot(self):
842859
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
843-
url = urlreverse('doc_approve_ballot', kwargs=dict(name=draft.filename))
860+
url = urlreverse('doc_approve_ballot', kwargs=dict(name=draft.name))
844861
login_testing_unauthorized(self, "secretary", url)
845862

846863
# normal get
@@ -875,7 +892,7 @@ def test_make_last_call(self):
875892
draft.lc_expiration_date = None
876893
draft.save()
877894

878-
url = urlreverse('doc_make_last_call', kwargs=dict(name=draft.filename))
895+
url = urlreverse('doc_make_last_call', kwargs=dict(name=draft.name))
879896
login_testing_unauthorized(self, "secretary", url)
880897

881898
# normal get
@@ -984,7 +1001,7 @@ def test_expire_ids(self):
9841001
self.assertEquals(int(draft.revision), int(revision_before) + 1)
9851002
self.assertTrue(not os.path.exists(os.path.join(self.id_dir, txt)))
9861003
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, txt)))
987-
new_txt = "%s-%s.txt" % (draft.filename, draft.revision)
1004+
new_txt = "%s-%s.txt" % (draft.name, draft.revision)
9881005
self.assertTrue(os.path.exists(os.path.join(self.id_dir, new_txt)))
9891006

9901007
def test_clean_up_id_files(self):
@@ -1015,9 +1032,9 @@ def test_clean_up_id_files(self):
10151032
draft.status_id = 3
10161033
draft.save()
10171034

1018-
txt = "%s-%s.txt" % (draft.filename, draft.revision)
1035+
txt = "%s-%s.txt" % (draft.name, draft.revision)
10191036
self.write_id_file(txt, 5000)
1020-
pdf = "%s-%s.pdf" % (draft.filename, draft.revision)
1037+
pdf = "%s-%s.pdf" % (draft.name, draft.revision)
10211038
self.write_id_file(pdf, 5000)
10221039

10231040
clean_up_id_files()
@@ -1035,7 +1052,7 @@ def test_clean_up_id_files(self):
10351052
draft.expiration_date = datetime.date.today() - datetime.timedelta(days=InternetDraft.DAYS_TO_EXPIRE + 1)
10361053
draft.save()
10371054

1038-
txt = "%s-%s.txt" % (draft.filename, draft.revision)
1055+
txt = "%s-%s.txt" % (draft.name, draft.revision)
10391056
self.write_id_file(txt, 5000)
10401057

10411058
clean_up_id_files()
@@ -1053,7 +1070,7 @@ def test_clean_up_id_files(self):
10531070

10541071
revision_before = draft.revision
10551072

1056-
txt = "%s-%s.txt" % (draft.filename, draft.revision)
1073+
txt = "%s-%s.txt" % (draft.name, draft.revision)
10571074
self.write_id_file(txt, 1000)
10581075

10591076
clean_up_id_files()

0 commit comments

Comments
 (0)