Skip to content

Commit 6b2d50d

Browse files
committed
Implement missing charter tests as found by the coverage check
- Legacy-Id: 7127
1 parent 7e00fa1 commit 6b2d50d

8 files changed

Lines changed: 136 additions & 26 deletions

File tree

ietf/doc/tests_charter.py

Lines changed: 117 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,29 @@ def setUp(self):
3030
def tearDown(self):
3131
shutil.rmtree(self.charter_dir)
3232

33+
def test_startstop_process(self):
34+
make_test_data()
35+
36+
group = Group.objects.get(acronym="mars")
37+
charter = group.charter
38+
39+
for option in ("recharter", "abandon"):
40+
self.client.logout()
41+
url = urlreverse('charter_startstop_process', kwargs=dict(name=charter.name, option=option))
42+
login_testing_unauthorized(self, "secretary", url)
43+
44+
# normal get
45+
r = self.client.get(url)
46+
self.assertEqual(r.status_code, 200)
47+
48+
# post
49+
r = self.client.post(url, dict(message="test message"))
50+
self.assertEqual(r.status_code, 302)
51+
if option == "abandon":
52+
self.assertTrue("abandoned" in charter.latest_event(type="changed_document").desc.lower())
53+
else:
54+
self.assertTrue("state changed" in charter.latest_event(type="changed_document").desc.lower())
55+
3356
def test_change_state(self):
3457
make_test_data()
3558

@@ -195,15 +218,82 @@ def test_submit_charter(self):
195218
self.assertEqual(f.read(),
196219
"Windows line\nMac line\nUnix line\n" + utf_8_snippet)
197220

198-
class ApproveCharterTests(TestCase):
199-
def setUp(self):
200-
self.charter_dir = os.path.abspath("tmp-charter-dir")
201-
os.mkdir(self.charter_dir)
202-
settings.CHARTER_PATH = self.charter_dir
221+
def test_edit_announcement_text(self):
222+
draft = make_test_data()
223+
charter = draft.group.charter
224+
225+
for ann in ("action", "review"):
226+
url = urlreverse('ietf.doc.views_charter.announcement_text', kwargs=dict(name=charter.name, ann=ann))
227+
self.client.logout()
228+
login_testing_unauthorized(self, "secretary", url)
229+
230+
# normal get
231+
r = self.client.get(url)
232+
self.assertEqual(r.status_code, 200)
233+
q = PyQuery(r.content)
234+
self.assertEqual(len(q('textarea[name=announcement_text]')), 1)
235+
# as Secretariat, we can send
236+
if ann == "review":
237+
mailbox_before = len(outbox)
238+
by = Person.objects.get(user__username="secretary")
239+
r = self.client.post(url, dict(
240+
announcement_text=default_review_text(draft.group, charter, by).text,
241+
send_text="1"))
242+
self.assertEqual(len(outbox), mailbox_before + 1)
243+
244+
# save
245+
r = self.client.post(url, dict(
246+
announcement_text="This is a simple test.",
247+
save_text="1"))
248+
self.assertEqual(r.status_code, 302)
249+
self.assertTrue("This is a simple test" in charter.latest_event(WriteupDocEvent, type="changed_%s_announcement" % ann).text)
203250

204-
def tearDown(self):
205-
shutil.rmtree(self.charter_dir)
251+
# test regenerate
252+
r = self.client.post(url, dict(
253+
announcement_text="This is a simple test.",
254+
regenerate_text="1"))
255+
self.assertEqual(r.status_code, 200)
256+
q = PyQuery(r.content)
257+
self.assertTrue(draft.group.name in charter.latest_event(WriteupDocEvent, type="changed_%s_announcement" % ann).text)
258+
259+
def test_edit_ballot_writeupnotes(self):
260+
draft = make_test_data()
261+
charter = draft.group.charter
262+
by = Person.objects.get(user__username="secretary")
263+
264+
BallotDocEvent.objects.create(
265+
type="created_ballot",
266+
ballot_type=BallotType.objects.get(doc_type="charter", slug="approve"),
267+
by=by,
268+
doc=charter,
269+
desc="Created ballot",
270+
)
271+
272+
url = urlreverse('ietf.doc.views_charter.ballot_writeupnotes', kwargs=dict(name=charter.name))
273+
login_testing_unauthorized(self, "secretary", url)
274+
275+
default_action_text(draft.group, charter, by)
276+
277+
# normal get
278+
r = self.client.get(url)
279+
self.assertEqual(r.status_code, 200)
280+
q = PyQuery(r.content)
281+
self.assertEqual(len(q('textarea[name=ballot_writeup]')), 1)
206282

