UPD: improved the providing of real test data.
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
import json
|
||||
import os
|
||||
from django.test import TestCase
|
||||
from django.urls import reverse
|
||||
|
||||
from dav_events.models.event import Event
|
||||
|
||||
from .generic import EventMixin
|
||||
|
||||
class EventsTestCase(TestCase):
|
||||
|
||||
class EventsTestCase(EventMixin, TestCase):
|
||||
def _merge_form_data(self, form, data):
|
||||
form_data = {}
|
||||
for name in form.fields:
|
||||
@@ -19,19 +19,7 @@ class EventsTestCase(TestCase):
|
||||
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):
|
||||
def create_event_by_view(self, data):
|
||||
c = self.client
|
||||
url = reverse('dav_events:create')
|
||||
|
||||
@@ -132,7 +120,42 @@ class EventsTestCase(TestCase):
|
||||
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)
|
||||
def gen_create_event_input(self):
|
||||
exclude_fields = ('owner', 'created_at', 'number', 'planned_publication_date')
|
||||
for data in self.gen_event_data(exclude_fields=exclude_fields):
|
||||
ndata = {}
|
||||
for key in data:
|
||||
value = data[key]
|
||||
if key in ('pre_meeting_1', 'pre_meeting_2'):
|
||||
value = value.strftime('%d.%m.%Y %H:%M')
|
||||
elif key == 'deadline':
|
||||
first_day = data['first_day']
|
||||
delta = first_day - value
|
||||
days = delta.days
|
||||
if 27 < days < 32:
|
||||
value = 'month'
|
||||
elif 89 < days < 92:
|
||||
value = 'quarter'
|
||||
else:
|
||||
ndata['deadline_other'] = value.strftime('%d.%m.%Y')
|
||||
value = 'OTHER'
|
||||
elif key in ('first_day', 'last_day', 'alt_first_day', 'alt_last_day'):
|
||||
value = value.strftime('%d.%m.%Y')
|
||||
elif key in ('meeting_time', 'departure_time', 'return_departure_time', 'return_arrival_time'):
|
||||
if value.second == 0:
|
||||
value = value.strftime('%H:%M')
|
||||
else:
|
||||
value = value.strftime('%H:%M:%S')
|
||||
elif key in ('min_participants', 'max_participants'):
|
||||
value = str(value)
|
||||
elif key == 'charge':
|
||||
value = str(value)
|
||||
if value.endswith('.0'):
|
||||
value = value[:-2]
|
||||
ndata[key] = value
|
||||
yield ndata
|
||||
|
||||
def test_event_create_view(self):
|
||||
for data in self.gen_create_event_input():
|
||||
self.create_event_by_view(data)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user