Checkpoint: views tests at 96%

- Legacy-Id: 10606
This commit is contained in:
Robert Sparks 2015-12-16 23:12:40 +00:00
parent f68d546233
commit de0b7c9a37
2 changed files with 119 additions and 9 deletions

View file

@ -6,6 +6,7 @@ import shutil
from pyquery import PyQuery from pyquery import PyQuery
from django.db import IntegrityError from django.db import IntegrityError
from django.db.models import Max
from django.conf import settings from django.conf import settings
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.core.files import File from django.core.files import File
@ -35,6 +36,7 @@ from ietf.nomcom.factories import NomComFactory, FeedbackFactory, \
key key
from ietf.person.factories import PersonFactory from ietf.person.factories import PersonFactory
from ietf.dbtemplate.factories import DBTemplateFactory from ietf.dbtemplate.factories import DBTemplateFactory
from ietf.dbtemplate.models import DBTemplate
client_test_cert_files = None client_test_cert_files = None
@ -1104,7 +1106,7 @@ class InactiveNomcomTests(TestCase):
title='Test template', title='Test template',
path='/nomcom/'+self.nc.group.acronym+'/test', path='/nomcom/'+self.nc.group.acronym+'/test',
variables='', variables='',
type_id='text', type_id='plain',
content='test content') content='test content')
url = reverse('nomcom_edit_template',kwargs={'year':self.nc.year(), 'template_id':template.id}) url = reverse('nomcom_edit_template',kwargs={'year':self.nc.year(), 'template_id':template.id})
login_testing_unauthorized(self, self.chair.user.username, url) login_testing_unauthorized(self, self.chair.user.username, url)
@ -1269,7 +1271,7 @@ class NewActiveNomComTests(TestCase):
url = reverse('nomcom_private_feedback_email',kwargs={'year':self.nc.year()}) url = reverse('nomcom_private_feedback_email',kwargs={'year':self.nc.year()})
login_testing_unauthorized(self,self.chair.user.username,url) login_testing_unauthorized(self,self.chair.user.username,url)
response = self.client.get(url) response = self.client.get(url)
self.assertTrue(response.status_code,200) self.assertEqual(response.status_code,200)
fb_count_before = Feedback.objects.count() fb_count_before = Feedback.objects.count()
response = self.client.post(url,{'email_text':"""To: rjsparks@nostrum.com response = self.client.post(url,{'email_text':"""To: rjsparks@nostrum.com
From: Robert Sparks <rjsparks@nostrum.com> From: Robert Sparks <rjsparks@nostrum.com>
@ -1418,7 +1420,6 @@ Junk body for testing
# nothing was classified as a nomination. # nothing was classified as a nomination.
fb0 = FeedbackFactory(nomcom=self.nc,type_id=None) fb0 = FeedbackFactory(nomcom=self.nc,type_id=None)
fb1 = FeedbackFactory(nomcom=self.nc,type_id=None) fb1 = FeedbackFactory(nomcom=self.nc,type_id=None)
np = NomineePosition.objects.filter(position__nomcom = self.nc,state='accepted').first()
response = self.client.post(url, {'form-TOTAL_FORMS': 2, response = self.client.post(url, {'form-TOTAL_FORMS': 2,
'form-INITIAL_FORMS': 2, 'form-INITIAL_FORMS': 2,
'form-0-id': fb0.id, 'form-0-id': fb0.id,
@ -1431,6 +1432,90 @@ Junk body for testing
self.assertEqual(q('input[name=\"form-0-type\"]').attr['value'],'comment') self.assertEqual(q('input[name=\"form-0-type\"]').attr['value'],'comment')
self.assertFalse(q('input[name=\"extra_ids\"]')) self.assertFalse(q('input[name=\"extra_ids\"]'))
def test_feedback_unrelated(self):
FeedbackFactory(nomcom=self.nc,type_id='junk')
url=reverse('nomcom_view_feedback_unrelated',kwargs={'year':self.nc.year()})
login_testing_unauthorized(self,self.chair.user.username,url)
provide_private_key_to_test_client(self)
response = self.client.get(url)
self.assertEqual(response.status_code,200)
def test_list_templates(self):
DBTemplateFactory.create(group=self.nc.group,
title='Test template',
path='/nomcom/'+self.nc.group.acronym+'/test',
variables='',
type_id='plain',
content='test content')
url=reverse('nomcom_list_templates',kwargs={'year':self.nc.year()})
login_testing_unauthorized(self,self.chair.user.username,url)
response = self.client.get(url)
self.assertEqual(response.status_code,200)
def test_edit_templates(self):
template = DBTemplateFactory.create(group=self.nc.group,
title='Test template',
path='/nomcom/'+self.nc.group.acronym+'/test',
variables='',
type_id='plain',
content='test content')
url=reverse('nomcom_edit_template',kwargs={'year':self.nc.year(),'template_id':template.id})
login_testing_unauthorized(self,self.chair.user.username,url)
response = self.client.get(url)
self.assertEqual(response.status_code,200)
response = self.client.post(url,{'content': 'more interesting test content'})
self.assertEqual(response.status_code,302)
template = DBTemplate.objects.get(id=template.id)
self.assertEqual('more interesting test content',template.content)
def test_list_positions(self):
url = reverse('nomcom_list_positions',kwargs={'year':self.nc.year()})
login_testing_unauthorized(self,self.chair.user.username,url)
response = self.client.get(url)
self.assertEqual(response.status_code,200)
def test_remove_position(self):
position = self.nc.position_set.filter(nomineeposition__isnull=False).first()
f = FeedbackFactory(nomcom=self.nc)
f.positions.add(position)
url = reverse('nomcom_remove_position',kwargs={'year':self.nc.year(),'position_id':position.id})
login_testing_unauthorized(self,self.chair.user.username,url)
response = self.client.get(url)
self.assertEqual(response.status_code,200)
q = PyQuery(response.content)
self.assertTrue(any(['likely to be harmful' in x.text for x in q('.alert-warning')]))
response = self.client.post(url,{'remove':position.id})
self.assertEqual(response.status_code, 302)
self.assertFalse(self.nc.position_set.filter(id=position.id))
def test_remove_invalid_position(self):
no_such_position_id = self.nc.position_set.aggregate(Max('id'))['id__max']+1
url = reverse('nomcom_remove_position',kwargs={'year':self.nc.year(),'position_id':no_such_position_id})
login_testing_unauthorized(self,self.chair.user.username,url)
response = self.client.get(url)
self.assertEqual(response.status_code, 404)
def test_edit_position(self):
position = self.nc.position_set.filter(is_open=True).first()
url = reverse('nomcom_edit_position',kwargs={'year':self.nc.year(),'position_id':position.id})
login_testing_unauthorized(self,self.chair.user.username,url)
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
response = self.client.post(url,{'name':'more interesting test name'})
self.assertEqual(response.status_code, 302)
position = Position.objects.get(id=position.id)
self.assertEqual('more interesting test name',position.name)
self.assertFalse(position.is_open)
def test_edit_invalid_position(self):
no_such_position_id = self.nc.position_set.aggregate(Max('id'))['id__max']+1
url = reverse('nomcom_edit_position',kwargs={'year':self.nc.year(),'position_id':no_such_position_id})
login_testing_unauthorized(self,self.chair.user.username,url)
response = self.client.get(url)
self.assertEqual(response.status_code, 404)
# Note that the old tests currently test the edit_position view through its nomcom_add_position name
class NomComIndexTests(TestCase): class NomComIndexTests(TestCase):
def setUp(self): def setUp(self):
@ -1441,3 +1526,32 @@ class NomComIndexTests(TestCase):
url = reverse('ietf.nomcom.views.index') url = reverse('ietf.nomcom.views.index')
response = self.client.get(url) response = self.client.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
class NoPublicKeyTests(TestCase):
def setUp(self):
self.nc = NomComFactory.create(**nomcom_kwargs_for_year(public_key=None))
self.chair = self.nc.group.role_set.filter(name='chair').first().person
def do_common_work(self,url,expected_form):
login_testing_unauthorized(self,self.chair.user.username,url)
response = self.client.get(url)
self.assertEqual(response.status_code,200)
q=PyQuery(response.content)
self.assertTrue(any(['not yet' in x.text for x in q('.alert-warning')]))
self.assertEqual(bool(q('form:not(.navbar-form)')),expected_form)
self.client.logout()
def test_not_yet(self):
# Warn reminder mail
self.do_common_work(reverse('nomcom_send_reminder_mail',kwargs={'year':self.nc.year(),'type':'accept'}),True)
# No nominations
self.do_common_work(reverse('nomcom_private_nominate',kwargs={'year':self.nc.year()}),False)
# No feedback
self.do_common_work(reverse('nomcom_private_feedback',kwargs={'year':self.nc.year()}),False)
# No feedback email
self.do_common_work(reverse('nomcom_private_feedback_email',kwargs={'year':self.nc.year()}),False)
# No questionnaire responses
self.do_common_work(reverse('nomcom_private_questionnaire',kwargs={'year':self.nc.year()}),False)
# Warn on edit nomcom
self.do_common_work(reverse('nomcom_edit_nomcom',kwargs={'year':self.nc.year()}),True)

View file

@ -38,11 +38,7 @@ import debug # pyflakes:ignore
def index(request): def index(request):
nomcom_list = Group.objects.filter(type__slug='nomcom').order_by('acronym') nomcom_list = Group.objects.filter(type__slug='nomcom').order_by('acronym')
for nomcom in nomcom_list: for nomcom in nomcom_list:
year = nomcom.acronym[6:] year = int(nomcom.acronym[6:])
try:
year = int(year)
except ValueError:
year = None
nomcom.year = year nomcom.year = year
nomcom.label = "%s/%s" % (year, year+1) nomcom.label = "%s/%s" % (year, year+1)
if year in [ 2005, 2006, 2007, 2008, 2009, 2010 ]: if year in [ 2005, 2006, 2007, 2008, 2009, 2010 ]:
@ -816,7 +812,7 @@ def edit_nomcom(request, year):
if nomcom.public_key: if nomcom.public_key:
message = ('warning', 'Previous data will remain encrypted with the old key') message = ('warning', 'Previous data will remain encrypted with the old key')
else: else:
message = ('warning', 'The nomcom has not a public key yet') message = ('warning', 'This Nomcom does not yet have a public key')
ReminderDateInlineFormSet = inlineformset_factory(parent_model=NomCom, ReminderDateInlineFormSet = inlineformset_factory(parent_model=NomCom,
model=ReminderDates, model=ReminderDates,