Skip to content

Commit a2fa0d6

Browse files
committed
Use factories for ietf.doc.tests_material and ietf.doc.tests_review. Commit ready for merge.
- Legacy-Id: 15237
1 parent 3eeece7 commit a2fa0d6

3 files changed

Lines changed: 97 additions & 55 deletions

File tree

ietf/doc/tests_material.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
from ietf.name.models import SessionStatusName
1818
from ietf.person.models import Person
1919
from ietf.utils.test_utils import TestCase, login_testing_unauthorized, unicontent
20-
from ietf.utils.test_data import make_test_data
2120

2221

2322
class GroupMaterialTests(TestCase):
@@ -43,7 +42,6 @@ def tearDown(self):
4342
shutil.rmtree(self.agenda_dir)
4443

4544
def create_slides(self):
46-
make_test_data()
4745

4846
group = Group.objects.create(type_id="team", acronym="testteam", name="Test Team", state_id="active")
4947

ietf/doc/tests_review.py

Lines changed: 77 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,20 @@
1616
import debug # pyflakes:ignore
1717

1818
import ietf.review.mailarch
19-
from ietf.doc.models import DocumentAuthor, Document, DocAlias, RelatedDocument, DocEvent, ReviewRequestDocEvent
19+
from ietf.doc.factories import NewRevisionDocEventFactory, WgDraftFactory, WgRfcFactory
20+
from ietf.doc.models import DocumentAuthor, RelatedDocument, DocEvent, ReviewRequestDocEvent
21+
from ietf.group.factories import RoleFactory, ReviewTeamFactory
2022
from ietf.group.models import Group
2123
from ietf.message.models import Message
22-
from ietf.name.models import ReviewResultName, ReviewRequestStateName, ReviewTypeName, DocRelationshipName
24+
from ietf.name.models import ReviewResultName, ReviewRequestStateName, ReviewTypeName
2325
from ietf.person.models import Email, Person
26+
from ietf.review.factories import ReviewRequestFactory
2427
from ietf.review.models import (ReviewRequest, ReviewerSettings,
2528
ReviewWish, UnavailablePeriod, NextReviewerInTeam)
2629
from ietf.review.utils import reviewer_rotation_list, possibly_advance_next_reviewer_for_team
2730

2831
from ietf.utils.test_utils import TestCase
29-
from ietf.utils.test_data import make_test_data, make_review_data, create_person
32+
from ietf.utils.test_data import create_person
3033
from ietf.utils.test_utils import login_testing_unauthorized, unicontent, reload_db_objects
3134
from ietf.utils.mail import outbox, empty_outbox
3235
from ietf.person.factories import PersonFactory
@@ -46,10 +49,17 @@ def tearDown(self):
4649
settings.DOCUMENT_PATH_PATTERN = self.old_document_path_pattern
4750

