datatracker/ietf/liaisons/tests.py
Ole Laursen 2bf8e0a45d Move fixture generation for names to name app, add liaison edit test,
fix some liaison bugs
 - Legacy-Id: 3347
2011-08-22 12:37:56 +00:00

155 lines
6 KiB
Python

import datetime
from django.conf import settings
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse as urlreverse
import django.test
from pyquery import PyQuery
from ietf.utils.test_utils import SimpleUrlTestCase, canonicalize_feed, canonicalize_sitemap, login_testing_unauthorized
from ietf.utils.test_runner import mail_outbox
from ietf.utils.test_data import make_test_data
class LiaisonsUrlTestCase(SimpleUrlTestCase):
def testUrls(self):
self.doTestUrls(__file__)
def doCanonicalize(self, url, content):
if url.startswith("/feed/"):
return canonicalize_feed(content)
elif url == "/sitemap-liaison.xml":
return canonicalize_sitemap(content)
else:
return content
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
from ietf.liaisons.models import LiaisonStatement, LiaisonStatementPurposeName
from redesign.person.models import Person, Email
from redesign.group.models import Group, Role
def make_liaison_models():
sdo = Group.objects.create(
name="United League of Marsmen",
acronym="",
state_id="active",
type_id="sdo",
)
u = User.objects.create(username="zrk")
p = Person.objects.create(
name="Zrk Brekkk",
ascii="Zrk Brekkk",
user=u)
email = Email.objects.create(
address="zrk@ulm.mars",
person=p)
Role.objects.create(
name_id="liaiman",
group=sdo,
email=email)
mars_group = Group.objects.get(acronym="mars")
l = LiaisonStatement.objects.create(
title="Comment from United League of Marsmen",
purpose_id="comment",
body="The recently proposed Martian Standard for Communication Links neglects the special ferro-magnetic conditions of the Martian soil.",
deadline=datetime.date.today() + datetime.timedelta(days=7),
related_to=None,
from_group=sdo,
from_name=sdo.name,
from_contact=email,
to_group=mars_group,
to_name=mars_group.name,
to_contact="%s@ietf.org" % mars_group.acronym,
reply_to=email.address,
response_contact="",
technical_contact="",
cc="",
submitted=datetime.datetime.now(),
modified=datetime.datetime.now(),
approved=datetime.datetime.now(),
action_taken=False,
)
return l
class LiaisonManagementTestCase(django.test.TestCase):
fixtures = ['names']
def test_taken_care_of(self):
make_test_data()
liaison = make_liaison_models()
url = urlreverse('liaison_detail', kwargs=dict(object_id=liaison.pk))
# normal get
r = self.client.get(url)
self.assertEquals(r.status_code, 200)
q = PyQuery(r.content)
self.assertEquals(len(q('form input[name=do_action_taken]')), 0)
# log in and get
self.client.login(remote_user="secretary")
r = self.client.get(url)
self.assertEquals(r.status_code, 200)
q = PyQuery(r.content)
self.assertEquals(len(q('form input[name=do_action_taken]')), 1)
# mark action taken
r = self.client.post(url, dict(do_action_taken=1))
self.assertEquals(r.status_code, 200)
q = PyQuery(r.content)
self.assertEquals(len(q('form input[name=do_action_taken]')), 0)
liaison = LiaisonStatement.objects.get(id=liaison.id)
self.assertTrue(liaison.action_taken)
def test_edit_liaison(self):
make_test_data()
liaison = make_liaison_models()
url = urlreverse('liaison_edit', kwargs=dict(object_id=liaison.pk))
login_testing_unauthorized(self, "secretary", url)
# get
r = self.client.get(url)
self.assertEquals(r.status_code, 200)
q = PyQuery(r.content)
self.assertEquals(len(q('form input[name=from_field]')), 1)
# edit
r = self.client.post(url,
dict(from_field="from",
replyto="replyto@example.com",
organization="org",
to_poc="to_poc@example.com",
response_contact="responce_contact@example.com",
technical_contact="technical_contact@example.com",
cc1="cc1@example.com",
purpose="4",
deadline_date=(liaison.deadline + datetime.timedelta(days=1)).strftime("%Y-%m-%d"),
title="title",
submitted_date=(liaison.submitted + datetime.timedelta(days=1)).strftime("%Y-%m-%d"),
body="body",
))
self.assertEquals(r.status_code, 302)
new_liaison = LiaisonStatement.objects.get(id=liaison.id)
self.assertEquals(new_liaison.from_name, "from")
self.assertEquals(new_liaison.reply_to, "replyto@example.com")
self.assertEquals(new_liaison.to_name, "org")
self.assertEquals(new_liaison.to_contact, "to_poc@example.com")
self.assertEquals(new_liaison.response_contact, "responce_contact@example.com")
self.assertEquals(new_liaison.technical_contact, "technical_contact@example.com")
self.assertEquals(new_liaison.cc, "cc1@example.com")
self.assertEquals(new_liaison.purpose, LiaisonStatementPurposeName.objects.get(order=4))
self.assertEquals(new_liaison.deadline, liaison.deadline + datetime.timedelta(days=1)),
self.assertEquals(new_liaison.title, "title")
self.assertEquals(new_liaison.submitted.date(), (liaison.submitted + datetime.timedelta(days=1)).date())
self.assertEquals(new_liaison.body, "body")
self.assertTrue(new_liaison.modified > liaison.modified)
# test links and edit button
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
# the above tests only work with the new schema
del LiaisonManagementTestCase