283+
# save
284+
r = self.client.post(url, dict(
285+
ballot_writeup="This is a simple test.",
286+
save_ballot_writeup="1"))
287+
self.assertEqual(r.status_code, 200)
288+
self.assertTrue("This is a simple test" in charter.latest_event(WriteupDocEvent, type="changed_ballot_writeup_text").text)
289+
290+
# send
291+
mailbox_before = len(outbox)
292+
r = self.client.post(url, dict(
293+
ballot_writeup="This is a simple test.",
294+
send_ballot="1"))
295+
self.assertEqual(len(outbox), mailbox_before + 1)
296+
207297
def test_approve(self):
208298
make_test_data()
209299

@@ -278,3 +368,23 @@ def test_approve(self):
278368
self.assertEqual(group.groupmilestone_set.filter(state="active").count(), 2)
279369
self.assertEqual(group.groupmilestone_set.filter(state="active", desc=m1.desc).count(), 1)
280370
self.assertEqual(group.groupmilestone_set.filter(state="active", desc=m4.desc).count(), 1)
371+
372+
def test_charter_with_milestones(self):
373+
draft = make_test_data()
374+
charter = draft.group.charter
375+
376+
NewRevisionDocEvent.objects.create(doc=charter,
377+
type="new_revision",
378+
rev=charter.rev,
379+
by=Person.objects.get(name="(System)"))
380+
381+
m = GroupMilestone.objects.create(group=draft.group,
382+
state_id="active",
383+
desc="Test milestone",
384+
due=datetime.date.today(),
385+
resolved="")
386+
387+
url = urlreverse('charter_with_milestones_txt', kwargs=dict(name=charter.name, rev=charter.rev))
388+
r = self.client.get(url)
389+
self.assertEqual(r.status_code, 200)
390+
self.assertTrue(m.desc in r.content)

ietf/doc/urls_charter.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
url(r'^(?P<ann>action|review)/$', "ietf.doc.views_charter.announcement_text", name="charter_edit_announcement"),
1212
url(r'^ballotwriteupnotes/$', "ietf.doc.views_charter.ballot_writeupnotes"),
1313
url(r'^approve/$', "ietf.doc.views_charter.approve", name='charter_approve'),
14-
url(r'^submit/$', "ietf.doc.views_charter.submit", name='charter_submit'),
15-
url(r'^submit/(?P<option>initcharter|recharter)/$', "ietf.doc.views_charter.submit", name='charter_submit'), # shouldn't be here
14+
url(r'^submit/(?:(?P<option>initcharter|recharter)/)?$', "ietf.doc.views_charter.submit", name='charter_submit'),
1615
url(r'^withmilestones-(?P<rev>[0-9-]+).txt$', "ietf.doc.views_charter.charter_with_milestones_txt", name='charter_with_milestones_txt'),
1716
)

ietf/doc/utils_charter.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -140,14 +140,14 @@ def generate_ballot_writeup(request, doc):
140140

141141
return e
142142

143-
def default_action_text(group, charter, user):
143+
def default_action_text(group, charter, by):
144144
if next_approved_revision(group.charter.rev) == "01":
145145
action = "Formed"
146146
else:
147147
action = "Rechartered"
148148

