Skip to content

Commit de0b7c9

Browse files
committed
Checkpoint: views tests at 96%
- Legacy-Id: 10606
1 parent f68d546 commit de0b7c9

2 files changed

Lines changed: 119 additions & 9 deletions

File tree

ietf/nomcom/tests.py

Lines changed: 117 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from pyquery import PyQuery
77

88
from django.db import IntegrityError
9+
from django.db.models import Max
910
from django.conf import settings
1011
from django.core.urlresolvers import reverse
1112
from django.core.files import File
@@ -35,6 +36,7 @@
3536
key
3637
from ietf.person.factories import PersonFactory
3738
from ietf.dbtemplate.factories import DBTemplateFactory
39+
from ietf.dbtemplate.models import DBTemplate
3840

3941
client_test_cert_files = None
4042

@@ -1104,7 +1106,7 @@ def test_can_view_but_not_edit_templates(self):
11041106
title='Test template',
11051107
path='/nomcom/'+self.nc.group.acronym+'/test',
11061108
variables='',
1107-
type_id='text',
1109+
type_id='plain',
11081110
content='test content')
11091111
url = reverse('nomcom_edit_template',kwargs={'year':self.nc.year(), 'template_id':template.id})
11101112
login_testing_unauthorized(self, self.chair.user.username, url)
@@ -1269,7 +1271,7 @@ def test_email_pasting(self):
12691271
url = reverse('nomcom_private_feedback_email',kwargs={'year':self.nc.year()})
12701272
login_testing_unauthorized(self,self.chair.user.username,url)
12711273
response = self.client.get(url)
1272-
self.assertTrue(response.status_code,200)
1274+
self.assertEqual(response.status_code,200)
12731275
fb_count_before = Feedback.objects.count()
12741276
response = self.client.post(url,{'email_text':"""To: rjsparks@nostrum.com
12751277
From: Robert Sparks <rjsparks@nostrum.com>
@@ -1418,7 +1420,6 @@ def test_complicated_feedback_pending(self):
14181420
# nothing was classified as a nomination.
14191421
fb0 = FeedbackFactory(nomcom=self.nc,type_id=None)
14201422
fb1 = FeedbackFactory(nomcom=self.nc,type_id=None)
1421-
np = NomineePosition.objects.filter(position__nomcom = self.nc,state='accepted').first()
14221423
response = self.client.post(url, {'form-TOTAL_FORMS': 2,
14231424
'form-INITIAL_FORMS': 2,
14241425
'form-0-id': fb0.id,
@@ -1431,6 +1432,90 @@ def test_complicated_feedback_pending(self):
14311432
self.assertEqual(q('input[name=\"form-0-type\"]').attr['value'],'comment')
14321433
self.assertFalse(q('input[name=\"extra_ids\"]'))
14331434

1435+
def test_feedback_unrelated(self):
1436+
FeedbackFactory(nomcom=self.nc,type_id='junk')
1437+
url=reverse('nomcom_view_feedback_unrelated',kwargs={'year':self.nc.year()})
1438+
login_testing_unauthorized(self,self.chair.user.username,url)
1439+
provide_private_key_to_test_client(self)
1440+
response = self.client.get(url)
1441+
self.assertEqual(response.status_code,200)
1442+
1443+
def test_list_templates(self):
1444+
DBTemplateFactory.create(group=self.nc.group,
1445+
title='Test template',
1446+
path='/nomcom/'+self.nc.group.acronym+'/test',
1447+
variables='',
1448+
type_id='plain',
1449+
content='test content')
1450+
url=reverse('nomcom_list_templates',kwargs={'year':self.nc.year()})
1451+
login_testing_unauthorized(self,self.chair.user.username,url)
1452+
response = self.client.get(url)
1453+
self.assertEqual(response.status_code,200)
1454+
1455+
def test_edit_templates(self):
1456+
template = DBTemplateFactory.create(group=self.nc.group,
1457+
title='Test template',
1458+
path='/nomcom/'+self.nc.group.acronym+'/test',
1459+
variables='',
1460+
type_id='plain',
1461+
content='test content')
1462+
url=reverse('nomcom_edit_template',kwargs={'year':self.nc.year(),'template_id':template.id})
1463+
login_testing_unauthorized(self,self.chair.user.username,url)
1464+
response = self.client.get(url)
1465+
self.assertEqual(response.status_code,200)
1466+
response = self.client.post(url,{'content': 'more interesting test content'})
1467+
self.assertEqual(response.status_code,302)
1468+
template = DBTemplate.objects.get(id=template.id)
1469+
self.assertEqual('more interesting test content',template.content)
1470+
1471+
def test_list_positions(self):
1472+
url = reverse('nomcom_list_positions',kwargs={'year':self.nc.year()})
1473+
login_testing_unauthorized(self,self.chair.user.username,url)
1474+
response = self.client.get(url)
1475+
self.assertEqual(response.status_code,200)
1476+
1477+
def test_remove_position(self):
1478+
position = self.nc.position_set.filter(nomineeposition__isnull=False).first()
1479+
f = FeedbackFactory(nomcom=self.nc)
1480+
f.positions.add(position)
1481+
url = reverse('nomcom_remove_position',kwargs={'year':self.nc.year(),'position_id':position.id})
1482+
login_testing_unauthorized(self,self.chair.user.username,url)
1483+
response = self.client.get(url)
1484+
self.assertEqual(response.status_code,200)
1485+
q = PyQuery(response.content)
1486+
self.assertTrue(any(['likely to be harmful' in x.text for x in q('.alert-warning')]))
1487+
response = self.client.post(url,{'remove':position.id})
1488+
self.assertEqual(response.status_code, 302)
1489+
self.assertFalse(self.nc.position_set.filter(id=position.id))
1490+
1491+
def test_remove_invalid_position(self):
1492+
no_such_position_id = self.nc.position_set.aggregate(Max('id'))['id__max']+1
1493+
url = reverse('nomcom_remove_position',kwargs={'year':self.nc.year(),'position_id':no_such_position_id})
1494+
login_testing_unauthorized(self,self.chair.user.username,url)
1495+
response = self.client.get(url)
1496+
self.assertEqual(response.status_code, 404)
1497+
1498+
def test_edit_position(self):
1499+
position = self.nc.position_set.filter(is_open=True).first()
1500+
url = reverse('nomcom_edit_position',kwargs={'year':self.nc.year(),'position_id':position.id})
1501+
login_testing_unauthorized(self,self.chair.user.username,url)
1502+
response = self.client.get(url)
1503+
self.assertEqual(response.status_code, 200)
1504+
response = self.client.post(url,{'name':'more interesting test name'})
1505+
self.assertEqual(response.status_code, 302)
1506+
position = Position.objects.get(id=position.id)
1507+
self.assertEqual('more interesting test name',position.name)
1508+
self.assertFalse(position.is_open)
1509+
1510+
def test_edit_invalid_position(self):
1511+
no_such_position_id = self.nc.position_set.aggregate(Max('id'))['id__max']+1
1512+
url = reverse('nomcom_edit_position',kwargs={'year':self.nc.year(),'position_id':no_such_position_id})
1513+
login_testing_unauthorized(self,self.chair.user.username,url)
1514+
response = self.client.get(url)
1515+
self.assertEqual(response.status_code, 404)
1516+
1517+
# Note that the old tests currently test the edit_position view through its nomcom_add_position name
1518+
14341519

14351520
class NomComIndexTests(TestCase):
14361521
def setUp(self):
@@ -1441,3 +1526,32 @@ def testIndex(self):
14411526
url = reverse('ietf.nomcom.views.index')
14421527
response = self.client.get(url)
14431528
self.assertEqual(response.status_code,200)
1529+
1530+
class NoPublicKeyTests(TestCase):
1531+
def setUp(self):
1532+
self.nc = NomComFactory.create(**nomcom_kwargs_for_year(public_key=None))
1533+
self.chair = self.nc.group.role_set.filter(name='chair').first().person
1534+
1535+
def do_common_work(self,url,expected_form):
1536+
login_testing_unauthorized(self,self.chair.user.username,url)
1537+
response = self.client.get(url)
1538+
self.assertEqual(response.status_code,200)
1539+
q=PyQuery(response.content)
1540+
self.assertTrue(any(['not yet' in x.text for x in q('.alert-warning')]))
1541+
self.assertEqual(bool(q('form:not(.navbar-form)')),expected_form)
1542+
self.client.logout()
1543+
1544+
def test_not_yet(self):
1545+
# Warn reminder mail
1546+
self.do_common_work(reverse('nomcom_send_reminder_mail',kwargs={'year':self.nc.year(),'type':'accept'}),True)
1547+
# No nominations
1548+
self.do_common_work(reverse('nomcom_private_nominate',kwargs={'year':self.nc.year()}),False)
1549+
# No feedback
1550+
self.do_common_work(reverse('nomcom_private_feedback',kwargs={'year':self.nc.year()}),False)
1551+
# No feedback email
1552+
self.do_common_work(reverse('nomcom_private_feedback_email',kwargs={'year':self.nc.year()}),False)
1553+
# No questionnaire responses
1554+
self.do_common_work(reverse('nomcom_private_questionnaire',kwargs={'year':self.nc.year()}),False)
1555+
# Warn on edit nomcom
1556+
self.do_common_work(reverse('nomcom_edit_nomcom',kwargs={'year':self.nc.year()}),True)
1557+

ietf/nomcom/views.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,7 @@
3838
def index(request):
3939
nomcom_list = Group.objects.filter(type__slug='nomcom').order_by('acronym')
4040
for nomcom in nomcom_list:
41-
year = nomcom.acronym[6:]
42-
try:
43-
year = int(year)
44-
except ValueError:
45-
year = None
41+
year = int(nomcom.acronym[6:])
4642
nomcom.year = year
4743
nomcom.label = "%s/%s" % (year, year+1)
4844
if year in [ 2005, 2006, 2007, 2008, 2009, 2010 ]:
@@ -816,7 +812,7 @@ def edit_nomcom(request, year):
816812
if nomcom.public_key:
817813
message = ('warning', 'Previous data will remain encrypted with the old key')
818814
else:
819-
message = ('warning', 'The nomcom has not a public key yet')
815+
message = ('warning', 'This Nomcom does not yet have a public key')
820816

821817
ReminderDateInlineFormSet = inlineformset_factory(parent_model=NomCom,
822818
model=ReminderDates,

0 commit comments

Comments
 (0)