Added Status
This commit is contained in:
@@ -39,6 +39,7 @@ INSTALLED_APPS = [
|
||||
'django.contrib.staticfiles',
|
||||
'animals',
|
||||
'parameter',
|
||||
'status',
|
||||
'rest_framework',
|
||||
'rest_framework_swagger',
|
||||
]
|
||||
|
||||
@@ -24,6 +24,7 @@ urlpatterns = [
|
||||
path('', schema_view),
|
||||
path ('', include ('animals.urls')),
|
||||
path ('', include ('parameter.urls')),
|
||||
path ('', include ('status.urls')),
|
||||
path (
|
||||
'api-auth/',
|
||||
include ('rest_framework.urls', namespace = 'rest_framework')
|
||||
|
||||
0
parameter/__init__.py
Normal file
0
parameter/__init__.py
Normal file
3
parameter/admin.py
Normal file
3
parameter/admin.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
4
parameter/apps.py
Normal file
4
parameter/apps.py
Normal file
@@ -0,0 +1,4 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
class ParameterConfig(AppConfig):
|
||||
name = 'parameter'
|
||||
21
parameter/migrations/0001_initial.py
Normal file
21
parameter/migrations/0001_initial.py
Normal file
@@ -0,0 +1,21 @@
|
||||
# Generated by Django 2.1.4 on 2019-01-01 16:25
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Parameter',
|
||||
fields=[
|
||||
('key', models.CharField(primary_key=True, max_length=20)),
|
||||
('value', models.IntegerField()),
|
||||
],
|
||||
),
|
||||
]
|
||||
0
parameter/migrations/__init__.py
Normal file
0
parameter/migrations/__init__.py
Normal file
15
parameter/models.py
Normal file
15
parameter/models.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from django.db import models
|
||||
|
||||
class Parameter (models.Model):
|
||||
"""
|
||||
Parameter Model
|
||||
Defines the attributes of a config KeyPair
|
||||
"""
|
||||
key = models.CharField (primary_key = True, max_length = 20)
|
||||
value = models.IntegerField (null = False)
|
||||
|
||||
def get_value (self):
|
||||
return self.value
|
||||
|
||||
def __repr__(self):
|
||||
return self.key + ' is added.'
|
||||
8
parameter/serializers.py
Normal file
8
parameter/serializers.py
Normal file
@@ -0,0 +1,8 @@
|
||||
from rest_framework import serializers
|
||||
from .models import Parameter
|
||||
|
||||
|
||||
class ParameterSerializer (serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Parameter
|
||||
fields = ('key', 'value')
|
||||
0
parameter/tests/__init__.py
Normal file
0
parameter/tests/__init__.py
Normal file
21
parameter/tests/test_models.py
Normal file
21
parameter/tests/test_models.py
Normal file
@@ -0,0 +1,21 @@
|
||||
from django.test import TestCase
|
||||
from ..models import Parameter
|
||||
|
||||
|
||||
class ParameterTest (TestCase):
|
||||
""" Test module for Parameter model """
|
||||
def setUp (self):
|
||||
Parameter.objects.create (key = 'TestPar1',
|
||||
value = 123)
|
||||
|
||||
Parameter.objects.create (key = 'TestPar2',
|
||||
value = 567)
|
||||
|
||||
|
||||
def test_parameter (self):
|
||||
par1 = Parameter.objects.get (key = 'TestPar1')
|
||||
par2 = Parameter.objects.get (key = 'TestPar2')
|
||||
self.assertEqual (
|
||||
par1.get_value (), 123)
|
||||
self.assertEqual (
|
||||
par2.get_value (), 567)
|
||||
84
parameter/tests/test_views.py
Normal file
84
parameter/tests/test_views.py
Normal file
@@ -0,0 +1,84 @@
|
||||
import json
|
||||
from rest_framework import status
|
||||
from django.test import TestCase, Client
|
||||
from django.urls import reverse
|
||||
from ..models import Parameter
|
||||
from ..serializers import ParameterSerializer
|
||||
|
||||
|
||||
# initialize the APIClient app
|
||||
client = Client ()
|
||||
|
||||
|
||||
class GetAllParmetersTest (TestCase):
|
||||
""" Test module for GET all Parameter API """
|
||||
|
||||
def setUp (self):
|
||||
Parameter.objects.create ( key = 'TestParameter1',
|
||||
value = 123)
|
||||
|
||||
Parameter.objects.create ( key = 'TestParameter2',
|
||||
value = 456)
|
||||
|
||||
def test_get_all_parameter (self):
|
||||
""" get API response """
|
||||
response = client.get (reverse ('get_post_parameter'))
|
||||
# get data from db
|
||||
parameter = Parameter.objects.all ()
|
||||
serializer = ParameterSerializer (parameter, many=True)
|
||||
self.assertEqual (response.data, serializer.data)
|
||||
self.assertEqual (response.status_code, status.HTTP_200_OK)
|
||||
|
||||
|
||||
class GetSingleParameterTest (TestCase):
|
||||
""" Test module for GET single ParameterTest API """
|
||||
|
||||
def setUp(self):
|
||||
self.parameter1 = Parameter.objects.create ( key = 'TestParameter1',
|
||||
value = 123)
|
||||
|
||||
self.parameter2 = Parameter.objects.create ( key = 'TestParameter2',
|
||||
value = 456)
|
||||
|
||||
def test_get_valid_single_parameter (self):
|
||||
""" get API response """
|
||||
# get data from db
|
||||
parameters = Parameter.objects.all ()
|
||||
response = client.get (
|
||||
reverse ('get_delete_update_parameter', kwargs = {'key': self.parameter1.key}))
|
||||
parameter = Parameter.objects.get (key = self.parameter1.key)
|
||||
serializer = ParameterSerializer (parameter)
|
||||
self.assertEqual (response.data, serializer.data)
|
||||
self.assertEqual (response.status_code, status.HTTP_200_OK)
|
||||
|
||||
def test_get_invalid_single_parameter (self):
|
||||
response = client.get (
|
||||
reverse ('get_delete_update_parameter', kwargs = {'key': 'BadParam'}))
|
||||
self.assertEqual (response.status_code, status.HTTP_404_NOT_FOUND)
|
||||
|
||||
class CreateNewParameterTest (TestCase):
|
||||
""" Test module for inserting a new parameter """
|
||||
def setUp (self):
|
||||
self.valid_payload = { 'key' : 'Parameter1',
|
||||
'value' : 123}
|
||||
|
||||
#FixMe
|
||||
self.invalid_payload = { 'key' : 'Parameter2',
|
||||
'value' : 0}
|
||||
|
||||
|
||||
def test_create_valid_parameter (self):
|
||||
response = client.post (
|
||||
reverse ('get_post_parameter'),
|
||||
data = json.dumps (self.valid_payload),
|
||||
content_type = 'application/json'
|
||||
)
|
||||
self.assertEqual (response.status_code, status.HTTP_201_CREATED)
|
||||
|
||||
def test_create_invalid_parameter (self):
|
||||
response = client.post (
|
||||
reverse ('get_post_parameter'),
|
||||
data = json.dumps (self.invalid_payload),
|
||||
content_type = 'application/json'
|
||||
)
|
||||
self.assertEqual (response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||
17
parameter/urls.py
Normal file
17
parameter/urls.py
Normal file
@@ -0,0 +1,17 @@
|
||||
#from django.conf.urls import url,path
|
||||
from django.urls import path
|
||||
from . import views
|
||||
|
||||
|
||||
urlpatterns = [
|
||||
path (
|
||||
'api/parameter/<key>',
|
||||
views.get_delete_update_parameter,
|
||||
name = 'get_delete_update_parameter'
|
||||
),
|
||||
path (
|
||||
'api/parameter/',
|
||||
views.get_post_parameter,
|
||||
name = 'get_post_parameter'
|
||||
)
|
||||
]
|
||||
49
parameter/views.py
Normal file
49
parameter/views.py
Normal file
@@ -0,0 +1,49 @@
|
||||
from django.shortcuts import render
|
||||
from rest_framework.decorators import api_view
|
||||
from rest_framework.response import Response
|
||||
from rest_framework import status
|
||||
from .models import Parameter
|
||||
from .serializers import ParameterSerializer
|
||||
|
||||
|
||||
#@api_view(['GET', 'DELETE', 'PUT'])
|
||||
@api_view(['GET', 'PUT'])
|
||||
def get_delete_update_parameter (request, key):
|
||||
try:
|
||||
parameter = Parameter.objects.get (key = key)
|
||||
except Parameter.DoesNotExist:
|
||||
return Response (status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
# get value of a single Parameter
|
||||
if request.method == 'GET':
|
||||
serializer = ParameterSerializer (parameter)
|
||||
return Response (serializer.data)
|
||||
# delete a single Parameter
|
||||
elif request.method == 'DELETE':
|
||||
return Response ({})
|
||||
# update details of a single Parameter
|
||||
elif request.method == 'PUT':
|
||||
serializer = ParameterSerializer (parameter, data = request.data)
|
||||
if serializer.is_valid ():
|
||||
serializer.save ()
|
||||
return Response(serializer.data, status=status.HTTP_204_NO_CONTENT)
|
||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
@api_view(['GET', 'POST'])
|
||||
def get_post_parameter (request):
|
||||
# get all Parameter
|
||||
if request.method == 'GET':
|
||||
parameter = Parameter.objects.all ()
|
||||
serializer = ParameterSerializer (parameter, many=True)
|
||||
return Response (serializer.data)
|
||||
# insert a new record for a Parameter
|
||||
elif request.method == 'POST':
|
||||
data = { 'key': request.data.get ('key'),
|
||||
'value': int (request.data.get ('value'))
|
||||
}
|
||||
serializer = ParameterSerializer (data = data)
|
||||
if serializer.is_valid () and data ['key'] > '' :
|
||||
serializer.save ()
|
||||
return Response (serializer.data, status=status.HTTP_201_CREATED)
|
||||
return Response( serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
Reference in New Issue
Block a user