Skip to content

Commit 4e7743c

Browse files
committed
More factorization of ietf.doc.tests. Commit ready for merge.
- Legacy-Id: 15204
1 parent 4a4a152 commit 4e7743c

2 files changed

Lines changed: 42 additions & 19 deletions

File tree

ietf/doc/factories.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import factory
22

33
from ietf.doc.models import Document, DocEvent, NewRevisionDocEvent, DocAlias, State, DocumentAuthor
4+
from ietf.group.models import Group
45

56
def draft_name_generator(type_id,group,n):
67
return '%s-%s-%s-%s%d'%(
@@ -59,12 +60,15 @@ def _after_postgeneration(cls, obj, create, results=None):
5960
class DocumentFactory(BaseDocumentFactory):
6061

6162
type_id = 'draft'
63+
# TODO : If more than one document is created in a test with this factory,
64+
# and group isn't explicitly specified, this will violate the assumption
65+
# that there is only one group of type 'individ'
6266
group = factory.SubFactory('ietf.group.factories.GroupFactory',type_id='individ')
6367

6468
class CharterFactory(BaseDocumentFactory):
6569

6670
type_id = 'charter'
67-
group = factory.SubFactory('ietf.group.factories.GroupFactory',type_id='individ')
71+
group = factory.SubFactory('ietf.group.factories.GroupFactory',type_id='wg')
6872

6973
@factory.post_generation
7074
def set_group_charter_document(obj, create, extracted, **kwargs):
@@ -73,6 +77,28 @@ def set_group_charter_document(obj, create, extracted, **kwargs):
7377
obj.group.charter = extracted or obj
7478
obj.group.save()
7579

80+
class ConflictReviewFactory(BaseDocumentFactory):
81+
type_id='conflrev'
82+
83+
@factory.post_generation
84+
def review_of(obj, create, extracted, **kwargs):
85+
if not create:
86+
return
87+
if extracted:
88+
obj.relateddocument_set.create(relationship_id='conflrev',target=extracted.docalias_set.first())
89+
else:
90+
obj.relateddocument_set.create(relationship_id='conflrev',target=DocumentFactory(type_id='draft',group=Group.objects.get(type_id='individ')).docalias_set.first())
91+
92+
@factory.post_generation
93+
def states(obj, create, extracted, **kwargs):
94+
if not create:
95+
return
96+
if extracted:
97+
for state in extracted:
98+
obj.set_state(state)
99+
else:
100+
obj.set_state(State.objects.get(type_id='conflrev',slug='iesgeval'))
101+
76102
class DocAliasFactory(factory.DjangoModelFactory):
77103
class Meta:
78104
model = DocAlias

ietf/doc/tests.py

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222

2323
from ietf.doc.models import ( Document, DocAlias, DocRelationshipName, RelatedDocument, State,
2424
DocEvent, BallotPositionDocEvent, LastCallDocEvent, WriteupDocEvent, NewRevisionDocEvent )
25-
from ietf.doc.factories import DocumentFactory, DocEventFactory, CharterFactory
25+
from ietf.doc.factories import DocumentFactory, DocEventFactory, CharterFactory, ConflictReviewFactory
2626
from ietf.doc.utils import create_ballot_if_not_open
2727
from ietf.group.models import Group
2828
from ietf.group.factories import GroupFactory
2929
from ietf.meeting.models import Meeting, Session, SessionPresentation
30-
from ietf.meeting.factories import SessionFactory
30+
from ietf.meeting.factories import MeetingFactory, SessionFactory
3131
from ietf.meeting.test_data import make_meeting_test_data
3232
from ietf.name.models import SessionStatusName
3333
from ietf.person.models import Person
@@ -480,7 +480,7 @@ def tearDown(self):
480480
shutil.rmtree(self.id_dir)
481481

482482
def test_document_draft(self):
483-
draft = make_test_data()
483+
draft = DocumentFactory(name='draft-ietf-mars-test',rev='01')
484484

485485
# these tests aren't testing all attributes yet, feel free to
486486
# expand them
@@ -541,7 +541,7 @@ def test_document_draft(self):
541541
q = PyQuery(r.content)
542542
self.assertEqual(len(q('.rfcmarkup pre')), 4)
543543
self.assertEqual(len(q('.rfcmarkup span.h1')), 2)
544-
self.assertEqual(len(q('.rfcmarkup a[href]')), 30)
544+
self.assertEqual(len(q('.rfcmarkup a[href]')), 29)
545545

546546
r = self.client.get(urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=draft.name, rev=draft.rev)))
547547
self.assertEqual(r.status_code, 200)
@@ -556,16 +556,15 @@ def test_document_draft(self):
556556
# replaced draft
557557
draft.set_state(State.objects.get(type="draft", slug="repl"))
558558

