Skip to content

Commit 98d234c

Browse files
committed
Refactored the handling of BallotDocEvent in tests, only creating them as needed, in preparation for stricter checks on state transitions to avoid mismatches between state and ballot.
- Legacy-Id: 14380
1 parent 0cb9155 commit 98d234c

10 files changed

Lines changed: 46 additions & 35 deletions

File tree

ietf/doc/tests.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from ietf.doc.models import ( Document, DocAlias, DocRelationshipName, RelatedDocument, State,
2424
DocEvent, BallotPositionDocEvent, LastCallDocEvent, WriteupDocEvent, NewRevisionDocEvent )
2525
from ietf.doc.factories import DocumentFactory, DocEventFactory
26+
from ietf.doc.utils import create_ballot_if_not_open
2627
from ietf.group.models import Group
2728
from ietf.group.factories import GroupFactory
2829
from ietf.meeting.models import Meeting, Session, SessionPresentation
@@ -642,10 +643,13 @@ def test_document_material(self):
642643

643644
def test_document_ballot(self):
644645
doc = make_test_data()
645-
ballot = doc.active_ballot()
646+
ad = Person.objects.get(user__username="ad")
647+
ballot = create_ballot_if_not_open(None, doc, ad, 'approve')
648+
assert ballot == doc.active_ballot()
646649

647650
# make sure we have some history
648-
doc.save_with_history([DocEvent.objects.create(doc=doc, rev=doc.rev, type="changed_document", by=Person.objects.get(user__username="secretary"), desc="Test")])
651+
doc.save_with_history([DocEvent.objects.create(doc=doc, rev=doc.rev, type="changed_document",
652+
by=Person.objects.get(user__username="secretary"), desc="Test")])
649653

650654
pos = BallotPositionDocEvent.objects.create(
651655
doc=doc,
@@ -681,10 +685,11 @@ def test_document_ballot(self):
681685
self.assertTrue( '(%s for -%s)' % (pos.comment_time.strftime('%Y-%m-%d'), oldrev) in unicontent(r))
682686

683687
def test_document_ballot_needed_positions(self):
684-
make_test_data()
685-
686688
# draft
687-
doc = Document.objects.get(name='draft-ietf-mars-test')
689+
doc = make_test_data()
690+
ad = Person.objects.get(user__username="ad")
691+
create_ballot_if_not_open(None, doc, ad, 'approve')
692+
688693
r = self.client.get(urlreverse("ietf.doc.views_doc.document_ballot", kwargs=dict(name=doc.name)))
689694
self.assertTrue('more YES or NO' in unicontent(r))
690695
Document.objects.filter(pk=doc.pk).update(intended_std_level='inf')

ietf/doc/tests_ballot.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@
66

77
from django.urls import reverse as urlreverse
88

9-
from ietf.doc.models import ( Document, State, DocEvent, BallotDocEvent,
9+
from ietf.doc.models import ( Document, State, DocEvent,
1010
BallotPositionDocEvent, LastCallDocEvent, WriteupDocEvent, TelechatDocEvent )
1111
from ietf.doc.factories import DocumentFactory
12+
from ietf.doc.utils import create_ballot_if_not_open
1213
from ietf.group.models import Group, Role
1314
from ietf.name.models import BallotPositionName
1415
from ietf.iesg.models import TelechatDate
@@ -22,8 +23,10 @@
2223
class EditPositionTests(TestCase):
2324
def test_edit_position(self):
2425
draft = make_test_data()
26+
ad = Person.objects.get(user__username="ad")
27+
ballot = create_ballot_if_not_open(None, draft, ad, 'approve')
2528
url = urlreverse('ietf.doc.views_ballot.edit_position', kwargs=dict(name=draft.name,
26-
ballot_id=draft.latest_event(BallotDocEvent, type="created_ballot").pk))
29+
ballot_id=ballot.pk))
2730
login_testing_unauthorized(self, "ad", url)
2831

2932
ad = Person.objects.get(name="Areað Irector")
@@ -84,8 +87,9 @@ def test_edit_position(self):
8487

8588
def test_edit_position_as_secretary(self):
8689
draft = make_test_data()
87-
url = urlreverse('ietf.doc.views_ballot.edit_position', kwargs=dict(name=draft.name,
88-
ballot_id=draft.latest_event(BallotDocEvent, type="created_ballot").pk))
90+
ad = Person.objects.get(user__username="ad")
91+
ballot = create_ballot_if_not_open(None, draft, ad, 'approve')
92+
url = urlreverse('ietf.doc.views_ballot.edit_position', kwargs=dict(name=draft.name, ballot_id=ballot.pk))
8993
ad = Person.objects.get(name="Areað Irector")
9094
url += "?ad=%s" % ad.pk
9195
login_testing_unauthorized(self, "secretary", url)
@@ -109,8 +113,9 @@ def test_edit_position_as_secretary(self):
109113

