From 084dc8c173b2fcae68b49949e6b4212c0edebfcc Mon Sep 17 00:00:00 2001 From: Jens Kleineheismann Date: Wed, 3 Apr 2019 15:33:03 +0200 Subject: [PATCH] UPD: dav_events: more tests (with real test data). --- dav_events/tests/test_views.py | 138 +++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 dav_events/tests/test_views.py diff --git a/dav_events/tests/test_views.py b/dav_events/tests/test_views.py new file mode 100644 index 0000000..ea70826 --- /dev/null +++ b/dav_events/tests/test_views.py @@ -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) +