UPD: dav_events: more tests (with real test data).
This commit is contained in:
138
dav_events/tests/test_views.py
Normal file
138
dav_events/tests/test_views.py
Normal file
@@ -0,0 +1,138 @@
|
||||
import json
|
||||
import os
|
||||
from django.test import TestCase
|
||||
from django.urls import reverse
|
||||
|
||||
from dav_events.models.event import Event
|
||||
|
||||
|
||||
class EventsTestCase(TestCase):
|
||||
def _merge_form_data(self, form, data):
|
||||
form_data = {}
|
||||
for name in form.fields:
|
||||
initial = form.get_initial_for_field(form.fields[name], name)
|
||||
if initial is None and hasattr(form.fields[name], 'choices'):
|
||||
initial = form.fields[name].choices[0][0]
|
||||
if initial is not None:
|
||||
form_data[name] = initial
|
||||
if name in data:
|
||||
form_data[name] = data[name]
|
||||
return form_data
|
||||
|
||||
def _gen_create_event_input(self):
|
||||
test_data_dirname = 'data'
|
||||
json_file_name = 'create_event_input.json'
|
||||
path = os.path.join(os.path.dirname(__file__), test_data_dirname, json_file_name)
|
||||
with open(path) as f:
|
||||
data_sets = json.load(f)
|
||||
|
||||
for data in data_sets:
|
||||
if 'trainer_email' in data:
|
||||
data['trainer_email'] += '.example.com'
|
||||
yield data
|
||||
|
||||
def create_event(self, data):
|
||||
c = self.client
|
||||
url = reverse('dav_events:create')
|
||||
|
||||
response = c.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIn('form', response.context)
|
||||
form = response.context['form']
|
||||
|
||||
# ModeForm
|
||||
form_data = self._merge_form_data(form, data)
|
||||
response = c.post(url, form_data)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIn('form', response.context)
|
||||
form = response.context['form']
|
||||
self.assertEqual(form.errors, {})
|
||||
|
||||
# LocationForm
|
||||
form_data = self._merge_form_data(form, data)
|
||||
response = c.post(url, form_data)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIn('form', response.context)
|
||||
form = response.context['form']
|
||||
self.assertEqual(form.errors, {})
|
||||
|
||||
# JourneyForm
|
||||
form_data = self._merge_form_data(form, data)
|
||||
response = c.post(url, form_data)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIn('form', response.context)
|
||||
form = response.context['form']
|
||||
self.assertEqual(form.errors, {})
|
||||
|
||||
if form.__class__.__name__ == 'AccommodationForm':
|
||||
# AccommodationForm
|
||||
form_data = self._merge_form_data(form, data)
|
||||
response = c.post(url, form_data)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIn('form', response.context)
|
||||
form = response.context['form']
|
||||
self.assertEqual(form.errors, {})
|
||||
|
||||
# RequirementsForm
|
||||
form_data = self._merge_form_data(form, data)
|
||||
response = c.post(url, form_data)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIn('form', response.context)
|
||||
form = response.context['form']
|
||||
self.assertEqual(form.errors, {})
|
||||
|
||||
# TrainerForm
|
||||
form_data = self._merge_form_data(form, data)
|
||||
response = c.post(url, form_data)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIn('form', response.context)
|
||||
form = response.context['form']
|
||||
self.assertEqual(form.errors, {})
|
||||
|
||||
# RegistrationForm
|
||||
form_data = self._merge_form_data(form, data)
|
||||
response = c.post(url, form_data)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIn('form', response.context)
|
||||
form = response.context['form']
|
||||
self.assertEqual(form.errors, {})
|
||||
|
||||
# ChargesForm
|
||||
form_data = self._merge_form_data(form, data)
|
||||
response = c.post(url, form_data)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIn('form', response.context)
|
||||
form = response.context['form']
|
||||
self.assertEqual(form.errors, {})
|
||||
|
||||
if form.__class__.__name__ == 'TrainingForm':
|
||||
# TrainingForm
|
||||
form_data = self._merge_form_data(form, data)
|
||||
response = c.post(url, form_data)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIn('form', response.context)
|
||||
form = response.context['form']
|
||||
self.assertEqual(form.errors, {})
|
||||
|
||||
# DescriptionForm
|
||||
form_data = self._merge_form_data(form, data)
|
||||
response = c.post(url, form_data)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIn('form', response.context)
|
||||
form = response.context['form']
|
||||
self.assertEqual(form.errors, {})
|
||||
|
||||
# SummaryForm
|
||||
form_data = self._merge_form_data(form, data)
|
||||
response = c.post(url, form_data, follow=True)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
if 'form' in response.context:
|
||||
self.assertEqual(response.context['form'].errors, {})
|
||||
|
||||
event = Event.objects.order_by('created_at').last()
|
||||
return event
|
||||
|
||||
def test_event_create_view(self):
|
||||
for data in self._gen_create_event_input():
|
||||
self.create_event(data)
|
||||
|
||||
Reference in New Issue
Block a user