110114
def test_cannot_edit_position_as_pre_ad(self):
111115
draft = make_test_data()
112-
url = urlreverse('ietf.doc.views_ballot.edit_position', kwargs=dict(name=draft.name,
113-
ballot_id=draft.latest_event(BallotDocEvent, type="created_ballot").pk))
116+
ad = Person.objects.get(user__username="ad")
117+
ballot = create_ballot_if_not_open(None, draft, ad, 'approve')
118+
url = urlreverse('ietf.doc.views_ballot.edit_position', kwargs=dict(name=draft.name, ballot_id=ballot.pk))
114119

115120
# transform to pre-ad
116121
ad_role = Role.objects.filter(name="ad")[0]
@@ -129,9 +134,8 @@ def test_send_ballot_comment(self):
129134
draft.notify = "somebody@example.com"
130135
draft.save_with_history([DocEvent.objects.create(doc=draft, rev=draft.rev, type="changed_document", by=Person.objects.get(user__username="secretary"), desc="Test")])
131136

132-
ad = Person.objects.get(name="Areað Irector")
133-
134-
ballot = draft.latest_event(BallotDocEvent, type="created_ballot")
137+
ad = Person.objects.get(user__username="ad")
138+
ballot = create_ballot_if_not_open(None, draft, ad, 'approve')
135139

136140
BallotPositionDocEvent.objects.create(
137141
doc=draft, rev=draft.rev, type="changed_ballot_position",

ietf/doc/tests_conflict_review.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ def approve_test_helper(self,approve_type):
268268
login_testing_unauthorized(self, "secretary", url)
269269

270270
# Some additional setup
271-
create_ballot_if_not_open(doc,Person.objects.get(name="Sec Retary"),"conflrev")
271+
create_ballot_if_not_open(None, doc, Person.objects.get(name="Sec Retary"), "conflrev")
272272
doc.set_state(State.objects.get(used=True, slug=approve_type+'-pend',type='conflrev'))
273273

274274
# get

ietf/doc/tests_draft.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
from ietf.doc.factories import DocumentFactory
1414
from ietf.doc.models import ( Document, DocAlias, DocReminder, DocumentAuthor, DocEvent,
1515
ConsensusDocEvent, LastCallDocEvent, RelatedDocument, State, TelechatDocEvent,
16-
WriteupDocEvent, BallotDocEvent, DocRelationshipName)
17-
from ietf.doc.utils import get_tags_for_stream_id
16+
WriteupDocEvent, DocRelationshipName)
17+
from ietf.doc.utils import get_tags_for_stream_id, create_ballot_if_not_open
1818
from ietf.name.models import StreamName, IntendedStdLevelName, DocTagName
1919
from ietf.group.factories import GroupFactory
2020
from ietf.group.models import Group
@@ -332,7 +332,8 @@ def test_edit_telechat_date(self):
332332
# First, make it appear that the previous telechat has already passed
333333
telechat_event.telechat_date = datetime.date.today()-datetime.timedelta(days=7)
334334
telechat_event.save()
335-
ballot = draft.latest_event(BallotDocEvent, type="created_ballot")
335+
ad = Person.objects.get(user__username="ad")
336+
ballot = create_ballot_if_not_open(None, draft, ad, 'approve')
336337
ballot.time = telechat_event.telechat_date
337338
ballot.save()
338339

ietf/doc/tests_status_change.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ def test_approve(self):
296296
# Some additional setup
297297
doc.relateddocument_set.create(target=DocAlias.objects.get(name='rfc9999'),relationship_id='tois')
298298
doc.relateddocument_set.create(target=DocAlias.objects.get(name='rfc9998'),relationship_id='tohist')
299-
create_ballot_if_not_open(doc,Person.objects.get(user__username="secretary"),"statchg")
299+
create_ballot_if_not_open(None, doc, Person.objects.get(user__username="secretary"), "statchg")
300300
doc.set_state(State.objects.get(slug='appr-pend',type='statchg'))
301301

302302
# get

ietf/iesg/tests.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@
1010

1111
import debug # pyflakes:ignore
1212

13-
from ietf.doc.models import DocEvent, BallotDocEvent, BallotPositionDocEvent, TelechatDocEvent
13+
from ietf.doc.models import DocEvent, BallotPositionDocEvent, TelechatDocEvent
1414
from ietf.doc.models import Document, DocAlias, State, RelatedDocument
15+
from ietf.doc.utils import create_ballot_if_not_open
1516
from ietf.group.models import Group, GroupMilestone, Role
1617
from ietf.iesg.agenda import get_agenda_date, agenda_data
1718
from ietf.iesg.models import TelechatDate
@@ -25,8 +26,10 @@ def test_feed(self):
2526
draft = make_test_data()
2627
draft.set_state(State.objects.get(type="draft-iesg", slug="iesg-eva"))
2728

