Skip to content

Commit 6f18ae8

Browse files
committed
improved coverage for several tests. Commit ready for merge.
- Legacy-Id: 15596
1 parent 39e76a8 commit 6f18ae8

6 files changed

Lines changed: 53 additions & 10 deletions

File tree

ietf/doc/factories.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from django.conf import settings
66

7-
from ietf.doc.models import Document, DocEvent, NewRevisionDocEvent, DocAlias, State, DocumentAuthor
7+
from ietf.doc.models import Document, DocEvent, NewRevisionDocEvent, DocAlias, State, DocumentAuthor, StateDocEvent
88
from ietf.group.models import Group
99

1010
def draft_name_generator(type_id,group,n):
@@ -210,3 +210,20 @@ class Meta:
210210
def desc(self):
211211
return 'New version available %s-%s'%(self.doc.name,self.rev)
212212

213+
class StateDocEventFactory(DocEventFactory):
214+
class Meta:
215+
model = StateDocEvent
216+
217+
type = 'changed_state'
218+
state_type_id = 'draft-iesg'
219+
220+
@factory.post_generation
221+
def state(obj, create, extracted, **kwargs):
222+
if not create:
223+
return
224+
if extracted:
225+
(state_type_id, state_slug) = extracted
226+
obj.state = State.objects.get(type_id=state_type_id,slug=state_slug)
227+
else:
228+
obj.state = State.objects.get(type_id='draft-iesg',slug='ad-eval')
229+
obj.save()

ietf/doc/tests.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
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, ConflictReviewFactory, WgDraftFactory, IndividualDraftFactory, WgRfcFactory, IndividualRfcFactory
25+
from ietf.doc.factories import DocumentFactory, DocEventFactory, CharterFactory, ConflictReviewFactory, WgDraftFactory, IndividualDraftFactory, WgRfcFactory, IndividualRfcFactory, StateDocEventFactory
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
@@ -289,7 +289,25 @@ def test_ajax_search_docs(self):
289289
self.assertEqual(r.status_code, 200)
290290
data = json.loads(r.content)
291291
self.assertEqual(data[0]["id"], doc_alias.pk)
292-
292+
293+
def test_recent_drafts(self):
294+
# Three drafts to show with various warnings
295+
drafts = WgDraftFactory.create_batch(3,states=[('draft','active'),('draft-iesg','ad-eval')])
296+
for index, draft in enumerate(drafts):
297+
StateDocEventFactory(doc=draft, state=('draft-iesg','ad-eval'), time=datetime.datetime.now()-datetime.timedelta(days=[1,15,29][index]))
298+
299+
# And one draft that should not show (with the default of 7 days to view)
300+
old = WgDraftFactory()
301+
old.docevent_set.filter(newrevisiondocevent__isnull=False).update(time=datetime.datetime.now()-datetime.timedelta(days=8))
302+
StateDocEventFactory(doc=old, time=datetime.datetime.now()-datetime.timedelta(days=8))
303+
304+
url = urlreverse('ietf.doc.views_search.recent_drafts')
305+
r = self.client.get(url)
306+
self.assertEqual(r.status_code, 200)
307+
q = PyQuery(r.content)
308+
self.assertEqual(len(q('td.doc')),3)
309+
self.assertEqual(q('td.status span.label-warning').text(),"for 15 days")
310+
self.assertEqual(q('td.status span.label-danger').text(),"for 29 days")
293311