559-
replacement = Document.objects.create(
559+
replacement = DocumentFactory(
560560
name="draft-ietf-replacement",
561561
time=datetime.datetime.now(),
562562
type_id="draft",
563563
title="Replacement Draft",
564-
stream_id=draft.stream_id, group_id=draft.group_id, abstract=draft.stream, rev=draft.rev,
564+
stream_id=draft.stream_id, group_id=draft.group_id, abstract=draft.abstract,stream=draft.stream, rev=draft.rev,
565565
pages=draft.pages, intended_std_level_id=draft.intended_std_level_id,
566566
shepherd_id=draft.shepherd_id, ad_id=draft.ad_id, expires=draft.expires,
567567
notify=draft.notify, note=draft.note)
568-
DocAlias.objects.create(name=replacement.name, document=replacement)
569568
rel = RelatedDocument.objects.create(source=replacement,
570569
target=draft.docalias_set.get(name__startswith="draft"),
571570
relationship_id="replaces")
@@ -596,14 +595,12 @@ def test_document_draft(self):
596595
self.assertTrue(draft.name in unicontent(r))
597596

598597
# naked RFC
599-
rfc = Document.objects.create(
598+
rfc = DocumentFactory(
600599
name="rfc1234567",
601600
type_id="draft",
602601
title="RFC without a Draft",
603602
stream_id="ise",
604-
group=Group.objects.get(type="individ"),
605603
std_level_id="ps")
606-
DocAlias.objects.create(name=rfc.name, document=rfc)
607604
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=rfc.name)))
608605
self.assertEqual(r.status_code, 200)
609606
self.assertTrue("RFC 1234567" in unicontent(r))
@@ -648,29 +645,29 @@ def test_document_primary_and_history_views(self):
648645

649646
class DocTestCase(TestCase):
650647
def test_document_charter(self):
651-
make_test_data()
652-
648+
CharterFactory(name='charter-ietf-mars')
653649
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name="charter-ietf-mars")))
654650
self.assertEqual(r.status_code, 200)
655651

656652
def test_document_conflict_review(self):
657-
make_test_data()
653+
ConflictReviewFactory(name='conflict-review-imaginary-irtf-submission')
658654

659655
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name='conflict-review-imaginary-irtf-submission')))
660656
self.assertEqual(r.status_code, 200)
661657

662658
def test_document_material(self):
663-
draft = make_test_data()
664-
665-
doc = Document.objects.create(
659+
MeetingFactory(type_id='ietf',number='42')
660+
mars = GroupFactory(type_id='wg',acronym='mars')
661+
marschairman = PersonFactory(user__username='marschairman')
662+
mars.role_set.create(name_id='chair',person=marschairman,email=marschairman.email())
663+
doc = DocumentFactory(
666664
name="slides-testteam-test-slides",
667665
rev="00",
668666
title="Test Slides",
669-
group=draft.group,
667+
group__acronym='testteam',
670668
type_id="slides"
671669
)
672670
doc.set_state(State.objects.get(type="slides", slug="active"))
673-
DocAlias.objects.create(name=doc.name, document=doc)
674671

675672
session = Session.objects.create(
676673
name = "session-42-mars-1",

0 commit comments

Comments
 (0)