29+
ad = Person.objects.get(user__username="ad")
30+
ballot = create_ballot_if_not_open(None, draft, ad, 'approve')
2831
pos = BallotPositionDocEvent()
29-
pos.ballot = draft.latest_event(BallotDocEvent, type="created_ballot")
32+
pos.ballot = ballot
3033
pos.pos_id = "discuss"
3134
pos.type = "changed_ballot_position"
3235
pos.doc = draft

ietf/meeting/tests_views.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -416,11 +416,13 @@ def test_feed(self):
416416

417417
def test_important_dates(self):
418418
meeting=MeetingFactory(type_id='ietf')
419+
meeting.show_important_dates = True
420+
meeting.save()
419421
populate_important_dates(meeting)
420422
url = urlreverse('ietf.meeting.views.important_dates',kwargs={'num':meeting.number})
421423
r = self.client.get(url)
422424
self.assertEqual(r.status_code, 200)
423-
self.assertTrue(str(meeting.importantdate_set.first().date) in unicontent(r))
425+
self.assertIn(str(meeting.importantdate_set.first().date), unicontent(r))
424426

425427
class EditTests(TestCase):
426428
def setUp(self):

ietf/secr/telechat/tests.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from django.urls import reverse
55

66
from ietf.doc.models import Document, State, BallotDocEvent, BallotType
7-
from ietf.doc.utils import update_telechat
7+
from ietf.doc.utils import update_telechat, create_ballot_if_not_open
88
from ietf.utils.test_utils import TestCase
99
from ietf.iesg.models import TelechatDate
1010
from ietf.person.models import Person
@@ -37,6 +37,8 @@ def test_doc(self):
3737

3838
def test_doc_detail_draft(self):
3939
draft = make_test_data()
40+
ad = Person.objects.get(user__username="ad")
41+
create_ballot_if_not_open(None, draft, ad, 'approve')
4042
d = get_next_telechat_date()
4143
date = d.strftime('%Y-%m-%d')
4244
by=Person.objects.get(name="(System)")

ietf/submit/tests.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
import debug # pyflakes:ignore
2020

2121
from ietf.submit.utils import expirable_submissions, expire_submission, ensure_person_email_info_exists
22-
from ietf.doc.models import Document, DocAlias, DocEvent, State, BallotDocEvent, BallotPositionDocEvent, DocumentAuthor
22+
from ietf.doc.models import Document, DocAlias, DocEvent, State, BallotPositionDocEvent, DocumentAuthor
23+
from ietf.doc.utils import create_ballot_if_not_open
2324
from ietf.group.models import Group
2425
from ietf.group.utils import setup_default_community_list_for_group
2526
from ietf.meeting.models import Meeting
@@ -336,8 +337,10 @@ def submit_existing(self, formats, change_authors=True, group_type='wg', stream_
336337
e.save()
337338

338339
# make a discuss to see if the AD gets an email
340+
ad = Person.objects.get(user__username="ad")
341+
ballot = create_ballot_if_not_open(None, draft, ad, 'approve')
339342
ballot_position = BallotPositionDocEvent()
340-
ballot_position.ballot = draft.latest_event(BallotDocEvent, type="created_ballot")
343+
ballot_position.ballot = ballot
341344
ballot_position.pos_id = "discuss"
342345
ballot_position.type = "changed_ballot_position"
343346
ballot_position.doc = draft

ietf/utils/test_data.py

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
import debug # pyflakes:ignore
1313

14-
from ietf.doc.models import Document, DocAlias, State, DocumentAuthor, BallotType, DocEvent, BallotDocEvent, RelatedDocument, NewRevisionDocEvent
14+
from ietf.doc.models import Document, DocAlias, State, DocumentAuthor, DocEvent, RelatedDocument, NewRevisionDocEvent
1515
from ietf.group.models import Group, GroupHistory, Role, RoleHistory
1616
from ietf.iesg.models import TelechatDate
1717
from ietf.ipr.models import HolderIprDisclosure, IprDocRel, IprDisclosureStateName, IprLicenseTypeName
@@ -325,15 +325,6 @@ def make_test_data():
325325
rev="01",
326326
)
327327

328-
BallotDocEvent.objects.create(
329-
type="created_ballot",
330-
ballot_type=BallotType.objects.get(doc_type="draft", slug="approve"),
331-
by=ad,
332-
doc=draft,
333-
rev=draft.rev,
334-
desc="Created ballot",
335-
)
336-
337328
# IPR
338329
ipr = HolderIprDisclosure.objects.create(
339330
by=Person.objects.get(name="(System)"),

0 commit comments

Comments
 (0)