294312
class DocDraftTestCase(TestCase):
295313
draft_text = """

ietf/secr/drafts/email.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
import glob
33
import os
44

5+
import debug # pyflakes:ignore
6+
57
from django.conf import settings
68
from django.template.loader import render_to_string
79

ietf/secr/drafts/tests_views.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@
1313
from ietf.doc.expire import expire_draft
1414
from ietf.doc.factories import WgDraftFactory
1515
from ietf.doc.models import Document
16+
from ietf.group.factories import RoleFactory
1617
from ietf.meeting.factories import MeetingFactory
17-
from ietf.person.factories import PersonFactory
18+
from ietf.person.factories import PersonFactory, EmailFactory
1819
from ietf.person.models import Person
1920
from ietf.submit.models import Preapproval
2021
from ietf.utils.mail import outbox
@@ -63,7 +64,7 @@ def test_approvals(self):
6364
self.assertTrue('draft-dummy' in response.content)
6465

6566
def test_edit(self):
66-
draft = WgDraftFactory()
67+
draft = WgDraftFactory(states=[('draft','active'),('draft-stream-ietf','wg-doc'),('draft-iesg','ad-eval')], shepherd=EmailFactory())
6768
url = urlreverse('ietf.secr.drafts.views.edit', kwargs={'id':draft.name})
6869
self.client.login(username="secretary", password="secretary+password")
6970
response = self.client.get(url)
@@ -81,7 +82,8 @@ def test_email(self):
8182
def test_get_email_initial(self):
8283
# Makes sure that a manual posting by the Secretariat of an I-D that is
8384
# in the RFC Editor Queue will result in notification of the RFC Editor
84-
draft = WgDraftFactory()
85+
draft = WgDraftFactory(authors=PersonFactory.create_batch(1),shepherd=EmailFactory())
86+
RoleFactory(group=draft.group, name_id='chair')
8587
data = get_email_initial(draft,action='extend',input={'expiration_date': '2050-01-01'})
8688
self.assertTrue('Extension of Expiration Date' in data['subject'])
8789

ietf/secr/sreq/tests.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def test_cancel(self):
6363
meeting = MeetingFactory(type_id='ietf', date=datetime.date.today())
6464
ad = Person.objects.get(user__username='ad')
6565
area = RoleFactory(name_id='ad', person=ad, group__type_id='area').group
66-
mars = SessionFactory(meeting=meeting, group__parent=area, group__acronym='mars').group
66+
mars = SessionFactory(meeting=meeting, group__parent=area, group__acronym='mars', status_id='sched').group
6767
url = reverse('ietf.secr.sreq.views.cancel', kwargs={'acronym':'mars'})
6868
self.client.login(username="ad", password="ad+password")
6969
r = self.client.get(url)
@@ -74,7 +74,7 @@ def test_cancel(self):
7474
def test_edit(self):
7575
meeting = MeetingFactory(type_id='ietf', date=datetime.date.today())
7676
mars = RoleFactory(name_id='chair', person__user__username='marschairman', group__acronym='mars').group
77-
SessionFactory(meeting=meeting,group=mars)
77+
SessionFactory(meeting=meeting,group=mars,status_id='sched',scheduled=datetime.datetime.now())
7878

7979
url = reverse('ietf.secr.sreq.views.edit', kwargs={'acronym':'mars'})
8080
self.client.login(username="marschairman", password="marschairman+password")

ietf/stats/tests.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@
1313
from ietf.submit.models import Submission
1414
from ietf.doc.factories import WgDraftFactory, WgRfcFactory
1515
from ietf.doc.models import Document, DocAlias, State, RelatedDocument, NewRevisionDocEvent, DocumentAuthor
16+
from ietf.group.factories import RoleFactory
1617
from ietf.meeting.factories import MeetingFactory
1718
from ietf.person.factories import PersonFactory
1819
from ietf.person.models import Person, Email
1920
from ietf.name.models import FormalLanguageName, DocRelationshipName, CountryName
20-
from ietf.review.factories import ReviewRequestFactory
21+
from ietf.review.factories import ReviewRequestFactory, ReviewerSettingsFactory
2122
from ietf.stats.models import MeetingRegistration, CountryAlias
2223
from ietf.stats.utils import get_meeting_registration_data
2324

@@ -155,7 +156,10 @@ def test_known_country_list(self):
155156
self.assertTrue("United States" in unicontent(r))
156157

157158
def test_review_stats(self):
158-
review_req = ReviewRequestFactory()
159+
reviewer = PersonFactory()
160+
review_req = ReviewRequestFactory(reviewer=reviewer.email_set.first())
161+
RoleFactory(group=review_req.team,name_id='reviewer',person=reviewer)
162+
ReviewerSettingsFactory(team=review_req.team, person=reviewer)
159163
PersonFactory(user__username='plain')
160164

161165
# check redirect

0 commit comments

Comments
 (0)