4851
def test_request_review(self):
49-
doc = make_test_data()
50-
review_req = make_review_data(doc)
51-
review_team = review_req.team
52-
review_team3 = Group.objects.get(acronym='reviewteam3')
52+
doc = WgDraftFactory(group__acronym='mars',rev='01')
53+
NewRevisionDocEventFactory(doc=doc,rev='01')
54+
RoleFactory(name_id='chair',person__user__username='marschairman',group=doc.group)
55+
review_team = ReviewTeamFactory(acronym="reviewteam", name="Review Team", type_id="dir", list_email="reviewteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
56+
review_team3 = ReviewTeamFactory(acronym="reviewteam3", name="Review Team3", type_id="dir", list_email="reviewteam3@ietf.org", parent=Group.objects.get(acronym="farfut"))
57+
rev_role = RoleFactory(group=review_team,person__user__username='reviewer',person__user__email='reviewer@example.com',name_id='reviewer')
58+
RoleFactory(group=review_team3,person=rev_role.person,name_id='reviewer')
59+
RoleFactory(group=review_team,person__user__username='reviewsecretary',person__user__email='reviewsecretary@example.com',name_id='secr')
60+
RoleFactory(group=review_team3,person__user__username='reviewsecretary3',person__user__email='reviewsecretary3@example.com',name_id='secr')
61+
62+
ReviewRequestFactory(doc=doc,team=review_team,type_id='early',state_id='accepted',requested_by=rev_role.person,reviewer=rev_role.person.email_set.first(),deadline=datetime.datetime.now()+datetime.timedelta(days=20))
5363

5464
url = urlreverse('ietf.doc.views_review.request_review', kwargs={ "name": doc.name })
5565
login_testing_unauthorized(self, "ad", url)
@@ -89,9 +99,7 @@ def test_request_review(self):
8999
self.assertTrue('reviewsecretary3@' in outbox[1]['To'])
90100

91101
def test_request_review_of_rfc(self):
92-
make_test_data()
93-
doc = Document.objects.filter(states__type_id='draft',states__slug='rfc').first()
94-
make_review_data(doc)
102+
doc = WgRfcFactory()
95103

96104
url = urlreverse('ietf.doc.views_review.request_review', kwargs={ "name": doc.name })
97105
login_testing_unauthorized(self, "ad", url)
@@ -101,15 +109,18 @@ def test_request_review_of_rfc(self):
101109
self.assertEqual(r.status_code, 403)
102110

103111
def test_doc_page(self):
104-
doc = make_test_data()
105-
review_req = make_review_data(doc)
112+
113+
doc = WgDraftFactory(group__acronym='mars',rev='01')
114+
review_team = ReviewTeamFactory(acronym="reviewteam", name="Review Team", type_id="dir", list_email="reviewteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
115+
rev_role = RoleFactory(group=review_team,person__user__username='reviewer',person__user__email='reviewer@example.com',name_id='reviewer')
116+
review_req = ReviewRequestFactory(doc=doc,team=review_team,type_id='early',state_id='accepted',requested_by=rev_role.person,reviewer=rev_role.person.email_set.first(),deadline=datetime.datetime.now()+datetime.timedelta(days=20))
106117

107118
# move the review request to a doubly-replaced document to
108119
# check we can fish it out
109-
old_doc = Document.objects.get(name="draft-foo-mars-test")
110-
older_doc = Document.objects.create(name="draft-older")
111-
older_docalias = DocAlias.objects.create(name=older_doc.name, document=older_doc)
112-
RelatedDocument.objects.create(source=old_doc, target=older_docalias, relationship=DocRelationshipName.objects.get(slug='replaces'))
120+
old_doc = WgDraftFactory(name="draft-foo-mars-test")
121+
older_doc = WgDraftFactory(name="draft-older")
122+
RelatedDocument.objects.create(source=old_doc, target=older_doc.docalias_set.first(), relationship_id='replaces')
123+
RelatedDocument.objects.create(source=doc, target=old_doc.docalias_set.first(), relationship_id='replaces')
113124
review_req.doc = older_doc
114125
review_req.save()
115126

@@ -120,8 +131,10 @@ def test_doc_page(self):
120131
self.assertTrue("{} Review".format(review_req.type.name) in content)
121132

122133
def test_review_request(self):
123-
doc = make_test_data()
124-
review_req = make_review_data(doc)
134+
doc = WgDraftFactory(group__acronym='mars',rev='01')
135+
review_team = ReviewTeamFactory(acronym="reviewteam", name="Review Team", type_id="dir", list_email="reviewteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
136+
rev_role = RoleFactory(group=review_team,person__user__username='reviewer',person__user__email='reviewer@example.com',name_id='reviewer')
137+
review_req = ReviewRequestFactory(doc=doc,team=review_team,type_id='early',state_id='accepted',requested_by=rev_role.person,reviewer=rev_role.person.email_set.first(),deadline=datetime.datetime.now()+datetime.timedelta(days=20))
125138

126139
url = urlreverse('ietf.doc.views_review.review_request', kwargs={ "name": doc.name, "request_id": review_req.pk })
127140

@@ -131,10 +144,11 @@ def test_review_request(self):
131144
self.assertIn(review_req.team.name, unicontent(r))
132145

133146
def test_close_request(self):
134-
doc = make_test_data()
135-
review_req = make_review_data(doc)
136-
review_req.state = ReviewRequestStateName.objects.get(slug="accepted")
137-
review_req.save()
147+
doc = WgDraftFactory(group__acronym='mars',rev='01')
148+
review_team = ReviewTeamFactory(acronym="reviewteam", name="Review Team", type_id="dir", list_email="reviewteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
149+
rev_role = RoleFactory(group=review_team,person__user__username='reviewer',person__user__email='reviewer@example.com',name_id='reviewer')
150+
RoleFactory(group=review_team,person__user__username='reviewsecretary',person__user__email='reviewsecretary@example.com',name_id='secr')
151+
review_req = ReviewRequestFactory(doc=doc,team=review_team,type_id='early',state_id='accepted',requested_by=rev_role.person,reviewer=rev_role.person.email_set.first(),deadline=datetime.datetime.now()+datetime.timedelta(days=20))
138152

139153
close_url = urlreverse('ietf.doc.views_review.close_request', kwargs={ "name": doc.name, "request_id": review_req.pk })
140154

@@ -166,10 +180,9 @@ def test_close_request(self):
166180
self.assertTrue("closed" in outbox[0].get_payload(decode=True).decode("utf-8").lower())
167181

168182
def test_possibly_advance_next_reviewer_for_team(self):
169-
doc = make_test_data()
170183

171-
team = Group.objects.create(state_id="active", acronym="rotationteam", name="Review Team", type_id="dir",
172-
list_email="rotationteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
184+
team = ReviewTeamFactory(acronym="rotationteam", name="Review Team", list_email="rotationteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
185+
doc = WgDraftFactory()
173186

174187
# make a bunch of reviewers
175188
reviewers = [
@@ -254,13 +267,15 @@ def get_skip_next(person):
254267
self.assertEqual(get_skip_next(reviewers[4]), 0)
255268

256269
def test_assign_reviewer(self):
257-
doc = make_test_data()
270+
doc = WgDraftFactory(pages=2)
271+
review_team = ReviewTeamFactory(acronym="reviewteam", name="Review Team", type_id="dir", list_email="reviewteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
272+
rev_role = RoleFactory(group=review_team,person__user__username='reviewer',person__user__email='reviewer@example.com',person__name=u'Some Reviewer',name_id='reviewer')
273+
RoleFactory(group=review_team,person__user__username='marschairman',person__name=u'WG Cháir Man',name_id='reviewer')
274+
RoleFactory(group=review_team,person__user__username='reviewsecretary',person__user__email='reviewsecretary@example.com',name_id='secr')
275+
ReviewerSettings.objects.create(team=review_team, person=rev_role.person, min_interval=14, skip_next=0)
258276

259277
# review to assign to
260-
review_req = make_review_data(doc)
261-
review_req.state = ReviewRequestStateName.objects.get(slug="requested")
262-
review_req.reviewer = None
263-
review_req.save()
278+
review_req = ReviewRequestFactory(team=review_team,doc=doc,state_id='requested')
264279

265280
# set up some reviewer-suitability factors
266281
reviewer_email = Email.objects.get(person__user__username="reviewer")
@@ -288,7 +303,7 @@ def test_assign_reviewer(self):
288303
reviewer_settings.save()
289304

290305
# Need one more person in review team one so we can test incrementing skip_count without immediately decrementing it
291-
another_reviewer = PersonFactory.create(name = u"Extra TestReviewer") # needs to be lexically greater than the exsting one
306+
another_reviewer = PersonFactory.create(name = u"Extra TestReviewer") # needs to be lexically greater than the existing one
292307
another_reviewer.role_set.create(name_id='reviewer', email=another_reviewer.email(), group=review_req.team)
293308

294309
UnavailablePeriod.objects.create(
@@ -365,10 +380,11 @@ def test_assign_reviewer(self):
365380
self.assertEqual(ReviewerSettings.objects.get(person=reviewer.person).skip_next, 1)
366381

367382
def test_accept_reviewer_assignment(self):
368-
doc = make_test_data()
369-
review_req = make_review_data(doc)
370-
review_req.state = ReviewRequestStateName.objects.get(slug="requested")
371-
review_req.save()
383+
384+
doc = WgDraftFactory(group__acronym='mars',rev='01')
385+
review_team = ReviewTeamFactory(acronym="reviewteam", name="Review Team", type_id="dir", list_email="reviewteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
386+
rev_role = RoleFactory(group=review_team,person__user__username='reviewer',person__user__email='reviewer@example.com',name_id='reviewer')
387+
review_req = ReviewRequestFactory(doc=doc,team=review_team,type_id='early',state_id='requested',requested_by=rev_role.person,reviewer=rev_role.person.email_set.first(),deadline=datetime.datetime.now()+datetime.timedelta(days=20))
372388

373389
url = urlreverse('ietf.doc.views_review.review_request', kwargs={ "name": doc.name, "request_id": review_req.pk })
374390
username = review_req.reviewer.person.user.username
@@ -386,10 +402,11 @@ def test_accept_reviewer_assignment(self):
386402
self.assertEqual(review_req.state_id, "accepted")
387403

388404
def test_reject_reviewer_assignment(self):
389-
doc = make_test_data()
390-
review_req = make_review_data(doc)
391-
review_req.state = ReviewRequestStateName.objects.get(slug="accepted")
392-
review_req.save()
405+
doc = WgDraftFactory(group__acronym='mars',rev='01')
406+
review_team = ReviewTeamFactory(acronym="reviewteam", name="Review Team", type_id="dir", list_email="reviewteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
407+
rev_role = RoleFactory(group=review_team,person__user__username='reviewer',person__user__email='reviewer@example.com',name_id='reviewer')
408+
RoleFactory(group=review_team,person__user__username='reviewsecretary',person__user__email='reviewsecretary@example.com',name_id='secr')
409+
review_req = ReviewRequestFactory(doc=doc,team=review_team,type_id='early',state_id='accepted',requested_by=rev_role.person,reviewer=rev_role.person.email_set.first(),deadline=datetime.datetime.now()+datetime.timedelta(days=20))
393410

394411
reject_url = urlreverse('ietf.doc.views_review.reject_reviewer_assignment', kwargs={ "name": doc.name, "request_id": review_req.pk })
395412

@@ -458,11 +475,11 @@ def make_test_mbox_tarball(self, review_req):
458475
return mbox_path
459476

460477
def test_search_mail_archive(self):
461-
doc = make_test_data()
462-
review_req = make_review_data(doc)
463-
review_req.state = ReviewRequestStateName.objects.get(slug="accepted")
464-
review_req.save()
465-
review_req.team.save()
478+
doc = WgDraftFactory(group__acronym='mars',rev='01')
479+
review_team = ReviewTeamFactory(acronym="reviewteam", name="Review Team", type_id="dir", list_email="reviewteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
480+
rev_role = RoleFactory(group=review_team,person__user__username='reviewer',person__user__email='reviewer@example.com',name_id='reviewer')
481+
RoleFactory(group=review_team,person__user__username='reviewsecretary',person__user__email='reviewsecretary@example.com',name_id='secr')
482+
review_req = ReviewRequestFactory(doc=doc,team=review_team,type_id='early',state_id='accepted',requested_by=rev_role.person,reviewer=rev_role.person.email_set.first(),deadline=datetime.datetime.now()+datetime.timedelta(days=20))
466483

467484
# test URL construction
468485
query_urls = ietf.review.mailarch.construct_query_urls(review_req)
@@ -504,10 +521,12 @@ def test_search_mail_archive(self):
504521
ietf.review.mailarch.construct_query_urls = real_fn
505522

506523
def setup_complete_review_test(self):
507-
doc = make_test_data()
508-
review_req = make_review_data(doc)
509-
review_req.state = ReviewRequestStateName.objects.get(slug="accepted")
510-
review_req.save()
524+
doc = WgDraftFactory(group__acronym='mars',rev='01')
525+
NewRevisionDocEventFactory(doc=doc,rev='01')
526+
review_team = ReviewTeamFactory(acronym="reviewteam", name="Review Team", type_id="dir", list_email="reviewteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
527+
rev_role = RoleFactory(group=review_team,person__user__username='reviewer',person__user__email='reviewer@example.com',name_id='reviewer')
528+
RoleFactory(group=review_team,person__user__username='reviewsecretary',person__user__email='reviewsecretary@example.com',name_id='secr')
529+
review_req = ReviewRequestFactory(doc=doc,team=review_team,type_id='early',state_id='accepted',requested_by=rev_role.person,reviewer=rev_role.person.email_set.first(),deadline=datetime.datetime.now()+datetime.timedelta(days=20))
511530
for r in ReviewResultName.objects.filter(slug__in=("issues", "ready")):
512531
review_req.team.reviewteamsettings.review_results.add(r)
513532

@@ -784,8 +803,11 @@ def test_revise_review_enter_content(self):
784803
self.assertEqual(len(outbox), 0)
785804

786805
def test_edit_comment(self):
787-
doc = make_test_data()
788-
review_req = make_review_data(doc)
806+
doc = WgDraftFactory(group__acronym='mars',rev='01')
807+
review_team = ReviewTeamFactory(acronym="reviewteam", name="Review Team", type_id="dir", list_email="reviewteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
808+
rev_role = RoleFactory(group=review_team,person__user__username='reviewer',person__user__email='reviewer@example.com',name_id='reviewer')
809+
RoleFactory(group=review_team,person__user__username='reviewsecretary',person__user__email='reviewsecretary@example.com',name_id='secr')
810+
review_req = ReviewRequestFactory(doc=doc,team=review_team,type_id='early',state_id='accepted',requested_by=rev_role.person,reviewer=rev_role.person.email_set.first(),deadline=datetime.datetime.now()+datetime.timedelta(days=20))
789811

790812
url = urlreverse('ietf.doc.views_review.edit_comment', kwargs={ "name": doc.name, "request_id": review_req.pk })
791813

@@ -802,8 +824,11 @@ def test_edit_comment(self):
802824
self.assertEqual(review_req.comment,'iHsnReEHXEmNPXcixsvAF9Aa')
803825

804826
def test_edit_deadline(self):
805-
doc = make_test_data()
806-
review_req = make_review_data(doc)
827+
doc = WgDraftFactory(group__acronym='mars',rev='01')
828+
review_team = ReviewTeamFactory(acronym="reviewteam", name="Review Team", type_id="dir", list_email="reviewteam@ietf.org", parent=Group.objects.get(acronym="farfut"))
829+
rev_role = RoleFactory(group=review_team,person__user__username='reviewer',person__user__email='reviewer@example.com',name_id='reviewer')
830+
RoleFactory(group=review_team,person__user__username='reviewsecretary',person__user__email='reviewsecretary@example.com',name_id='secr')
831+
review_req = ReviewRequestFactory(doc=doc,team=review_team,type_id='early',state_id='accepted',requested_by=rev_role.person,reviewer=rev_role.person.email_set.first(),deadline=datetime.datetime.now()+datetime.timedelta(days=20))
807832

808833
url = urlreverse('ietf.doc.views_review.edit_deadline', kwargs={ "name": doc.name, "request_id": review_req.pk })
809834

ietf/review/factories.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,32 @@
22
import datetime
33

44
from ietf.review.models import ReviewTeamSettings, ReviewRequest
5+
from ietf.name.models import ReviewTypeName, ReviewResultName
56

67
class ReviewTeamSettingsFactory(factory.DjangoModelFactory):
78
class Meta:
89
model = ReviewTeamSettings
910

1011
group = factory.SubFactory('ietf.group.factories.GroupFactory',type_id='dir')
11-
12+
13+
@factory.post_generation
14+
def review_types(obj, create, extracted, **kwargs):
15+
if not create:
16+
return
17+
if extracted:
18+
obj.review_types.set(ReviewTypeName.objects.filter(slug__in=extracted))
19+
else:
20+
obj.review_types.set(ReviewTypeName.objects.filter(slug__in=('early','lc','telechat')))
21+
22+
@factory.post_generation
23+
def review_results(obj, create, extracted, **kwargs):
24+
if not create:
25+
return
26+
if extracted:
27+
obj.review_results.set(ReviewResultName.objects.filter(slug__in=extracted))
28+
else:
29+
obj.review_results.set(ReviewResultName.objects.filter(slug__in=('not-ready','right-track','almost-ready','ready-issues','ready-nits','ready')))
30+
1231
class ReviewRequestFactory(factory.DjangoModelFactory):
1332
class Meta:
1433
model = ReviewRequest

0 commit comments

Comments
 (0)