Merged in [15204] from rjsparks@nostrum.com:

More factorization of ietf.doc.tests.
 - Legacy-Id: 15220
Note: SVN reference [15204] has been migrated to Git commit 4e7743c009
This commit is contained in:
Henrik Levkowetz 2018-06-06 19:09:55 +00:00
commit ab53e809ad
2 changed files with 42 additions and 19 deletions

View file

@ -1,6 +1,7 @@
import factory
from ietf.doc.models import Document, DocEvent, NewRevisionDocEvent, DocAlias, State, DocumentAuthor
from ietf.group.models import Group
def draft_name_generator(type_id,group,n):
return '%s-%s-%s-%s%d'%(
@ -59,12 +60,15 @@ class BaseDocumentFactory(factory.DjangoModelFactory):
class DocumentFactory(BaseDocumentFactory):
type_id = 'draft'
# TODO : If more than one document is created in a test with this factory,
# and group isn't explicitly specified, this will violate the assumption
# that there is only one group of type 'individ'
group = factory.SubFactory('ietf.group.factories.GroupFactory',type_id='individ')
class CharterFactory(BaseDocumentFactory):
type_id = 'charter'
group = factory.SubFactory('ietf.group.factories.GroupFactory',type_id='individ')
group = factory.SubFactory('ietf.group.factories.GroupFactory',type_id='wg')
@factory.post_generation
def set_group_charter_document(obj, create, extracted, **kwargs):
@ -73,6 +77,28 @@ class CharterFactory(BaseDocumentFactory):
obj.group.charter = extracted or obj
obj.group.save()
class ConflictReviewFactory(BaseDocumentFactory):
type_id='conflrev'
@factory.post_generation
def review_of(obj, create, extracted, **kwargs):
if not create:
return
if extracted:
obj.relateddocument_set.create(relationship_id='conflrev',target=extracted.docalias_set.first())
else:
obj.relateddocument_set.create(relationship_id='conflrev',target=DocumentFactory(type_id='draft',group=Group.objects.get(type_id='individ')).docalias_set.first())
@factory.post_generation
def states(obj, create, extracted, **kwargs):
if not create:
return
if extracted:
for state in extracted:
obj.set_state(state)
else:
obj.set_state(State.objects.get(type_id='conflrev',slug='iesgeval'))
class DocAliasFactory(factory.DjangoModelFactory):
class Meta:
model = DocAlias

View file

@ -22,12 +22,12 @@ 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, CharterFactory
from ietf.doc.factories import DocumentFactory, DocEventFactory, CharterFactory, ConflictReviewFactory
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
from ietf.meeting.factories import SessionFactory
from ietf.meeting.factories import MeetingFactory, SessionFactory
from ietf.meeting.test_data import make_meeting_test_data
from ietf.name.models import SessionStatusName
from ietf.person.models import Person
@ -480,7 +480,7 @@ Man Expires September 22, 2015 [Page 3]
shutil.rmtree(self.id_dir)
def test_document_draft(self):
draft = make_test_data()
draft = DocumentFactory(name='draft-ietf-mars-test',rev='01')
# these tests aren't testing all attributes yet, feel free to
# expand them
@ -541,7 +541,7 @@ Man Expires September 22, 2015 [Page 3]
q = PyQuery(r.content)
self.assertEqual(len(q('.rfcmarkup pre')), 4)
self.assertEqual(len(q('.rfcmarkup span.h1')), 2)
self.assertEqual(len(q('.rfcmarkup a[href]')), 30)
self.assertEqual(len(q('.rfcmarkup a[href]')), 29)
r = self.client.get(urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=draft.name, rev=draft.rev)))
self.assertEqual(r.status_code, 200)
@ -556,16 +556,15 @@ Man Expires September 22, 2015 [Page 3]
# replaced draft
draft.set_state(State.objects.get(type="draft", slug="repl"))
replacement = Document.objects.create(
replacement = DocumentFactory(
name="draft-ietf-replacement",
time=datetime.datetime.now(),
type_id="draft",
title="Replacement Draft",
stream_id=draft.stream_id, group_id=draft.group_id, abstract=draft.stream, rev=draft.rev,
stream_id=draft.stream_id, group_id=draft.group_id, abstract=draft.abstract,stream=draft.stream, rev=draft.rev,
pages=draft.pages, intended_std_level_id=draft.intended_std_level_id,
shepherd_id=draft.shepherd_id, ad_id=draft.ad_id, expires=draft.expires,
notify=draft.notify, note=draft.note)
DocAlias.objects.create(name=replacement.name, document=replacement)
rel = RelatedDocument.objects.create(source=replacement,
target=draft.docalias_set.get(name__startswith="draft"),
relationship_id="replaces")
@ -596,14 +595,12 @@ Man Expires September 22, 2015 [Page 3]
self.assertTrue(draft.name in unicontent(r))
# naked RFC
rfc = Document.objects.create(
rfc = DocumentFactory(
name="rfc1234567",
type_id="draft",
title="RFC without a Draft",
stream_id="ise",
group=Group.objects.get(type="individ"),
std_level_id="ps")
DocAlias.objects.create(name=rfc.name, document=rfc)
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=rfc.name)))
self.assertEqual(r.status_code, 200)
self.assertTrue("RFC 1234567" in unicontent(r))
@ -648,29 +645,29 @@ Man Expires September 22, 2015 [Page 3]
class DocTestCase(TestCase):
def test_document_charter(self):
make_test_data()
CharterFactory(name='charter-ietf-mars')
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name="charter-ietf-mars")))
self.assertEqual(r.status_code, 200)
def test_document_conflict_review(self):
make_test_data()
ConflictReviewFactory(name='conflict-review-imaginary-irtf-submission')
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name='conflict-review-imaginary-irtf-submission')))
self.assertEqual(r.status_code, 200)
def test_document_material(self):
draft = make_test_data()
doc = Document.objects.create(
MeetingFactory(type_id='ietf',number='42')
mars = GroupFactory(type_id='wg',acronym='mars')
marschairman = PersonFactory(user__username='marschairman')
mars.role_set.create(name_id='chair',person=marschairman,email=marschairman.email())
doc = DocumentFactory(
name="slides-testteam-test-slides",
rev="00",
title="Test Slides",
group=draft.group,
group__acronym='testteam',
type_id="slides"
)
doc.set_state(State.objects.get(type="slides", slug="active"))
DocAlias.objects.create(name=doc.name, document=doc)
session = Session.objects.create(
name = "session-42-mars-1",