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
This commit is contained in:
parent
0cb9155dd6
commit
98d234cd86
ietf
doc
iesg
meeting
secr/telechat
submit
utils
|
@ -23,6 +23,7 @@ import debug # pyflakes:ignore
|
|||
from ietf.doc.models import ( Document, DocAlias, DocRelationshipName, RelatedDocument, State,
|
||||
DocEvent, BallotPositionDocEvent, LastCallDocEvent, WriteupDocEvent, NewRevisionDocEvent )
|
||||
from ietf.doc.factories import DocumentFactory, DocEventFactory
|
||||
from ietf.doc.utils import create_ballot_if_not_open
|
||||
from ietf.group.models import Group
|
||||
from ietf.group.factories import GroupFactory
|
||||
from ietf.meeting.models import Meeting, Session, SessionPresentation
|
||||
|
@ -642,10 +643,13 @@ class DocTestCase(TestCase):
|
|||
|
||||
def test_document_ballot(self):
|
||||
doc = make_test_data()
|
||||
ballot = doc.active_ballot()
|
||||
ad = Person.objects.get(user__username="ad")
|
||||
ballot = create_ballot_if_not_open(None, doc, ad, 'approve')
|
||||
assert ballot == doc.active_ballot()
|
||||
|
||||
# make sure we have some history
|
||||
doc.save_with_history([DocEvent.objects.create(doc=doc, rev=doc.rev, type="changed_document", by=Person.objects.get(user__username="secretary"), desc="Test")])
|
||||
doc.save_with_history([DocEvent.objects.create(doc=doc, rev=doc.rev, type="changed_document",
|
||||
by=Person.objects.get(user__username="secretary"), desc="Test")])
|
||||
|
||||
pos = BallotPositionDocEvent.objects.create(
|
||||
doc=doc,
|
||||
|
@ -681,10 +685,11 @@ class DocTestCase(TestCase):
|
|||
self.assertTrue( '(%s for -%s)' % (pos.comment_time.strftime('%Y-%m-%d'), oldrev) in unicontent(r))
|
||||
|
||||
def test_document_ballot_needed_positions(self):
|
||||
make_test_data()
|
||||
|
||||
# draft
|
||||
doc = Document.objects.get(name='draft-ietf-mars-test')
|
||||
doc = make_test_data()
|
||||
ad = Person.objects.get(user__username="ad")
|
||||
create_ballot_if_not_open(None, doc, ad, 'approve')
|
||||
|
||||
r = self.client.get(urlreverse("ietf.doc.views_doc.document_ballot", kwargs=dict(name=doc.name)))
|
||||
self.assertTrue('more YES or NO' in unicontent(r))
|
||||
Document.objects.filter(pk=doc.pk).update(intended_std_level='inf')
|
||||
|
|
|
@ -6,9 +6,10 @@ import debug # pyflakes:ignore
|
|||
|
||||
from django.urls import reverse as urlreverse
|
||||
|
||||
from ietf.doc.models import ( Document, State, DocEvent, BallotDocEvent,
|
||||
from ietf.doc.models import ( Document, State, DocEvent,
|
||||
BallotPositionDocEvent, LastCallDocEvent, WriteupDocEvent, TelechatDocEvent )
|
||||
from ietf.doc.factories import DocumentFactory
|
||||
from ietf.doc.utils import create_ballot_if_not_open
|
||||
from ietf.group.models import Group, Role
|
||||
from ietf.name.models import BallotPositionName
|
||||
from ietf.iesg.models import TelechatDate
|
||||
|
@ -22,8 +23,10 @@ from ietf.utils.test_utils import login_testing_unauthorized
|
|||
class EditPositionTests(TestCase):
|
||||
def test_edit_position(self):
|
||||
draft = make_test_data()
|
||||
ad = Person.objects.get(user__username="ad")
|
||||
ballot = create_ballot_if_not_open(None, draft, ad, 'approve')
|
||||
url = urlreverse('ietf.doc.views_ballot.edit_position', kwargs=dict(name=draft.name,
|
||||
ballot_id=draft.latest_event(BallotDocEvent, type="created_ballot").pk))
|
||||
ballot_id=ballot.pk))
|
||||
login_testing_unauthorized(self, "ad", url)
|
||||
|
||||
ad = Person.objects.get(name="Areað Irector")
|
||||
|
@ -84,8 +87,9 @@ class EditPositionTests(TestCase):
|
|||
|
||||
def test_edit_position_as_secretary(self):
|
||||
draft = make_test_data()
|
||||
url = urlreverse('ietf.doc.views_ballot.edit_position', kwargs=dict(name=draft.name,
|
||||
ballot_id=draft.latest_event(BallotDocEvent, type="created_ballot").pk))
|
||||
ad = Person.objects.get(user__username="ad")
|
||||
ballot = create_ballot_if_not_open(None, draft, ad, 'approve')
|
||||
url = urlreverse('ietf.doc.views_ballot.edit_position', kwargs=dict(name=draft.name, ballot_id=ballot.pk))
|
||||
ad = Person.objects.get(name="Areað Irector")
|
||||
url += "?ad=%s" % ad.pk
|
||||
login_testing_unauthorized(self, "secretary", url)
|
||||
|
@ -109,8 +113,9 @@ class EditPositionTests(TestCase):
|
|||
|
||||
def test_cannot_edit_position_as_pre_ad(self):
|
||||
draft = make_test_data()
|
||||
url = urlreverse('ietf.doc.views_ballot.edit_position', kwargs=dict(name=draft.name,
|
||||
ballot_id=draft.latest_event(BallotDocEvent, type="created_ballot").pk))
|
||||
ad = Person.objects.get(user__username="ad")
|
||||
ballot = create_ballot_if_not_open(None, draft, ad, 'approve')
|
||||
url = urlreverse('ietf.doc.views_ballot.edit_position', kwargs=dict(name=draft.name, ballot_id=ballot.pk))
|
||||
|
||||
# transform to pre-ad
|
||||
ad_role = Role.objects.filter(name="ad")[0]
|
||||
|
@ -129,9 +134,8 @@ class EditPositionTests(TestCase):
|
|||
draft.notify = "somebody@example.com"
|
||||
draft.save_with_history([DocEvent.objects.create(doc=draft, rev=draft.rev, type="changed_document", by=Person.objects.get(user__username="secretary"), desc="Test")])
|
||||
|
||||
ad = Person.objects.get(name="Areað Irector")
|
||||
|
||||
ballot = draft.latest_event(BallotDocEvent, type="created_ballot")
|
||||
ad = Person.objects.get(user__username="ad")
|
||||
ballot = create_ballot_if_not_open(None, draft, ad, 'approve')
|
||||
|
||||
BallotPositionDocEvent.objects.create(
|
||||
doc=draft, rev=draft.rev, type="changed_ballot_position",
|
||||
|
|
|
@ -268,7 +268,7 @@ class ConflictReviewTests(TestCase):
|
|||
login_testing_unauthorized(self, "secretary", url)
|
||||
|
||||
# Some additional setup
|
||||
create_ballot_if_not_open(doc,Person.objects.get(name="Sec Retary"),"conflrev")
|
||||
create_ballot_if_not_open(None, doc, Person.objects.get(name="Sec Retary"), "conflrev")
|
||||
doc.set_state(State.objects.get(used=True, slug=approve_type+'-pend',type='conflrev'))
|
||||
|
||||
# get
|
||||
|
|
|
@ -13,8 +13,8 @@ import debug # pyflakes:ignore
|
|||
from ietf.doc.factories import DocumentFactory
|
||||
from ietf.doc.models import ( Document, DocAlias, DocReminder, DocumentAuthor, DocEvent,
|
||||
ConsensusDocEvent, LastCallDocEvent, RelatedDocument, State, TelechatDocEvent,
|
||||
WriteupDocEvent, BallotDocEvent, DocRelationshipName)
|
||||
from ietf.doc.utils import get_tags_for_stream_id
|
||||
WriteupDocEvent, DocRelationshipName)
|
||||
from ietf.doc.utils import get_tags_for_stream_id, create_ballot_if_not_open
|
||||
from ietf.name.models import StreamName, IntendedStdLevelName, DocTagName
|
||||
from ietf.group.factories import GroupFactory
|
||||
from ietf.group.models import Group
|
||||
|
@ -332,7 +332,8 @@ class EditInfoTests(TestCase):
|
|||
# First, make it appear that the previous telechat has already passed
|
||||
telechat_event.telechat_date = datetime.date.today()-datetime.timedelta(days=7)
|
||||
telechat_event.save()
|
||||
ballot = draft.latest_event(BallotDocEvent, type="created_ballot")
|
||||
ad = Person.objects.get(user__username="ad")
|
||||
ballot = create_ballot_if_not_open(None, draft, ad, 'approve')
|
||||
ballot.time = telechat_event.telechat_date
|
||||
ballot.save()
|
||||
|
||||
|
|
|
@ -296,7 +296,7 @@ class StatusChangeTests(TestCase):
|
|||
# Some additional setup
|
||||
doc.relateddocument_set.create(target=DocAlias.objects.get(name='rfc9999'),relationship_id='tois')
|
||||
doc.relateddocument_set.create(target=DocAlias.objects.get(name='rfc9998'),relationship_id='tohist')
|
||||
create_ballot_if_not_open(doc,Person.objects.get(user__username="secretary"),"statchg")
|
||||
create_ballot_if_not_open(None, doc, Person.objects.get(user__username="secretary"), "statchg")
|
||||
doc.set_state(State.objects.get(slug='appr-pend',type='statchg'))
|
||||
|
||||
# get
|
||||
|
|
|
@ -10,8 +10,9 @@ from django.urls import reverse as urlreverse
|
|||
|
||||
import debug # pyflakes:ignore
|
||||
|
||||
from ietf.doc.models import DocEvent, BallotDocEvent, BallotPositionDocEvent, TelechatDocEvent
|
||||
from ietf.doc.models import DocEvent, BallotPositionDocEvent, TelechatDocEvent
|
||||
from ietf.doc.models import Document, DocAlias, State, RelatedDocument
|
||||
from ietf.doc.utils import create_ballot_if_not_open
|
||||
from ietf.group.models import Group, GroupMilestone, Role
|
||||
from ietf.iesg.agenda import get_agenda_date, agenda_data
|
||||
from ietf.iesg.models import TelechatDate
|
||||
|
@ -25,8 +26,10 @@ class IESGTests(TestCase):
|
|||
draft = make_test_data()
|
||||
draft.set_state(State.objects.get(type="draft-iesg", slug="iesg-eva"))
|
||||
|
||||
ad = Person.objects.get(user__username="ad")
|
||||
ballot = create_ballot_if_not_open(None, draft, ad, 'approve')
|
||||
pos = BallotPositionDocEvent()
|
||||
pos.ballot = draft.latest_event(BallotDocEvent, type="created_ballot")
|
||||
pos.ballot = ballot
|
||||
pos.pos_id = "discuss"
|
||||
pos.type = "changed_ballot_position"
|
||||
pos.doc = draft
|
||||
|
|
|
@ -416,11 +416,13 @@ class MeetingTests(TestCase):
|
|||
|
||||
def test_important_dates(self):
|
||||
meeting=MeetingFactory(type_id='ietf')
|
||||
meeting.show_important_dates = True
|
||||
meeting.save()
|
||||
populate_important_dates(meeting)
|
||||
url = urlreverse('ietf.meeting.views.important_dates',kwargs={'num':meeting.number})
|
||||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertTrue(str(meeting.importantdate_set.first().date) in unicontent(r))
|
||||
self.assertIn(str(meeting.importantdate_set.first().date), unicontent(r))
|
||||
|
||||
class EditTests(TestCase):
|
||||
def setUp(self):
|
||||
|
|
|
@ -4,7 +4,7 @@ from pyquery import PyQuery
|
|||
from django.urls import reverse
|
||||
|
||||
from ietf.doc.models import Document, State, BallotDocEvent, BallotType
|
||||
from ietf.doc.utils import update_telechat
|
||||
from ietf.doc.utils import update_telechat, create_ballot_if_not_open
|
||||
from ietf.utils.test_utils import TestCase
|
||||
from ietf.iesg.models import TelechatDate
|
||||
from ietf.person.models import Person
|
||||
|
@ -37,6 +37,8 @@ class SecrTelechatTestCase(TestCase):
|
|||
|
||||
def test_doc_detail_draft(self):
|
||||
draft = make_test_data()
|
||||
ad = Person.objects.get(user__username="ad")
|
||||
create_ballot_if_not_open(None, draft, ad, 'approve')
|
||||
d = get_next_telechat_date()
|
||||
date = d.strftime('%Y-%m-%d')
|
||||
by=Person.objects.get(name="(System)")
|
||||
|
|
|
@ -19,7 +19,8 @@ from django.urls import reverse as urlreverse
|
|||
import debug # pyflakes:ignore
|
||||
|
||||
from ietf.submit.utils import expirable_submissions, expire_submission, ensure_person_email_info_exists
|
||||
from ietf.doc.models import Document, DocAlias, DocEvent, State, BallotDocEvent, BallotPositionDocEvent, DocumentAuthor
|
||||
from ietf.doc.models import Document, DocAlias, DocEvent, State, BallotPositionDocEvent, DocumentAuthor
|
||||
from ietf.doc.utils import create_ballot_if_not_open
|
||||
from ietf.group.models import Group
|
||||
from ietf.group.utils import setup_default_community_list_for_group
|
||||
from ietf.meeting.models import Meeting
|
||||
|
@ -336,8 +337,10 @@ class SubmitTests(TestCase):
|
|||
e.save()
|
||||
|
||||
# make a discuss to see if the AD gets an email
|
||||
ad = Person.objects.get(user__username="ad")
|
||||
ballot = create_ballot_if_not_open(None, draft, ad, 'approve')
|
||||
ballot_position = BallotPositionDocEvent()
|
||||
ballot_position.ballot = draft.latest_event(BallotDocEvent, type="created_ballot")
|
||||
ballot_position.ballot = ballot
|
||||
ballot_position.pos_id = "discuss"
|
||||
ballot_position.type = "changed_ballot_position"
|
||||
ballot_position.doc = draft
|
||||
|
|
|
@ -11,7 +11,7 @@ from django.utils.encoding import smart_text
|
|||
|
||||
import debug # pyflakes:ignore
|
||||
|
||||
from ietf.doc.models import Document, DocAlias, State, DocumentAuthor, BallotType, DocEvent, BallotDocEvent, RelatedDocument, NewRevisionDocEvent
|
||||
from ietf.doc.models import Document, DocAlias, State, DocumentAuthor, DocEvent, RelatedDocument, NewRevisionDocEvent
|
||||
from ietf.group.models import Group, GroupHistory, Role, RoleHistory
|
||||
from ietf.iesg.models import TelechatDate
|
||||
from ietf.ipr.models import HolderIprDisclosure, IprDocRel, IprDisclosureStateName, IprLicenseTypeName
|
||||
|
@ -325,15 +325,6 @@ def make_test_data():
|
|||
rev="01",
|
||||
)
|
||||
|
||||
BallotDocEvent.objects.create(
|
||||
type="created_ballot",
|
||||
ballot_type=BallotType.objects.get(doc_type="draft", slug="approve"),
|
||||
by=ad,
|
||||
doc=draft,
|
||||
rev=draft.rev,
|
||||
desc="Created ballot",
|
||||
)
|
||||
|
||||
# IPR
|
||||
ipr = HolderIprDisclosure.objects.create(
|
||||
by=Person.objects.get(name="(System)"),
|
||||
|
|
Loading…
Reference in a new issue