Improved test coverage somewhat by making more of the group tests apply to both the /group/acronym and /wg/acronym (or equivalent) url forms.
- Legacy-Id: 11857
This commit is contained in:
parent
cf5ac68b09
commit
2b226ae7b7
|
@ -32,6 +32,13 @@ from ietf.utils.mail import outbox, empty_outbox
|
||||||
from ietf.utils.test_data import make_test_data, create_person
|
from ietf.utils.test_data import make_test_data, create_person
|
||||||
from ietf.utils.test_utils import login_testing_unauthorized, TestCase, unicontent
|
from ietf.utils.test_utils import login_testing_unauthorized, TestCase, unicontent
|
||||||
|
|
||||||
|
def group_urlreverse_list(group, viewname):
|
||||||
|
return [
|
||||||
|
urlreverse(viewname, kwargs=dict(acronym=group.acronym)),
|
||||||
|
urlreverse(viewname, kwargs=dict(acronym=group.acronym, group_type=group.type_id)),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
class GroupPagesTests(TestCase):
|
class GroupPagesTests(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.charter_dir = os.path.abspath("tmp-charter-dir")
|
self.charter_dir = os.path.abspath("tmp-charter-dir")
|
||||||
|
@ -94,17 +101,18 @@ class GroupPagesTests(TestCase):
|
||||||
draft = make_test_data()
|
draft = make_test_data()
|
||||||
group = draft.group
|
group = draft.group
|
||||||
|
|
||||||
url = urlreverse('ietf.group.views.group_home', kwargs=dict(acronym=group.acronym))
|
url_list = group_urlreverse_list(group, 'ietf.group.views.group_home')
|
||||||
next = urlreverse('ietf.group.views.group_documents', kwargs=dict(acronym=group.acronym))
|
next_list = group_urlreverse_list(group, 'ietf.group.views.group_documents')
|
||||||
r = self.client.get(url)
|
for url, next in [ (url_list[i], next_list[i]) for i in range(len(url_list)) ]:
|
||||||
self.assertRedirects(r, next)
|
r = self.client.get(url)
|
||||||
r = self.client.get(next)
|
self.assertRedirects(r, next)
|
||||||
self.assertTrue(group.acronym in unicontent(r))
|
r = self.client.get(next)
|
||||||
self.assertTrue(group.name in unicontent(r))
|
self.assertTrue(group.acronym in unicontent(r))
|
||||||
for word in ['Documents', 'Date', 'Status', 'IPR', 'AD', 'Shepherd']:
|
self.assertTrue(group.name in unicontent(r))
|
||||||
self.assertTrue(word in unicontent(r))
|
for word in ['Documents', 'Date', 'Status', 'IPR', 'AD', 'Shepherd']:
|
||||||
self.assertTrue(draft.name in unicontent(r))
|
self.assertTrue(word in unicontent(r))
|
||||||
self.assertTrue(draft.title in unicontent(r))
|
self.assertTrue(draft.name in unicontent(r))
|
||||||
|
self.assertTrue(draft.title in unicontent(r))
|
||||||
|
|
||||||
def test_wg_summaries(self):
|
def test_wg_summaries(self):
|
||||||
draft = make_test_data()
|
draft = make_test_data()
|
||||||
|
@ -215,13 +223,13 @@ class GroupPagesTests(TestCase):
|
||||||
related_docs_rule = clist.searchrule_set.get(rule_type='name_contains')
|
related_docs_rule = clist.searchrule_set.get(rule_type='name_contains')
|
||||||
reset_name_contains_index_for_rule(related_docs_rule)
|
reset_name_contains_index_for_rule(related_docs_rule)
|
||||||
|
|
||||||
url = urlreverse('ietf.group.views.group_documents', kwargs=dict(group_type=group.type_id, acronym=group.acronym))
|
for url in group_urlreverse_list(group, 'ietf.group.views.group_documents'):
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
self.assertTrue(draft.name in unicontent(r))
|
self.assertTrue(draft.name in unicontent(r))
|
||||||
self.assertTrue(group.name in unicontent(r))
|
self.assertTrue(group.name in unicontent(r))
|
||||||
self.assertTrue(group.acronym in unicontent(r))
|
self.assertTrue(group.acronym in unicontent(r))
|
||||||
self.assertTrue(draft2.name in unicontent(r))
|
self.assertTrue(draft2.name in unicontent(r))
|
||||||
|
|
||||||
# Make sure that a logged in user is presented with an opportunity to add results to their community list
|
# Make sure that a logged in user is presented with an opportunity to add results to their community list
|
||||||
self.client.login(username="secretary", password="secretary+password")
|
self.client.login(username="secretary", password="secretary+password")
|
||||||
|
@ -230,11 +238,11 @@ class GroupPagesTests(TestCase):
|
||||||
self.assertTrue(any([draft2.name in x.attrib['href'] for x in q('table td a.track-untrack-doc')]))
|
self.assertTrue(any([draft2.name in x.attrib['href'] for x in q('table td a.track-untrack-doc')]))
|
||||||
|
|
||||||
# test the txt version too while we're at it
|
# test the txt version too while we're at it
|
||||||
url = urlreverse('ietf.group.views.group_documents_txt', kwargs=dict(group_type=group.type_id, acronym=group.acronym))
|
for url in group_urlreverse_list(group, 'ietf.group.views.group_documents_txt'):
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
self.assertTrue(draft.name in unicontent(r))
|
self.assertTrue(draft.name in unicontent(r))
|
||||||
self.assertTrue(draft2.name in unicontent(r))
|
self.assertTrue(draft2.name in unicontent(r))
|
||||||
|
|
||||||
def test_group_charter(self):
|
def test_group_charter(self):
|
||||||
draft = make_test_data()
|
draft = make_test_data()
|
||||||
|
@ -250,10 +258,7 @@ class GroupPagesTests(TestCase):
|
||||||
due=datetime.date.today() + datetime.timedelta(days=100))
|
due=datetime.date.today() + datetime.timedelta(days=100))
|
||||||
milestone.docs.add(draft)
|
milestone.docs.add(draft)
|
||||||
|
|
||||||
for url in [group.about_url(),
|
for url in [group.about_url(),] + group_urlreverse_list(group, 'ietf.group.views.group_about'):
|
||||||
urlreverse('ietf.group.views.group_about',kwargs=dict(acronym=group.acronym)),
|
|
||||||
urlreverse('ietf.group.views.group_about',kwargs=dict(acronym=group.acronym,group_type=group.type_id)),
|
|
||||||
]:
|
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
self.assertTrue(group.name in unicontent(r))
|
self.assertTrue(group.name in unicontent(r))
|
||||||
|
@ -264,12 +269,12 @@ class GroupPagesTests(TestCase):
|
||||||
|
|
||||||
def test_group_about(self):
|
def test_group_about(self):
|
||||||
|
|
||||||
def verify_cannot_edit_group(username):
|
def verify_cannot_edit_group(url, username):
|
||||||
self.client.login(username=username, password=username+"+password")
|
self.client.login(username=username, password=username+"+password")
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.status_code, 403)
|
self.assertEqual(r.status_code, 403)
|
||||||
|
|
||||||
def verify_can_edit_group(username):
|
def verify_can_edit_group(url, username):
|
||||||
self.client.login(username=username, password=username+"+password")
|
self.client.login(username=username, password=username+"+password")
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
|
@ -285,10 +290,7 @@ class GroupPagesTests(TestCase):
|
||||||
)
|
)
|
||||||
create_person(group, "chair", name="Testteam Chairman", username="teamchairman")
|
create_person(group, "chair", name="Testteam Chairman", username="teamchairman")
|
||||||
|
|
||||||
for url in [group.about_url(),
|
for url in [group.about_url(),] + group_urlreverse_list(group, 'ietf.group.views.group_about'):
|
||||||
urlreverse('ietf.group.views.group_about',kwargs=dict(acronym=group.acronym)),
|
|
||||||
urlreverse('ietf.group.views.group_about',kwargs=dict(acronym=group.acronym,group_type=group.type_id)),
|
|
||||||
]:
|
|
||||||
url = group.about_url()
|
url = group.about_url()
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
|
@ -296,13 +298,13 @@ class GroupPagesTests(TestCase):
|
||||||
self.assertTrue(group.acronym in unicontent(r))
|
self.assertTrue(group.acronym in unicontent(r))
|
||||||
self.assertTrue(group.description in unicontent(r))
|
self.assertTrue(group.description in unicontent(r))
|
||||||
|
|
||||||
url = urlreverse('ietf.group.views_edit.edit', kwargs=dict(acronym=group.acronym))
|
for url in group_urlreverse_list(group, 'ietf.group.views_edit.edit'):
|
||||||
|
|
||||||
for username in ['plain','iana','iab chair','irtf chair','marschairman']:
|
for username in ['plain','iana','iab chair','irtf chair','marschairman']:
|
||||||
verify_cannot_edit_group(username)
|
verify_cannot_edit_group(url, username)
|
||||||
|
|
||||||
for username in ['secretary','teamchairman','ad']:
|
for username in ['secretary','teamchairman','ad']:
|
||||||
verify_can_edit_group(username)
|
verify_can_edit_group(url, username)
|
||||||
|
|
||||||
def test_materials(self):
|
def test_materials(self):
|
||||||
make_test_data()
|
make_test_data()
|
||||||
|
@ -318,9 +320,7 @@ class GroupPagesTests(TestCase):
|
||||||
doc.set_state(State.objects.get(type="slides", slug="active"))
|
doc.set_state(State.objects.get(type="slides", slug="active"))
|
||||||
DocAlias.objects.create(name=doc.name, document=doc)
|
DocAlias.objects.create(name=doc.name, document=doc)
|
||||||
|
|
||||||
for url in [ urlreverse("group_materials", kwargs={ 'acronym': group.acronym }),
|
for url in group_urlreverse_list(group, 'ietf.group.views.materials'):
|
||||||
urlreverse("group_materials", kwargs={ 'acronym': group.acronym , 'group_type': group.type_id}),
|
|
||||||
]:
|
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
self.assertTrue(doc.title in unicontent(r))
|
self.assertTrue(doc.title in unicontent(r))
|
||||||
|
@ -345,10 +345,10 @@ class GroupPagesTests(TestCase):
|
||||||
type="added_comment",
|
type="added_comment",
|
||||||
by=Person.objects.get(name="(System)"))
|
by=Person.objects.get(name="(System)"))
|
||||||
|
|
||||||
url = urlreverse('ietf.group.views.history', kwargs=dict(group_type=group.type_id, acronym=group.acronym))
|
for url in group_urlreverse_list(group, 'ietf.group.views.history'):
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
self.assertTrue(e.desc in unicontent(r))
|
self.assertTrue(e.desc in unicontent(r))
|
||||||
|
|
||||||
def test_feed(self):
|
def test_feed(self):
|
||||||
draft = make_test_data()
|
draft = make_test_data()
|
||||||
|
@ -665,20 +665,22 @@ class MilestoneTests(TestCase):
|
||||||
def test_milestone_sets(self):
|
def test_milestone_sets(self):
|
||||||
m1, m2, group = self.create_test_milestones()
|
m1, m2, group = self.create_test_milestones()
|
||||||
|
|
||||||
url = urlreverse('group_edit_milestones', kwargs=dict(group_type=group.type_id, acronym=group.acronym))
|
for url in group_urlreverse_list(group, 'group_edit_milestones'):
|
||||||
|
login_testing_unauthorized(self, "secretary", url)
|
||||||
|
|
||||||
|
r = self.client.get(url)
|
||||||
|
self.assertEqual(r.status_code, 200)
|
||||||
|
self.assertTrue(m1.desc in unicontent(r))
|
||||||
|
self.assertTrue(m2.desc not in unicontent(r))
|
||||||
|
self.client.logout()
|
||||||
|
|
||||||
login_testing_unauthorized(self, "secretary", url)
|
login_testing_unauthorized(self, "secretary", url)
|
||||||
|
|
||||||
r = self.client.get(url)
|
for url in group_urlreverse_list(group, 'group_edit_charter_milestones'):
|
||||||
self.assertEqual(r.status_code, 200)
|
r = self.client.get(url)
|
||||||
self.assertTrue(m1.desc in unicontent(r))
|
self.assertEqual(r.status_code, 200)
|
||||||
self.assertTrue(m2.desc not in unicontent(r))
|
self.assertTrue(m1.desc not in unicontent(r))
|
||||||
|
self.assertTrue(m2.desc in unicontent(r))
|
||||||
url = urlreverse('group_edit_charter_milestones', kwargs=dict(group_type=group.type_id, acronym=group.acronym))
|
|
||||||
|
|
||||||
r = self.client.get(url)
|
|
||||||
self.assertEqual(r.status_code, 200)
|
|
||||||
self.assertTrue(m1.desc not in unicontent(r))
|
|
||||||
self.assertTrue(m2.desc in unicontent(r))
|
|
||||||
|
|
||||||
def test_add_milestone(self):
|
def test_add_milestone(self):
|
||||||
m1, m2, group = self.create_test_milestones()
|
m1, m2, group = self.create_test_milestones()
|
||||||
|
@ -1075,13 +1077,13 @@ class MeetingInfoTests(TestCase):
|
||||||
|
|
||||||
|
|
||||||
def test_meeting_info(self):
|
def test_meeting_info(self):
|
||||||
url = urlreverse('ietf.group.views.meetings',kwargs={'acronym':self.group.acronym})
|
for url in group_urlreverse_list(self.group, 'ietf.group.views.meetings'):
|
||||||
response = self.client.get(url)
|
response = self.client.get(url)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
q = PyQuery(response.content)
|
q = PyQuery(response.content)
|
||||||
self.assertTrue(q('#inprogressmeets'))
|
self.assertTrue(q('#inprogressmeets'))
|
||||||
self.assertTrue(q('#futuremeets'))
|
self.assertTrue(q('#futuremeets'))
|
||||||
self.assertTrue(q('#pastmeets'))
|
self.assertTrue(q('#pastmeets'))
|
||||||
|
|
||||||
self.group.session_set.filter(id=self.inprog.id).delete()
|
self.group.session_set.filter(id=self.inprog.id).delete()
|
||||||
response = self.client.get(url)
|
response = self.client.get(url)
|
||||||
|
@ -1094,7 +1096,7 @@ class StatusUpdateTests(TestCase):
|
||||||
|
|
||||||
def test_unsupported_group_types(self):
|
def test_unsupported_group_types(self):
|
||||||
|
|
||||||
def ensure_updates_dont_show(group,user):
|
def ensure_updates_dont_show(group, user):
|
||||||
url = urlreverse('ietf.group.views.group_about',kwargs={'acronym':group.acronym})
|
url = urlreverse('ietf.group.views.group_about',kwargs={'acronym':group.acronym})
|
||||||
if user:
|
if user:
|
||||||
self.client.login(username=user.username,password='%s+password'%user.username)
|
self.client.login(username=user.username,password='%s+password'%user.username)
|
||||||
|
@ -1121,34 +1123,36 @@ class StatusUpdateTests(TestCase):
|
||||||
def test_see_status_update(self):
|
def test_see_status_update(self):
|
||||||
chair = RoleFactory(name_id='chair',group__type_id='wg')
|
chair = RoleFactory(name_id='chair',group__type_id='wg')
|
||||||
GroupEventFactory(type='status_update',group=chair.group)
|
GroupEventFactory(type='status_update',group=chair.group)
|
||||||
url = urlreverse('ietf.group.views.group_about',kwargs={'acronym':chair.group.acronym})
|
for url in group_urlreverse_list(chair.group, 'ietf.group.views.group_about'):
|
||||||
response = self.client.get(url)
|
response = self.client.get(url)
|
||||||
self.assertEqual(response.status_code,200)
|
self.assertEqual(response.status_code,200)
|
||||||
q=PyQuery(response.content)
|
q=PyQuery(response.content)
|
||||||
self.assertTrue(q('tr#status_update'))
|
self.assertTrue(q('tr#status_update'))
|
||||||
self.assertTrue(q('tr#status_update td a:contains("Show")'))
|
self.assertTrue(q('tr#status_update td a:contains("Show")'))
|
||||||
self.assertFalse(q('tr#status_update td a:contains("Edit")'))
|
self.assertFalse(q('tr#status_update td a:contains("Edit")'))
|
||||||
self.client.login(username=chair.person.user.username,password='%s+password'%chair.person.user.username)
|
self.client.login(username=chair.person.user.username,password='%s+password'%chair.person.user.username)
|
||||||
response = self.client.get(url)
|
response = self.client.get(url)
|
||||||
self.assertEqual(response.status_code,200)
|
self.assertEqual(response.status_code,200)
|
||||||
q=PyQuery(response.content)
|
q=PyQuery(response.content)
|
||||||
self.assertTrue(q('tr#status_update td a:contains("Show")'))
|
self.assertTrue(q('tr#status_update td a:contains("Show")'))
|
||||||
self.assertTrue(q('tr#status_update td a:contains("Edit")'))
|
self.assertTrue(q('tr#status_update td a:contains("Edit")'))
|
||||||
|
self.client.logout()
|
||||||
|
|
||||||
def test_view_status_update(self):
|
def test_view_status_update(self):
|
||||||
chair = RoleFactory(name_id='chair',group__type_id='wg')
|
chair = RoleFactory(name_id='chair',group__type_id='wg')
|
||||||
event = GroupEventFactory(type='status_update',group=chair.group)
|
event = GroupEventFactory(type='status_update',group=chair.group)
|
||||||
url = urlreverse('ietf.group.views.group_about_status',kwargs={'acronym':chair.group.acronym})
|
for url in group_urlreverse_list(chair.group, 'ietf.group.views.group_about_status'):
|
||||||
response = self.client.get(url)
|
response = self.client.get(url)
|
||||||
self.assertEqual(response.status_code,200)
|
self.assertEqual(response.status_code,200)
|
||||||
q=PyQuery(response.content)
|
q=PyQuery(response.content)
|
||||||
self.assertTrue(urlize(escape(event.desc) in q('pre')))
|
self.assertTrue(urlize(escape(event.desc) in q('pre')))
|
||||||
self.assertFalse(q('a#edit_button'))
|
self.assertFalse(q('a#edit_button'))
|
||||||
self.client.login(username=chair.person.user.username,password='%s+password'%chair.person.user.username)
|
self.client.login(username=chair.person.user.username,password='%s+password'%chair.person.user.username)
|
||||||
response = self.client.get(url)
|
response = self.client.get(url)
|
||||||
self.assertEqual(response.status_code,200)
|
self.assertEqual(response.status_code,200)
|
||||||
q=PyQuery(response.content)
|
q=PyQuery(response.content)
|
||||||
self.assertTrue(q('a#edit_button'))
|
self.assertTrue(q('a#edit_button'))
|
||||||
|
self.client.logout()
|
||||||
|
|
||||||
def test_edit_status_update(self):
|
def test_edit_status_update(self):
|
||||||
chair = RoleFactory(name_id='chair',group__type_id='wg')
|
chair = RoleFactory(name_id='chair',group__type_id='wg')
|
||||||
|
|
Loading…
Reference in a new issue