diff --git a/smash/web/api_urls.py b/smash/web/api_urls.py index 7556904693f0ccd6f35c23e7dca33c37b53d86bc..e6f8f746b77ac19011e44a46cee9f7fbe6af5c17 100644 --- a/smash/web/api_urls.py +++ b/smash/web/api_urls.py @@ -26,7 +26,8 @@ urlpatterns = [ # configuration items url(r'^configuration_items$', configuration.configuration_items, name='web.api.configuration_items'), - url(r'^configuration_items/update$', configuration.update_configuration_item, name='web.api.update_configuration_item'), + url(r'^configuration_items/update$', configuration.update_configuration_item, + name='web.api.update_configuration_item'), # subjects data url(r'^cities$', subject.cities, name='web.api.cities'), diff --git a/smash/web/api_views/configuration.py b/smash/web/api_views/configuration.py index 25d529626f102c8c3854be0a9a86e51048e04619..305cbef01bc87a15ddec0ca735c18b63866a3b9f 100644 --- a/smash/web/api_views/configuration.py +++ b/smash/web/api_views/configuration.py @@ -32,9 +32,10 @@ def configuration_items(request): "data": data }) + @login_required def update_configuration_item(request): - id = int(request.GET.get("id", None)) + id = int(request.GET.get("id", "-1")) value = request.GET.get("value", None) if (id is None) or (value is None): @@ -43,13 +44,14 @@ def update_configuration_item(request): "message": "id and value are obligatory" }) - item = ConfigurationItem.objects.get(id=id) - if item is None: + items = ConfigurationItem.objects.filter(id=id) + if len(items) == 0: return JsonResponse({ "status": "error", "message": "item with given id doesn't exist" }) - item.value=value + item = items[0] + item.value = value item.save() return JsonResponse({ "status": "ok", diff --git a/smash/web/tests/functions.py b/smash/web/tests/functions.py index 2088fa6aa8c049210159cae8d68799be987d77b4..fea131ec68825d924ccc2e8ec60e6d0d5035d88d 100644 --- a/smash/web/tests/functions.py +++ b/smash/web/tests/functions.py @@ -2,7 +2,7 @@ import datetime from django.contrib.auth.models import User -from web.models import Location, AppointmentType, Subject, Worker, Visit, Appointment +from web.models import Location, AppointmentType, Subject, Worker, Visit, Appointment, ConfigurationItem from web.models.constants import SEX_CHOICES_MALE, SUBJECT_TYPE_CHOICES_CONTROL from web.views.notifications import get_today_midnight_date @@ -89,3 +89,12 @@ def create_appointment(visit=None, when=None): length=30, location=get_test_location(), datetime_when=when) + + +def create_configuration_item(): + item = ConfigurationItem.objects.create() + item.type = "TEST" + item.value = "xxx" + item.name = "yyy" + item.save() + return item; diff --git a/smash/web/tests/test_api_configuration_item.py b/smash/web/tests/test_api_configuration_item.py new file mode 100644 index 0000000000000000000000000000000000000000..a550ff27cb88b64d95630dc0c032ffaee2695d13 --- /dev/null +++ b/smash/web/tests/test_api_configuration_item.py @@ -0,0 +1,33 @@ +# coding=utf-8 + + +from django.urls import reverse + +from web.models import ConfigurationItem +from web.tests.functions import create_configuration_item +from . import LoggedInTestCase + + +class TestConfigurationItemApi(LoggedInTestCase): + def test_configuration_items(self): + create_configuration_item() + response = self.client.get(reverse('web.api.configuration_items')) + self.assertEqual(response.status_code, 200) + + def test_configuration_modify_invalid(self): + response = self.client.get(reverse('web.api.update_configuration_item')) + self.assertEqual(response.status_code, 200) + self.assertTrue("error" in response.content) + + def test_configuration_modify_invalid_2(self): + response = self.client.get(reverse('web.api.update_configuration_item'), {'id': "-15", 'value': "XXX"}) + self.assertEqual(response.status_code, 200) + self.assertTrue("error" in response.content) + + def test_configuration_modify(self): + item = create_configuration_item() + new_val = 'new val' + response = self.client.get(reverse('web.api.update_configuration_item'), {'id': item.id, 'value': new_val}) + self.assertEqual(response.status_code, 200) + updated_item = ConfigurationItem.objects.get(id=item.id) + self.assertEqual(new_val, updated_item.value) diff --git a/smash/web/tests/test_view_configuration.py b/smash/web/tests/test_view_configuration.py new file mode 100644 index 0000000000000000000000000000000000000000..4408228562166b9b96553fb6e293d43a965d5e13 --- /dev/null +++ b/smash/web/tests/test_view_configuration.py @@ -0,0 +1,16 @@ +import datetime + +from django.urls import reverse + +from functions import create_subject, create_visit, create_appointment, create_appointment_type +from web.forms import VisitDetailForm, VisitAddForm +from web.models import Visit +from web.views.notifications import get_today_midnight_date +from . import LoggedInTestCase + + +class ConfigurationViewTests(LoggedInTestCase): + def test_visit_details_request(self): + response = self.client.get(reverse('web.views.configuration')) + self.assertEqual(response.status_code, 200) +