Implement missing charter tests as found by the coverage check

- Legacy-Id: 7127
This commit is contained in:
Ole Laursen 2014-01-14 15:50:03 +00:00
parent 7e00fa1424
commit 6b2d50db93
8 changed files with 136 additions and 26 deletions

View file

@ -30,6 +30,29 @@ class EditCharterTests(TestCase):
def tearDown(self):
shutil.rmtree(self.charter_dir)
def test_startstop_process(self):
make_test_data()
group = Group.objects.get(acronym="mars")
charter = group.charter
for option in ("recharter", "abandon"):
self.client.logout()
url = urlreverse('charter_startstop_process', kwargs=dict(name=charter.name, option=option))
login_testing_unauthorized(self, "secretary", url)
# normal get
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
# post
r = self.client.post(url, dict(message="test message"))
self.assertEqual(r.status_code, 302)
if option == "abandon":
self.assertTrue("abandoned" in charter.latest_event(type="changed_document").desc.lower())
else:
self.assertTrue("state changed" in charter.latest_event(type="changed_document").desc.lower())
def test_change_state(self):
make_test_data()
@ -195,15 +218,82 @@ class EditCharterTests(TestCase):
self.assertEqual(f.read(),
"Windows line\nMac line\nUnix line\n" + utf_8_snippet)
class ApproveCharterTests(TestCase):
def setUp(self):
self.charter_dir = os.path.abspath("tmp-charter-dir")
os.mkdir(self.charter_dir)
settings.CHARTER_PATH = self.charter_dir
def test_edit_announcement_text(self):
draft = make_test_data()
charter = draft.group.charter
def tearDown(self):
shutil.rmtree(self.charter_dir)
for ann in ("action", "review"):
url = urlreverse('ietf.doc.views_charter.announcement_text', kwargs=dict(name=charter.name, ann=ann))
self.client.logout()
login_testing_unauthorized(self, "secretary", url)
# normal get
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertEqual(len(q('textarea[name=announcement_text]')), 1)
# as Secretariat, we can send
if ann == "review":
mailbox_before = len(outbox)
by = Person.objects.get(user__username="secretary")
r = self.client.post(url, dict(
announcement_text=default_review_text(draft.group, charter, by).text,
send_text="1"))
self.assertEqual(len(outbox), mailbox_before + 1)
# save
r = self.client.post(url, dict(
announcement_text="This is a simple test.",
save_text="1"))
self.assertEqual(r.status_code, 302)
self.assertTrue("This is a simple test" in charter.latest_event(WriteupDocEvent, type="changed_%s_announcement" % ann).text)
# test regenerate
r = self.client.post(url, dict(
announcement_text="This is a simple test.",
regenerate_text="1"))
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertTrue(draft.group.name in charter.latest_event(WriteupDocEvent, type="changed_%s_announcement" % ann).text)
def test_edit_ballot_writeupnotes(self):
draft = make_test_data()
charter = draft.group.charter
by = Person.objects.get(user__username="secretary")
BallotDocEvent.objects.create(
type="created_ballot",
ballot_type=BallotType.objects.get(doc_type="charter", slug="approve"),
by=by,
doc=charter,
desc="Created ballot",
)
url = urlreverse('ietf.doc.views_charter.ballot_writeupnotes', kwargs=dict(name=charter.name))
login_testing_unauthorized(self, "secretary", url)
default_action_text(draft.group, charter, by)
# normal get
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertEqual(len(q('textarea[name=ballot_writeup]')), 1)
# save
r = self.client.post(url, dict(
ballot_writeup="This is a simple test.",
save_ballot_writeup="1"))
self.assertEqual(r.status_code, 200)
self.assertTrue("This is a simple test" in charter.latest_event(WriteupDocEvent, type="changed_ballot_writeup_text").text)
# send
mailbox_before = len(outbox)
r = self.client.post(url, dict(
ballot_writeup="This is a simple test.",
send_ballot="1"))
self.assertEqual(len(outbox), mailbox_before + 1)
def test_approve(self):
make_test_data()
@ -278,3 +368,23 @@ class ApproveCharterTests(TestCase):
self.assertEqual(group.groupmilestone_set.filter(state="active").count(), 2)
self.assertEqual(group.groupmilestone_set.filter(state="active", desc=m1.desc).count(), 1)
self.assertEqual(group.groupmilestone_set.filter(state="active", desc=m4.desc).count(), 1)
def test_charter_with_milestones(self):
draft = make_test_data()
charter = draft.group.charter
NewRevisionDocEvent.objects.create(doc=charter,
type="new_revision",
rev=charter.rev,
by=Person.objects.get(name="(System)"))
m = GroupMilestone.objects.create(group=draft.group,
state_id="active",
desc="Test milestone",
due=datetime.date.today(),
resolved="")
url = urlreverse('charter_with_milestones_txt', kwargs=dict(name=charter.name, rev=charter.rev))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(m.desc in r.content)