149-
e = WriteupDocEvent(doc=charter, by=user)
150-
e.by = user
149+
e = WriteupDocEvent(doc=charter, by=by)
150+
e.by = by
151151
e.type = "changed_action_announcement"
152152
e.desc = "%s action text was changed" % group.type.name
153153
e.text = render_to_string("doc/charter/action_text.txt",
@@ -165,9 +165,9 @@ def default_action_text(group, charter, user):
165165
e.save()
166166
return e
167167

168-
def default_review_text(group, charter, user):
169-
e = WriteupDocEvent(doc=charter, by=user)
170-
e.by = user
168+
def default_review_text(group, charter, by):
169+
e = WriteupDocEvent(doc=charter, by=by)
170+
e.by = by
171171
e.type = "changed_review_announcement"
172172
e.desc = "%s review text was changed" % group.type.name
173173
e.text = render_to_string("doc/charter/review_text.txt",

ietf/doc/views_charter.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -502,7 +502,7 @@ def ballot_writeupnotes(request, name):
502502

503503
ballot = charter.latest_event(BallotDocEvent, type="created_ballot")
504504
if not ballot:
505-
raise Http404()
505+
raise Http404
506506

507507
login = request.user.person
508508

@@ -528,6 +528,8 @@ def ballot_writeupnotes(request, name):
528528
e.text = t
529529
e.save()
530530

531+
existing = e
532+
531533
if "send_ballot" in request.POST and approval:
532534
if has_role(request.user, "Area Director") and not charter.latest_event(BallotPositionDocEvent, type="changed_ballot_position", ad=login, ballot=ballot):
533535
# sending the ballot counts as a yes
@@ -551,7 +553,6 @@ def ballot_writeupnotes(request, name):
551553
dict(doc=charter,
552554
),
553555
context_instance=RequestContext(request))
554-
555556

556557
return render_to_response('doc/charter/ballot_writeupnotes.html',
557558
dict(charter=charter,

ietf/doc/views_doc.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -581,7 +581,7 @@ def text_from_writeup(event_type):
581581
))
582582

583583
if not sections:
584-
raise Http404()
584+
raise Http404
585585

586586
return render_to_response("doc/document_writeup.html",
587587
dict(doc=doc,

ietf/templates/doc/charter/announcement_text.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ <h1>WG {{ announcement }} announcement writeup for {{ charter.chartered_group.ac
1717
{{ announcement_text_form.announcement_text }}
1818

1919
<div class="actions">
20-
<a href="{{ back_url }}">Back</a>
21-
<input type="submit" name="regenerate_text" value="Regenerate" />
22-
<input type="submit" name="save_text" value="Save" />
20+
<a class="button" href="{{ back_url }}">Cancel</a>
21+
<input class="button" type="submit" name="regenerate_text" value="Regenerate" />
22+
<input class="button" type="submit" name="save_text" value="Save" />
2323
</div>
2424

2525
{% load ietf_filters %}

ietf/templates/doc/charter/ballot_writeupnotes.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ <h1>Ballot writeup and notes for {{ charter.chartered_group }}</h1>
2020
{{ ballot_writeup_form.ballot_writeup }}
2121

2222
<div class="actions">
23-
<a href="{% url "doc_writeup" name=charter.name %}">Back</a>
24-
<input type="submit" name="save_ballot_writeup" value="Save Ballot Writeup" />
25-
<input style="margin-left: 8px" type="submit" name="send_ballot" value="Save and {% if reissue %}Re-{% endif %}Send Ballot to the IESG" />
23+
<a class="button" href="{% url "doc_writeup" name=charter.name %}">Cancel</a>
24+
<input class="button" type="submit" name="save_ballot_writeup" value="Save Ballot Writeup" />
25+
<input class="button" style="margin-left: 8px" type="submit" name="send_ballot" value="Save and {% if reissue %}Re-{% endif %}Send Ballot to the IESG" />
2626
</div>
2727
</form>
2828

ietf/templates/doc/charter/submit.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ <h1>Charter submission for {{ group.acronym }} {{ group.type.name }}</h1>
3030
<tr>
3131
<td></td>
3232
<td class="actions">
33-
<a href="{% url "doc_view" name=group.charter.name %}">Back</a>
34-
<input type="submit" value="Submit"/>
33+
<a class="button" href="{% url "doc_view" name=group.charter.name %}">Cancel</a>
34+
<input class="button" type="submit" value="Submit"/>
3535
</td>
3636
</tr>
3737
</table>

0 commit comments

Comments
 (0)