Implement missing charter tests as found by the coverage check
- Legacy-Id: 7127
This commit is contained in:
parent
7e00fa1424
commit
6b2d50db93
|
@ -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)
|
||||
|
|
|
@ -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'),
|
||||
)
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue