From 6a6347fce4e890a847c559224977f74794bbb2d0 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Tue, 4 Apr 2017 13:59:09 +0200 Subject: [PATCH] unit test for configuration api --- smash/web/api_urls.py | 3 +- smash/web/api_views/configuration.py | 10 +++--- smash/web/tests/functions.py | 11 ++++++- .../web/tests/test_api_configuration_item.py | 33 +++++++++++++++++++ smash/web/tests/test_view_configuration.py | 16 +++++++++ 5 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 smash/web/tests/test_api_configuration_item.py create mode 100644 smash/web/tests/test_view_configuration.py diff --git a/smash/web/api_urls.py b/smash/web/api_urls.py index 75569046..e6f8f746 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 25d52962..305cbef0 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 2088fa6a..fea131ec 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 00000000..a550ff27 --- /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 00000000..44082285 --- /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) + -- GitLab