Skip to content
Snippets Groups Projects
Commit f6af6dc9 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

validation of visit_import_data form

parent 8e0f9b4e
No related branches found
No related tags found
1 merge request!275Resolve "update automatic visit/subject importer"
Pipeline #34418 failed
import re
from django.forms import ModelForm
from web.models import VisitImportData
......@@ -10,3 +12,12 @@ class VisitImportDataEditForm(ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def clean_run_at_times(self):
run_at_times = self.cleaned_data['run_at_times']
pattern = re.compile("^[0-9]{2}:[0-9]{2}$")
for entry in run_at_times.split(";"):
if entry != '' and not pattern.match(entry):
self.add_error('run_at_times', "Hours must be semicolon separated HH:MM values")
else:
return run_at_times
import logging
from web.forms.visit_import_data_form import VisitImportDataEditForm
from web.models import VisitImportData
from web.tests import LoggedInWithWorkerTestCase
from web.tests.functions import format_form_field, create_worker, get_test_study
logger = logging.getLogger(__name__)
class VisitImportDataEditFormTests(LoggedInWithWorkerTestCase):
def setUp(self):
super(VisitImportDataEditFormTests, self).setUp()
self.visit_import_data = VisitImportData.objects.create(study=get_test_study(),
import_worker=create_worker())
def test_invalid_run_at_times(self):
self.login_as_admin()
form_data = self.get_form_data(self.visit_import_data)
form_data["run_at_times"] = "bla"
voucher_form = VisitImportDataEditForm(instance=self.visit_import_data, data=form_data)
self.assertFalse(voucher_form.is_valid())
self.assertTrue("run_at_times" in voucher_form.errors)
def test_valid_form(self):
self.login_as_admin()
form_data = self.get_form_data(self.visit_import_data)
voucher_form = VisitImportDataEditForm(instance=self.visit_import_data, data=form_data)
self.assertTrue(voucher_form.is_valid())
@staticmethod
def get_form_data(visit_import_data: VisitImportData) -> dict:
voucher_form = VisitImportDataEditForm(instance=visit_import_data)
form_data = {}
for key, value in list(voucher_form.initial.items()):
form_data[key] = format_form_field(value)
return form_data
import logging
from django.urls import reverse
from web.forms.visit_import_data_form import VisitImportDataEditForm
from web.models import VisitImportData
from web.tests import LoggedInWithWorkerTestCase
from web.tests.functions import get_test_study, format_form_field
logger = logging.getLogger(__name__)
class VisitImportDataViewViewTests(LoggedInWithWorkerTestCase):
def setUp(self):
super().setUp()
self.study = get_test_study()
self.visit_import_data = VisitImportData.objects.create(study=get_test_study())
def test_render_edit(self):
self.login_as_admin()
response = self.client.get(reverse('web.views.import_visit_edit',
kwargs={'study_id': self.study.id, 'import_id': self.visit_import_data.id}))
self.assertEqual(response.status_code, 200)
def test_save_edit(self):
form_data = self.get_form_data(self.visit_import_data)
response = self.client.post(
reverse('web.views.import_visit_edit',
kwargs={'study_id': self.study.id, 'import_id': self.visit_import_data.id}), data=form_data)
self.assertEqual(response.status_code, 302)
self.assertFalse("study" in response['Location'])
@staticmethod
def get_form_data(visit_import_data: VisitImportData) -> dict:
voucher_form = VisitImportDataEditForm(instance=visit_import_data)
form_data = {}
for key, value in list(voucher_form.initial.items()):
form_data[key] = format_form_field(value)
return form_data
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment