more tests and a minor fix
This commit is contained in:
parent
9d9ab225a1
commit
a19926dc29
100
cfp/tests.py
100
cfp/tests.py
|
@ -6,6 +6,7 @@ from django.utils import timezone
|
|||
|
||||
from datetime import datetime, timedelta
|
||||
from xml.etree import ElementTree as ET
|
||||
from icalendar import Calendar
|
||||
import pytz
|
||||
|
||||
from .models import *
|
||||
|
@ -49,6 +50,32 @@ class VolunteersTests(TestCase):
|
|||
self.assertRedirects(response, reverse('volunteer-home', kwargs=dict(volunteer_token=v.token)),
|
||||
status_code=302, target_status_code=200)
|
||||
|
||||
def test_enrole_logged_in(self):
|
||||
self.client.login(username='a', password='a')
|
||||
self.assertRedirects(self.client.get(reverse('volunteer-enrole')), reverse('volunteer-home'))
|
||||
self.client.login(username='b', password='b')
|
||||
self.assertEqual(self.client.get(reverse('volunteer-enrole')).status_code, 403)
|
||||
conf = Conference.objects.first()
|
||||
conf.volunteers_opening_date = timezone.now() - timedelta(hours=1)
|
||||
conf.save()
|
||||
user = User.objects.get(username='b')
|
||||
user.first_name = 'Jean'
|
||||
user.last_name = 'Mi'
|
||||
user.save()
|
||||
user.profile.phone_number = '0123456789'
|
||||
user.profile.save()
|
||||
response = self.client.get(reverse('volunteer-enrole'))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, 'value="Jean Mi"')
|
||||
self.assertContains(response, 'value="0123456789"')
|
||||
n = Volunteer.objects.count()
|
||||
response = self.client.post(reverse('volunteer-enrole'), {'name': 'B'})
|
||||
self.assertEqual(Volunteer.objects.count(), n+1)
|
||||
v = Volunteer.objects.get(name='B')
|
||||
self.assertRedirects(response, reverse('volunteer-home', kwargs=dict(volunteer_token=v.token)),
|
||||
status_code=302, target_status_code=200)
|
||||
self.assertRedirects(self.client.get(reverse('volunteer-enrole')), reverse('volunteer-home'))
|
||||
|
||||
def test_home(self):
|
||||
v = Volunteer.objects.get(name='A')
|
||||
self.assertEqual(self.client.get(reverse('volunteer-home', kwargs=dict(volunteer_token=v.token))).status_code, 200)
|
||||
|
@ -65,6 +92,17 @@ class VolunteersTests(TestCase):
|
|||
self.assertRedirects(self.client.get(reverse('volunteer-quit', kwargs=dict(volunteer_token=v.token, activity=a.slug))),
|
||||
reverse('volunteer-home', kwargs=dict(volunteer_token=v.token)), status_code=302, target_status_code=200)
|
||||
|
||||
def test_volunteer_mail_token(self):
|
||||
v = Volunteer.objects.get(name='A')
|
||||
self.assertEqual(self.client.get(reverse('volunteer-mail-token')).status_code, 200)
|
||||
|
||||
def test_volunteer_list(self):
|
||||
self.client.login(username='c', password='c')
|
||||
self.assertEqual(self.client.get(reverse('volunteer-list')).status_code, 200)
|
||||
response = self.client.get(reverse('volunteer-list') + '?format=csv')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.get('Content-Disposition'), 'attachment; filename="volunteers.csv"')
|
||||
|
||||
|
||||
class ProposalTest(TestCase):
|
||||
def setUp(self):
|
||||
|
@ -80,6 +118,16 @@ class ProposalTest(TestCase):
|
|||
talk.speakers.add(speaker1)
|
||||
talk.speakers.add(speaker2)
|
||||
|
||||
def test_home(self):
|
||||
self.assertRedirects(self.client.get(reverse('home')), reverse('proposal-home'), status_code=302)
|
||||
site = Site.objects.first()
|
||||
conf = Conference.objects.get(site=site)
|
||||
conf.home = '**Welcome!**'
|
||||
conf.save()
|
||||
response = self.client.get(reverse('home'))
|
||||
self.assertEquals(response.status_code, 200)
|
||||
self.assertContains(response, '<strong>Welcome!</strong>')
|
||||
|
||||
def test_opened_categories(self):
|
||||
# TODO cover all cases
|
||||
conf = Conference.objects.get(name='PonyConf')
|
||||
|
@ -87,7 +135,21 @@ class ProposalTest(TestCase):
|
|||
self.assertQuerysetEqual(conf.opened_categories, all_categories_pk, transform=lambda category: category.pk, ordered=False)
|
||||
|
||||
def test_proposal_home(self):
|
||||
conf = Conference.objects.get(name='PonyConf')
|
||||
site = conf.site
|
||||
self.assertEqual(self.client.get(reverse('proposal-home')).status_code, 200)
|
||||
response = self.client.post(reverse('proposal-home'), {
|
||||
'name': 'Jean-Mi',
|
||||
'email': 'jean@mi.me',
|
||||
'biography': 'I am Jean-Mi!',
|
||||
'category': conf.opened_categories.first().pk,
|
||||
'title': 'PonyConf',
|
||||
'description': 'PonyConf is cool.',
|
||||
})
|
||||
speaker = Participant.objects.get(site=site, name='Jean-Mi')
|
||||
talk = Talk.objects.get(site=site, title='PonyConf')
|
||||
self.assertRedirects(response, reverse('proposal-talk-details', kwargs=dict(speaker_token=speaker.token, talk_id=talk.pk)), 302)
|
||||
self.assertTrue(speaker in talk.speakers.all())
|
||||
|
||||
def test_proposal_dashboard(self):
|
||||
speaker = Participant.objects.get(name='Speaker 1')
|
||||
|
@ -141,6 +203,8 @@ class ScheduleTest(TestCase):
|
|||
participant = Participant.objects.create(site=site, name='Participant 1', email='1@example.org')
|
||||
t1 = Tag.objects.create(site=site, name='Private tag', public=False)
|
||||
t2 = Tag.objects.create(site=site, name='Public tag', public=True)
|
||||
t3 = Tag.objects.create(site=site, name='Not staff tag', staff=False)
|
||||
t3 = Tag.objects.create(site=site, name='Staff tag', staff=True)
|
||||
start_date = datetime(year=2000, month=1, day=1, hour=10, tzinfo=pytz.timezone('Europe/Paris'))
|
||||
pending_talk = Talk.objects.create(site=site, title='Talk', description='A talk.', category=category)
|
||||
pending_talk.speakers.add(participant)
|
||||
|
@ -148,11 +212,45 @@ class ScheduleTest(TestCase):
|
|||
accepted_talk.speakers.add(participant)
|
||||
accepted_talk.tags.add(t1)
|
||||
accepted_talk.tags.add(t2)
|
||||
accepted_talk.tags.add(t3)
|
||||
|
||||
def test_public_schedule(self):
|
||||
site = Site.objects.first()
|
||||
conf = Conference.objects.get(site=site)
|
||||
self.assertEquals(self.client.get(reverse('public-schedule')).status_code, 403)
|
||||
conf.schedule_publishing_date = timezone.now() - timedelta(hours=1)
|
||||
conf.save()
|
||||
self.assertEquals(self.client.get(reverse('public-schedule')).status_code, 200)
|
||||
conf.schedule_redirection_url ='http://example.net/schedule.html'
|
||||
conf.save()
|
||||
self.assertRedirects(self.client.get(reverse('public-schedule')), conf.schedule_redirection_url, status_code=302, fetch_redirect_response=False)
|
||||
|
||||
def test_staff_schedule(self):
|
||||
self.assertEqual(self.client.get(reverse('staff-schedule')).status_code, 302)
|
||||
self.client.login(username='admin', password='admin')
|
||||
self.assertEqual(self.client.get(reverse('staff-schedule')).status_code, 200)
|
||||
|
||||
def test_xml(self):
|
||||
self.assertEqual(self.client.get(reverse('staff-schedule') + 'xml/').status_code, 302)
|
||||
self.client.login(username='admin', password='admin')
|
||||
response = self.client.get(reverse('staff-schedule') + 'xml/')
|
||||
self.assertEquals(response.status_code, 200)
|
||||
self.assertContains(response, 'Public tag')
|
||||
self.assertNotContains(response, 'Private tag')
|
||||
ET.fromstring(response.content)
|
||||
|
||||
def test_ics(self):
|
||||
self.client.login(username='admin', password='admin')
|
||||
response = self.client.get(reverse('staff-schedule') + 'ics/')
|
||||
self.assertEquals(response.status_code, 200)
|
||||
Calendar.from_ical(response.content)
|
||||
|
||||
def test_html(self):
|
||||
self.client.login(username='admin', password='admin')
|
||||
response = self.client.get(reverse('staff-schedule') + 'html/')
|
||||
self.assertContains(response, 'Staff tag')
|
||||
self.assertNotContains(response, 'Not staff tag')
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
def test_inexistent_format(self):
|
||||
self.client.login(username='admin', password='admin')
|
||||
self.assertEquals(self.client.get(reverse('staff-schedule') + 'inexistent/').status_code, 404)
|
||||
|
|
17
cfp/views.py
17
cfp/views.py
|
@ -43,18 +43,17 @@ def home(request):
|
|||
|
||||
|
||||
def volunteer_enrole(request):
|
||||
if request.user.is_authenticated() and Volunteer.objects.filter(site=request.conference.site, email=request.user.email).exists():
|
||||
return redirect(reverse('volunteer-home'))
|
||||
if not request.conference.volunteers_enrollment_is_open():
|
||||
raise PermissionDenied
|
||||
initial = {}
|
||||
if request.user.is_authenticated():
|
||||
if Volunteer.objects.filter(site=request.conference.site, email=request.user.email).exists():
|
||||
return redirect(reverse('volunteer-home'))
|
||||
elif not request.POST:
|
||||
initial.update({
|
||||
'name': request.user.get_full_name(),
|
||||
'phone_number': request.user.profile.phone_number,
|
||||
'sms_prefered': request.user.profile.sms_prefered,
|
||||
})
|
||||
if request.user.is_authenticated() and not request.POST:
|
||||
initial.update({
|
||||
'name': request.user.get_full_name(),
|
||||
'phone_number': request.user.profile.phone_number,
|
||||
'sms_prefered': request.user.profile.sms_prefered,
|
||||
})
|
||||
form = VolunteerForm(request.POST or None, initial=initial, conference=request.conference)
|
||||
if request.user.is_authenticated():
|
||||
form.fields.pop('email')
|
||||
|
|
Loading…
Reference in New Issue