View file

@ -11,7 +11,6 @@ urlpatterns = patterns('',
url(r'^(?P<ann>action|review)/$', "ietf.doc.views_charter.announcement_text", name="charter_edit_announcement"),
url(r'^ballotwriteupnotes/$', "ietf.doc.views_charter.ballot_writeupnotes"),
url(r'^approve/$', "ietf.doc.views_charter.approve", name='charter_approve'),
url(r'^submit/$', "ietf.doc.views_charter.submit", name='charter_submit'),
url(r'^submit/(?P<option>initcharter|recharter)/$', "ietf.doc.views_charter.submit", name='charter_submit'), # shouldn't be here
url(r'^submit/(?:(?P<option>initcharter|recharter)/)?$', "ietf.doc.views_charter.submit", name='charter_submit'),
url(r'^withmilestones-(?P<rev>[0-9-]+).txt$', "ietf.doc.views_charter.charter_with_milestones_txt", name='charter_with_milestones_txt'),
)

View file

@ -140,14 +140,14 @@ def generate_ballot_writeup(request, doc):
return e
def default_action_text(group, charter, user):
def default_action_text(group, charter, by):
if next_approved_revision(group.charter.rev) == "01":
action = "Formed"
else:
action = "Rechartered"
e = WriteupDocEvent(doc=charter, by=user)
e.by = user
e = WriteupDocEvent(doc=charter, by=by)
e.by = by
e.type = "changed_action_announcement"
e.desc = "%s action text was changed" % group.type.name
e.text = render_to_string("doc/charter/action_text.txt",
@ -165,9 +165,9 @@ def default_action_text(group, charter, user):
e.save()
return e
def default_review_text(group, charter, user):
e = WriteupDocEvent(doc=charter, by=user)
e.by = user
def default_review_text(group, charter, by):
e = WriteupDocEvent(doc=charter, by=by)
e.by = by
e.type = "changed_review_announcement"
e.desc = "%s review text was changed" % group.type.name
e.text = render_to_string("doc/charter/review_text.txt",

View file

@ -502,7 +502,7 @@ def ballot_writeupnotes(request, name):
ballot = charter.latest_event(BallotDocEvent, type="created_ballot")
if not ballot:
raise Http404()
raise Http404
login = request.user.person
@ -528,6 +528,8 @@ def ballot_writeupnotes(request, name):
e.text = t
e.save()
existing = e
if "send_ballot" in request.POST and approval:
if has_role(request.user, "Area Director") and not charter.latest_event(BallotPositionDocEvent, type="changed_ballot_position", ad=login, ballot=ballot):
# sending the ballot counts as a yes
@ -551,7 +553,6 @@ def ballot_writeupnotes(request, name):
dict(doc=charter,
),
context_instance=RequestContext(request))
return render_to_response('doc/charter/ballot_writeupnotes.html',
dict(charter=charter,

View file

@ -581,7 +581,7 @@ def document_writeup(request, name):
))
if not sections:
raise Http404()
raise Http404
return render_to_response("doc/document_writeup.html",
dict(doc=doc,

View file

@ -17,9 +17,9 @@ form #id_announcement_text {
{{ announcement_text_form.announcement_text }}
<div class="actions">
<a href="{{ back_url }}">Back</a>
<input type="submit" name="regenerate_text" value="Regenerate" />
<input type="submit" name="save_text" value="Save" />
<a class="button" href="{{ back_url }}">Cancel</a>
<input class="button" type="submit" name="regenerate_text" value="Regenerate" />
<input class="button" type="submit" name="save_text" value="Save" />
</div>
{% load ietf_filters %}

View file

@ -20,9 +20,9 @@ form #id_ballot_writeup {
{{ ballot_writeup_form.ballot_writeup }}
<div class="actions">
<a href="{% url "doc_writeup" name=charter.name %}">Back</a>
<input type="submit" name="save_ballot_writeup" value="Save Ballot Writeup" />
<input style="margin-left: 8px" type="submit" name="send_ballot" value="Save and {% if reissue %}Re-{% endif %}Send Ballot to the IESG" />
<a class="button" href="{% url "doc_writeup" name=charter.name %}">Cancel</a>
<input class="button" type="submit" name="save_ballot_writeup" value="Save Ballot Writeup" />
<input class="button" style="margin-left: 8px" type="submit" name="send_ballot" value="Save and {% if reissue %}Re-{% endif %}Send Ballot to the IESG" />
</div>
</form>

View file

@ -30,8 +30,8 @@ Charter submission for {{ group.acronym }} {{ group.type.name }}
<tr>
<td></td>
<td class="actions">
<a href="{% url "doc_view" name=group.charter.name %}">Back</a>
<input type="submit" value="Submit"/>
<a class="button" href="{% url "doc_view" name=group.charter.name %}">Cancel</a>
<input class="button" type="submit" value="Submit"/>
</td>
</tr>
</table>