diff --git a/opint_framework/apps/example_app/api/serializers/__init__.py b/opint_framework/apps/example_app/api/serializers/__init__.py new file mode 100644 index 0000000..09984a5 --- /dev/null +++ b/opint_framework/apps/example_app/api/serializers/__init__.py @@ -0,0 +1 @@ +from .serializers import SampleSerializer # noqa: F401 \ No newline at end of file diff --git a/opint_framework/apps/example_app/api/serializers/serializers.py b/opint_framework/apps/example_app/api/serializers/serializers.py new file mode 100644 index 0000000..01e9da2 --- /dev/null +++ b/opint_framework/apps/example_app/api/serializers/serializers.py @@ -0,0 +1,8 @@ +from rest_framework import serializers +from opint_framework.apps.example_app.models import Sample + + +class SampleSerializer(serializers.ModelSerializer): + class Meta: + model = Sample + fields = ['id', 'sample_message'] \ No newline at end of file diff --git a/opint_framework/apps/example_app/api/views/views.py b/opint_framework/apps/example_app/api/views/views.py index 25a4fc0..92d9ce9 100644 --- a/opint_framework/apps/example_app/api/views/views.py +++ b/opint_framework/apps/example_app/api/views/views.py @@ -1,10 +1,17 @@ from rest_framework import viewsets from rest_framework.response import Response +from opint_framework.apps.example_app.models import Sample +from opint_framework.apps.example_app.api.serializers import SampleSerializer + + class SampleViewSet(viewsets.ModelViewSet): """ API endpoint that allows SampleModel to be viewed or edited. """ + queryset = Sample.objects.all() + serializer_class = SampleSerializer + def index(request): return Response({"Result":"OK"}) diff --git a/opint_framework/apps/example_app/models/__init__.py b/opint_framework/apps/example_app/models/__init__.py index c9f89fa..3c31f00 100644 --- a/opint_framework/apps/example_app/models/__init__.py +++ b/opint_framework/apps/example_app/models/__init__.py @@ -1 +1 @@ -from .models import SampleModel # noqa: F401 +from .models import Sample # noqa: F401 diff --git a/opint_framework/apps/example_app/models/models.py b/opint_framework/apps/example_app/models/models.py index 734df39..9f35d14 100644 --- a/opint_framework/apps/example_app/models/models.py +++ b/opint_framework/apps/example_app/models/models.py @@ -1,7 +1,7 @@ from django.db import models -class SampleModel(models.Model): +class Sample(models.Model): """ Sample Model. """ diff --git a/opint_framework/apps/example_app/tests/__init__.py b/opint_framework/apps/example_app/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/opint_framework/apps/example_app/tests/test_sample.py b/opint_framework/apps/example_app/tests/test_sample.py new file mode 100644 index 0000000..aa2542f --- /dev/null +++ b/opint_framework/apps/example_app/tests/test_sample.py @@ -0,0 +1,60 @@ +import json +from rest_framework import status +from rest_framework.reverse import reverse +from rest_framework.test import APITestCase + +from opint_framework.apps.example_app.models import Sample + + +class SampleViewSetTestCase(APITestCase): + list_url = reverse('sample-list') + + def test_home_page(self): + home_url = reverse('sample-home') + + res = self.client.get(home_url) + self.assertEquals(res.status_code, status.HTTP_200_OK) + self.assertEquals(json.loads(res.content)['Result'], 'OK') + + def test_list_samples(self): + res = self.client.get(self.list_url, format='json') + self.assertEquals(res.status_code, status.HTTP_200_OK) + + def test_create_samples(self): + data = {'sample_message': 'TEST'} + res = self.client.post(self.list_url, data, format='json') + + self.assertEquals(res.status_code, status.HTTP_201_CREATED) + self.assertEquals(Sample.objects.count(), 1) + self.assertEquals(Sample.objects.first().sample_message, 'TEST') + + def test_list_samples_populated(self): + Sample.objects.create(sample_message='TEST') + + res = self.client.get(self.list_url) + + self.assertEquals(res.status_code, status.HTTP_200_OK) + self.assertEquals(len(res.data['results']), 1) + + def test_sample_detail(self): + sample = Sample.objects.create(sample_message='TEST') + + detail_url = reverse('sample-detail', args=[sample.pk]) + res = self.client.get(detail_url) + + self.assertEquals(res.status_code, status.HTTP_200_OK) + + def test_sample_detail_invalid(self): + detail_url = reverse('sample-detail', args=[9999]) + res = self.client.get(detail_url) + + self.assertEquals(res.status_code, status.HTTP_404_NOT_FOUND) + + def test_delete_sample(self): + sample = Sample.objects.create(sample_message='TEST') + detail_url = reverse('sample-detail', args=[sample.pk]) + + res = self.client.delete(detail_url, format='json') + + self.assertEquals(res.status_code, status.HTTP_204_NO_CONTENT) + self.assertEquals(Sample.objects.count(), 0) diff --git a/opint_framework/apps/example_app/urls.py b/opint_framework/apps/example_app/urls.py index 05968de..fd1a592 100644 --- a/opint_framework/apps/example_app/urls.py +++ b/opint_framework/apps/example_app/urls.py @@ -1,8 +1,15 @@ -from django.urls import path -from .api.views import SampleViewSet +from django.urls import path, include + +from rest_framework import routers + +from opint_framework.apps.example_app.api.views import SampleViewSet + +router = routers.DefaultRouter() +router.register(r'sample', SampleViewSet) urlpatterns = [ # Could be accessed as http://127.0.0.1:8000/example_app/api/ - path("", SampleViewSet.index, name='index'), + path("home", SampleViewSet.index, name='sample-home'), + path('', include(router.urls)), ] diff --git a/opint_framework/core/tests/test_issuecategory.py b/opint_framework/core/tests/test_issuecategory.py index b681c6c..624ac48 100644 --- a/opint_framework/core/tests/test_issuecategory.py +++ b/opint_framework/core/tests/test_issuecategory.py @@ -5,7 +5,7 @@ from opint_framework.core.models import IssueCategory -class ActionViewSetTestCase(APITestCase): +class IssueCategoryViewSetTestCase(APITestCase): list_url = reverse('issuecategory-list') def test_list_issuecategories(self): @@ -36,7 +36,7 @@ def test_issuecategory_detail(self): self.assertEquals(res.status_code, status.HTTP_200_OK) - def test_action_detail_invalid(self): + def test_issuecategory_detail_invalid(self): detail_url = reverse('issuecategory-detail', args=[9999]) res = self.client.get(detail_url) diff --git a/opint_framework/core/tests/test_solution.py b/opint_framework/core/tests/test_solution.py index 0553256..5d0875e 100644 --- a/opint_framework/core/tests/test_solution.py +++ b/opint_framework/core/tests/test_solution.py @@ -5,7 +5,7 @@ from opint_framework.core.models import Action, Solution -class ActionViewSetTestCase(APITestCase): +class SolutionViewSetTestCase(APITestCase): list_url = reverse('solution-list') def test_list_solutions(self): @@ -45,7 +45,7 @@ def test_solution_detail(self): self.assertEquals(res.status_code, status.HTTP_200_OK) - def test_action_detail_invalid(self): + def test_solution_detail_invalid(self): detail_url = reverse('solution-detail', args=[9999]) res = self.client.get(detail_url)