From edfe3d5025ff1ddaade771d1fa3f784fee24ed77 Mon Sep 17 00:00:00 2001 From: Abdurrahman Date: Mon, 20 Apr 2020 20:54:16 +0700 Subject: [PATCH 1/8] [REFACTOR] minor refactoring for consistency --- informasi_fasilitas/urls.py | 8 ++++---- informasi_fasilitas/views.py | 21 +++++++++++---------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/informasi_fasilitas/urls.py b/informasi_fasilitas/urls.py index 1d83264..5439a2d 100644 --- a/informasi_fasilitas/urls.py +++ b/informasi_fasilitas/urls.py @@ -4,9 +4,9 @@ from . import views urlpatterns = [ path('lokasi/list/', views.lokasi_list,name='lokasi-list'), - path('lokasi/detail/', views.lokasi_details,name='lokasi-details'), + path('lokasi/detail//', views.lokasi_details,name='lokasi-details'), path('lokasi/add/', views.add_lokasi,name='add-lokasi'), - path('lokasi/add-fasilitas/', views.add_fasilitas, name='add-fasilitas'), - path('lokasi/list-fasilitas/', views.list_fasilitas, name='list-fasilitas'), - path('lokasi/detail-fasilitas//', views.detail_fasilitas, name='detail-fasilitas'), + path('lokasi/add-fasilitas//', views.add_fasilitas, name='add-fasilitas'), + path('lokasi/list-fasilitas//', views.list_fasilitas, name='list-fasilitas'), + path('lokasi/detail-fasilitas///', views.detail_fasilitas, name='detail-fasilitas'), ] \ No newline at end of file diff --git a/informasi_fasilitas/views.py b/informasi_fasilitas/views.py index 62ff37f..1a19eb4 100644 --- a/informasi_fasilitas/views.py +++ b/informasi_fasilitas/views.py @@ -5,7 +5,8 @@ from django.contrib.auth.models import User from rest_framework import viewsets from rest_framework.decorators import api_view, permission_classes, authentication_classes -from rest_framework.authentication import TokenAuthentication +from rest_framework.authentication import TokenAuthentication +from rest_framework.permissions import IsAuthenticated from .serializers import LokasiSerializer from .models import Lokasi, Fasilitas, Komentar @@ -24,7 +25,7 @@ def lokasi_list(request): if request.method == 'GET': lokasi_list = Lokasi.objects.all() serializer = LokasiSerializer(lokasi_list, many=True) - return JsonResponse(serializer.data, safe=False) + return JsonResponse(serializer.data, safe=False, status = 200) else: return JsonResponse({'response' : request_error_message("get")}, status = 400) @@ -36,7 +37,7 @@ def lokasi_details(request,name): if request.method == 'GET': lokasi = Lokasi.objects.get(name = name) serializer = LokasiSerializer(lokasi) - return JsonResponse(serializer.data, safe=False) + return JsonResponse(serializer.data, safe=False, status = 200) else: return JsonResponse({'response' : request_error_message("get")}, status = 400) except KeyError as e: @@ -45,8 +46,8 @@ def lokasi_details(request,name): return JsonResponse({'response':'lokasi not found'}, status = 404) @api_view(['POST']) -@authentication_classes([]) -@permission_classes([]) +@authentication_classes([TokenAuthentication]) +@permission_classes([IsAuthenticated]) def add_lokasi(request): try: if request.method == 'POST': @@ -64,7 +65,7 @@ def add_lokasi(request): return JsonResponse({'response': missing_key_message(str(e))}, status = 500) @api_view(['GET']) -@authentication_classes([TokenAuthentication,]) +@authentication_classes([]) @permission_classes([]) def list_fasilitas(request, nama_lokasi): try: @@ -86,15 +87,15 @@ def list_fasilitas(request, nama_lokasi): fasilitas_details["tag"] = fasilitas.tag fasilitas_details["image"] = str(fasilitas.image) fasilitas_details["is_verified"] = fasilitas.is_verified - return JsonResponse(return_json, status = 201) + return JsonResponse(return_json, status = 200) except KeyError as e: return JsonResponse({'response': missing_key_message(str(e))}, status = 500) except Exception as e: return JsonResponse({'response': str(e)}) @api_view(['POST']) -@authentication_classes([TokenAuthentication,]) -@permission_classes([]) +@authentication_classes([TokenAuthentication]) +@permission_classes([IsAuthenticated]) def add_fasilitas(request, nama_lokasi): try: if request.method == 'POST': @@ -125,7 +126,7 @@ def detail_fasilitas(request, nama_lokasi, id): user = fasilitas.user return_json = {"nama_lokasi": lokasi.name, "deskripsi":fasilitas.deskripsi, "creator":user.last_name, "date_time":fasilitas.date_time, "like":fasilitas.like, "dislike":fasilitas.dislike, "rating":fasilitas.rating, "tag":fasilitas.tag, "image":str(fasilitas.image), "is_verified":fasilitas.is_verified} - return JsonResponse(return_json, status = 201) + return JsonResponse(return_json, status = 200) else: return JsonResponse({'response' : request_error_message("get")}, status = 400) except KeyError as e: -- GitLab From c78294ee27baa824b868ddd039a445b83c9df6d5 Mon Sep 17 00:00:00 2001 From: Muhammad Abdurrahman Date: Tue, 21 Apr 2020 01:03:36 +0700 Subject: [PATCH 2/8] [GREEN] add tests for informasi_fasilitas views for lokasi --- informasi_fasilitas/tests.py | 109 +++++++++++++++++++++++++++++++++-- 1 file changed, 103 insertions(+), 6 deletions(-) diff --git a/informasi_fasilitas/tests.py b/informasi_fasilitas/tests.py index be8ad0b..1e8b4b7 100644 --- a/informasi_fasilitas/tests.py +++ b/informasi_fasilitas/tests.py @@ -1,19 +1,23 @@ -from django.test import TestCase +from django.test import TestCase, Client from django.db.utils import IntegrityError from .models import Lokasi, Fasilitas, Komentar, KURSI_RODA, RUNNING_TEXT +from .serializers import LokasiSerializer from registrasi.models import BisaGoUser from django.contrib.auth.models import User +from django.urls import reverse, path, include +import json import tempfile # Create your tests here. -class InformasiFasilitasTest(TestCase): +class InformasiFasilitasModelTest(TestCase): not_null_constraint_failed_message = 'NOT NULL constraint failed' def test_models_lokasi_not_created(self): with self.assertRaises(IntegrityError) as cm: obj = Lokasi(name=None) obj.save() - self.assertTrue(str(cm.exception).startswith(self.not_null_constraint_failed_message)) + self.assertTrue(str(cm.exception).startswith( + self.not_null_constraint_failed_message)) def test_models_create_new_lokasi(self): image = tempfile.NamedTemporaryFile(suffix=".jpg").name @@ -32,7 +36,8 @@ class InformasiFasilitasTest(TestCase): with self.assertRaises(IntegrityError) as cm: obj = Fasilitas(lokasi=None) obj.save() - self.assertTrue(str(cm.exception).startswith(self.not_null_constraint_failed_message)) + self.assertTrue(str(cm.exception).startswith( + self.not_null_constraint_failed_message)) def test_models_create_new_fasilitas(self): image = tempfile.NamedTemporaryFile(suffix=".jpg").name @@ -69,7 +74,8 @@ class InformasiFasilitasTest(TestCase): with self.assertRaises(IntegrityError) as cm: obj = Komentar(fasilitas=None) obj.save(); - self.assertTrue(str(cm.exception).startswith(self.not_null_constraint_failed_message)) + self.assertTrue(str(cm.exception).startswith( + self.not_null_constraint_failed_message)) def test_models_create_new_komentar(self): image = tempfile.NamedTemporaryFile(suffix=".jpg").name @@ -118,4 +124,95 @@ def test_view_lokasi(self): no_telp='081212123131', image=image ) - lokasi.save() \ No newline at end of file + lokasi.save() + +class InformasiFasilitasViewTest(TestCase): + urlpatterns = [ + path('informasi-fasilitas/', include('informasi_fasilitas.urls')), + ] + + def test_LokasiSerializer_valid(self): + serializer = LokasiSerializer(data = { + 'name' : 'Mall', + 'latitude' : 0.0, + 'longitude' : 0.0, + 'alamat' : 'Jl. Raya Bogor no.1, Jakarta', + 'no_telp' : '081212123131' + }) + self.assertTrue(serializer.is_valid) + + def test_can_get_lokasi_list(self): + response = Client().get(reverse('lokasi-list')) + self.assertEqual(response.status_code, 200) + + def test_cannot_post_lokasi_list(self): + response = Client().post(reverse('lokasi-list')) + self.assertEqual(response.status_code, 405) + + def test_can_get_lokasi_details(self): + image = tempfile.NamedTemporaryFile(suffix=".jpg").name + lokasi=Lokasi( + name='Mall', + latitude=0.0, + longitude=0.0, + alamat='Jl. Raya Bogor no.1, Jakarta', + no_telp='081212123131', + image=image + ) + lokasi.save() + response = Client().get(reverse('lokasi-details', kwargs={'name':'Mall'})) + self.assertEqual(response.status_code, 200) + + def test_cannot_post_lokasi_details(self): + image = tempfile.NamedTemporaryFile(suffix=".jpg").name + lokasi=Lokasi( + name='Mall', + latitude=0.0, + longitude=0.0, + alamat='Jl. Raya Bogor no.1, Jakarta', + no_telp='081212123131', + image=image + ) + lokasi.save() + response = Client().post(reverse('lokasi-details', kwargs={'name':'Mall'})) + self.assertEqual(response.status_code, 405) + + def test_can_post_add_lokasi(self): + email='user@gmail.com' + password='hahagotim' + Client().post('/api/register/', + {'name':'name', + 'email':email, + 'phone_number':000000000, + 'password':password}) + token_response = Client().post('/api-token-auth/', + {'username' : email, 'password' : password}) + content = json.loads(token_response.content.decode('utf-8')) + token = content['token'] + client = Client(HTTP_AUTHORIZATION='token '+token) + + response = client.post(reverse('add-lokasi'), + {'name' : 'Mall', + 'latitude' : 0.0, + 'longitude' : 0.0, + 'alamat' : 'Jl. Raya Bogor no.1, Jakarta', + 'no_telp' : '081212123131', + 'image' : None}) + self.assertEqual(response.status_code, 201) + + def test_cannot_get_add_lokasi(self): + email='user@gmail.com' + password='hahagotim' + Client().post('/api/register/', + {'name':'name', + 'email':email, + 'phone_number':000000000, + 'password':password}) + token_response = Client().post('/api-token-auth/', + {'username' : email, 'password' : password}) + content = json.loads(token_response.content.decode('utf-8')) + token = content['token'] + client = Client(HTTP_AUTHORIZATION='token '+token) + + response = client.get(reverse('add-lokasi')) + self.assertEqual(response.status_code, 405) -- GitLab From f2b280b5faaf5dd7ab7d37ec2bdfc1e86c942ea3 Mon Sep 17 00:00:00 2001 From: Muhammad Abdurrahman Date: Tue, 21 Apr 2020 01:21:51 +0700 Subject: [PATCH 3/8] [REFACTOR] serialize post request add-lokasi --- informasi_fasilitas/tests.py | 3 +-- informasi_fasilitas/views.py | 16 ++++++++-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/informasi_fasilitas/tests.py b/informasi_fasilitas/tests.py index 1e8b4b7..748d602 100644 --- a/informasi_fasilitas/tests.py +++ b/informasi_fasilitas/tests.py @@ -196,8 +196,7 @@ class InformasiFasilitasViewTest(TestCase): 'latitude' : 0.0, 'longitude' : 0.0, 'alamat' : 'Jl. Raya Bogor no.1, Jakarta', - 'no_telp' : '081212123131', - 'image' : None}) + 'no_telp' : '081212123131'}) self.assertEqual(response.status_code, 201) def test_cannot_get_add_lokasi(self): diff --git a/informasi_fasilitas/views.py b/informasi_fasilitas/views.py index 1a19eb4..5198b4d 100644 --- a/informasi_fasilitas/views.py +++ b/informasi_fasilitas/views.py @@ -51,14 +51,14 @@ def lokasi_details(request,name): def add_lokasi(request): try: if request.method == 'POST': - name = request.POST['name'] - latitude = request.POST['latitude'] - longitude = request.POST['longitude'] - alamat = request.POST['alamat'] - no_telp = request.POST['no_telp'] - image = request.POST['image'] - Lokasi.objects.create(name=name, latitude=latitude, longitude=longitude, alamat=alamat, no_telp=no_telp, image=image) - return JsonResponse({'response' : 'Location added', 'name':name}, status = 201) + + data = request.POST + serializer = LokasiSerializer(data=data) + if serializer.is_valid(): + serializer.save() + return JsonResponse(serializer.data, status=201) + else: + return JsonResponse(serializer.errors, status=400) else: return JsonResponse({'response' : request_error_message("post")}, status = 400) except KeyError as e: -- GitLab From 405f058207732ca112fdfb9482de5fdfed4002df Mon Sep 17 00:00:00 2001 From: Muhammad Abdurrahman Date: Tue, 21 Apr 2020 01:56:45 +0700 Subject: [PATCH 4/8] [GREEN] add tests for informasi_fasilitas views for fasilitas --- informasi_fasilitas/tests.py | 156 +++++++++++++++++++++++++++++++++++ informasi_fasilitas/views.py | 4 +- 2 files changed, 157 insertions(+), 3 deletions(-) diff --git a/informasi_fasilitas/tests.py b/informasi_fasilitas/tests.py index 748d602..0bfbc9d 100644 --- a/informasi_fasilitas/tests.py +++ b/informasi_fasilitas/tests.py @@ -215,3 +215,159 @@ class InformasiFasilitasViewTest(TestCase): response = client.get(reverse('add-lokasi')) self.assertEqual(response.status_code, 405) + + def test_can_get_list_fasilitas(self): + image = tempfile.NamedTemporaryFile(suffix=".jpg").name + lokasi=Lokasi( + name='Mall', + latitude=0.0, + longitude=0.0, + alamat='Jl. Raya Bogor no.1, Jakarta', + no_telp='081212123131', + image=image + ) + lokasi.save() + response = Client().get(reverse('list-fasilitas', kwargs={'nama_lokasi':'Mall'})) + self.assertEqual(response.status_code, 200) + + def test_cannot_post_list_fasilitas(self): + image = tempfile.NamedTemporaryFile(suffix=".jpg").name + lokasi=Lokasi( + name='Mall', + latitude=0.0, + longitude=0.0, + alamat='Jl. Raya Bogor no.1, Jakarta', + no_telp='081212123131', + image=image + ) + lokasi.save() + response = Client().post(reverse('list-fasilitas', kwargs={'nama_lokasi':'Mall'})) + self.assertEqual(response.status_code, 405) + + def test_can_get_detail_fasilitas(self): + image = tempfile.NamedTemporaryFile(suffix=".jpg").name + user=User( + username='user@gmail.com', + last_name='name', + email='user@gmail.com', + password='hahagotim' + ) + user.save() + lokasi=Lokasi( + name='Mall', + latitude=0.0, + longitude=0.0, + alamat='Jl. Raya Bogor no.1, Jakarta', + no_telp='081212123131', + image=image + ) + lokasi.save() + fasilitas=Fasilitas( + lokasi=lokasi, + user=user, + deskripsi="penjelasan panjang", + like=0, + dislike=0, + rating=5, + tag={KURSI_RODA, RUNNING_TEXT}, + image=image + ) + fasilitas.save() + id = fasilitas.id + response = Client().get(reverse('detail-fasilitas', kwargs={'nama_lokasi':'Mall', 'id':id})) + self.assertEqual(response.status_code, 200) + + def test_cannot_post_lokasi_details(self): + image = tempfile.NamedTemporaryFile(suffix=".jpg").name + user=User( + username='user@gmail.com', + last_name='name', + email='user@gmail.com', + password='hahagotim' + ) + user.save() + lokasi=Lokasi( + name='Mall', + latitude=0.0, + longitude=0.0, + alamat='Jl. Raya Bogor no.1, Jakarta', + no_telp='081212123131', + image=image + ) + lokasi.save() + fasilitas=Fasilitas( + lokasi=lokasi, + user=user, + deskripsi="penjelasan panjang", + like=0, + dislike=0, + rating=5, + tag={KURSI_RODA, RUNNING_TEXT}, + image=image + ) + fasilitas.save() + id = fasilitas.id + response = Client().post(reverse('detail-fasilitas', kwargs={'nama_lokasi':'Mall', 'id':id})) + self.assertEqual(response.status_code, 405) + + + #======= + + + def test_can_post_add_fasilitas(self): + email='user@gmail.com' + password='hahagotim' + Client().post('/api/register/', + {'name':'name', + 'email':email, + 'phone_number':000000000, + 'password':password}) + token_response = Client().post('/api-token-auth/', + {'username' : email, 'password' : password}) + content = json.loads(token_response.content.decode('utf-8')) + token = content['token'] + client = Client(HTTP_AUTHORIZATION='token '+token) + + image = tempfile.NamedTemporaryFile(suffix=".jpg").name + lokasi=Lokasi( + name='Mall', + latitude=0.0, + longitude=0.0, + alamat='Jl. Raya Bogor no.1, Jakarta', + no_telp='081212123131', + image=image + ) + lokasi.save() + + response = client.post(reverse('add-fasilitas', kwargs={'nama_lokasi':'Mall'}), + {'deskripsi' : 'penjelasan fasilitas', + 'rating' : 2}) + self.assertEqual(response.status_code, 201) + + def test_cannot_get_add_fasilitas(self): + email='user@gmail.com' + password='hahagotim' + Client().post('/api/register/', + {'name':'name', + 'email':email, + 'phone_number':000000000, + 'password':password}) + token_response = Client().post('/api-token-auth/', + {'username' : email, 'password' : password}) + content = json.loads(token_response.content.decode('utf-8')) + token = content['token'] + client = Client(HTTP_AUTHORIZATION='token '+token) + + image = tempfile.NamedTemporaryFile(suffix=".jpg").name + lokasi=Lokasi( + name='Mall', + latitude=0.0, + longitude=0.0, + alamat='Jl. Raya Bogor no.1, Jakarta', + no_telp='081212123131', + image=image + ) + lokasi.save() + + response = client.get(reverse('add-fasilitas', kwargs={'nama_lokasi':'Mall'})) + self.assertEqual(response.status_code, 405) \ No newline at end of file diff --git a/informasi_fasilitas/views.py b/informasi_fasilitas/views.py index 5198b4d..7777cd5 100644 --- a/informasi_fasilitas/views.py +++ b/informasi_fasilitas/views.py @@ -102,11 +102,9 @@ def add_fasilitas(request, nama_lokasi): lokasi = Lokasi.objects.get(name=nama_lokasi) user = User.objects.get(email=str(request.user)) deskripsi = request.POST['deskripsi'] - image = request.POST['image'] fasilitas = Fasilitas.objects.create(lokasi=lokasi, user=user, - deskripsi=deskripsi, - image=image) + deskripsi=deskripsi) return JsonResponse({'response' : 'fasilitas added', 'id':fasilitas.id}, status = 201) else: return JsonResponse({'response' : request_error_message("post")}, status = 400) -- GitLab From 68fa019ddca125ade3d6b5e933b1de61bfaa0b47 Mon Sep 17 00:00:00 2001 From: Muhammad Abdurrahman Date: Tue, 21 Apr 2020 02:31:34 +0700 Subject: [PATCH 5/8] [GREEN] add not found tests for informasi_fasilitas views and slight refactor --- informasi_fasilitas/tests.py | 57 ++++++++++++++++++++++++++++++++---- informasi_fasilitas/views.py | 2 +- 2 files changed, 52 insertions(+), 7 deletions(-) diff --git a/informasi_fasilitas/tests.py b/informasi_fasilitas/tests.py index 0bfbc9d..8e9b4bf 100644 --- a/informasi_fasilitas/tests.py +++ b/informasi_fasilitas/tests.py @@ -133,7 +133,7 @@ class InformasiFasilitasViewTest(TestCase): def test_LokasiSerializer_valid(self): serializer = LokasiSerializer(data = { - 'name' : 'Mall', + 'name' : 'Mall1', 'latitude' : 0.0, 'longitude' : 0.0, 'alamat' : 'Jl. Raya Bogor no.1, Jakarta', @@ -177,6 +177,10 @@ class InformasiFasilitasViewTest(TestCase): response = Client().post(reverse('lokasi-details', kwargs={'name':'Mall'})) self.assertEqual(response.status_code, 405) + def test_get_lokasi_details_not_found(self): + response = Client().get(reverse('lokasi-details', kwargs={'name':'Mall'})) + self.assertEqual(response.status_code, 404) + def test_can_post_add_lokasi(self): email='user@gmail.com' password='hahagotim' @@ -218,6 +222,13 @@ class InformasiFasilitasViewTest(TestCase): def test_can_get_list_fasilitas(self): image = tempfile.NamedTemporaryFile(suffix=".jpg").name + user=User( + username='user@gmail.com', + last_name='name', + email='user@gmail.com', + password='hahagotim' + ) + user.save() lokasi=Lokasi( name='Mall', latitude=0.0, @@ -227,6 +238,17 @@ class InformasiFasilitasViewTest(TestCase): image=image ) lokasi.save() + fasilitas=Fasilitas( + lokasi=lokasi, + user=user, + deskripsi="penjelasan panjang", + like=0, + dislike=0, + rating=5, + tag={KURSI_RODA, RUNNING_TEXT}, + image=image + ) + fasilitas.save() response = Client().get(reverse('list-fasilitas', kwargs={'nama_lokasi':'Mall'})) self.assertEqual(response.status_code, 200) @@ -244,6 +266,10 @@ class InformasiFasilitasViewTest(TestCase): response = Client().post(reverse('list-fasilitas', kwargs={'nama_lokasi':'Mall'})) self.assertEqual(response.status_code, 405) + def test_get_list_fasilitas_not_found(self): + response = Client().get(reverse('list-fasilitas', kwargs={'nama_lokasi':'Mall'})) + self.assertEqual(response.status_code, 404) + def test_can_get_detail_fasilitas(self): image = tempfile.NamedTemporaryFile(suffix=".jpg").name user=User( @@ -277,7 +303,7 @@ class InformasiFasilitasViewTest(TestCase): response = Client().get(reverse('detail-fasilitas', kwargs={'nama_lokasi':'Mall', 'id':id})) self.assertEqual(response.status_code, 200) - def test_cannot_post_lokasi_details(self): + def test_cannot_post_detail_fasilitas(self): image = tempfile.NamedTemporaryFile(suffix=".jpg").name user=User( username='user@gmail.com', @@ -310,9 +336,9 @@ class InformasiFasilitasViewTest(TestCase): response = Client().post(reverse('detail-fasilitas', kwargs={'nama_lokasi':'Mall', 'id':id})) self.assertEqual(response.status_code, 405) - - #======= - + def test_get_detail_fasilitas_not_found(self): + response = Client().get(reverse('detail-fasilitas', kwargs={'nama_lokasi':'Mall', 'id':0})) + self.assertEqual(response.status_code, 404) def test_can_post_add_fasilitas(self): email='user@gmail.com' @@ -370,4 +396,23 @@ class InformasiFasilitasViewTest(TestCase): lokasi.save() response = client.get(reverse('add-fasilitas', kwargs={'nama_lokasi':'Mall'})) - self.assertEqual(response.status_code, 405) \ No newline at end of file + self.assertEqual(response.status_code, 405) + + def test_post_add_fasilitas_not_found(self): + email='user@gmail.com' + password='hahagotim' + Client().post('/api/register/', + {'name':'name', + 'email':email, + 'phone_number':000000000, + 'password':password}) + token_response = Client().post('/api-token-auth/', + {'username' : email, 'password' : password}) + content = json.loads(token_response.content.decode('utf-8')) + token = content['token'] + client = Client(HTTP_AUTHORIZATION='token '+token) + + response = client.post(reverse('add-fasilitas', kwargs={'nama_lokasi':'Mall'}), + {'deskripsi' : 'penjelasan fasilitas', + 'rating' : 2}) + self.assertEqual(response.status_code, 404) \ No newline at end of file diff --git a/informasi_fasilitas/views.py b/informasi_fasilitas/views.py index 7777cd5..e9862e5 100644 --- a/informasi_fasilitas/views.py +++ b/informasi_fasilitas/views.py @@ -91,7 +91,7 @@ def list_fasilitas(request, nama_lokasi): except KeyError as e: return JsonResponse({'response': missing_key_message(str(e))}, status = 500) except Exception as e: - return JsonResponse({'response': str(e)}) + return JsonResponse({'response': str(e)}, status = 404) @api_view(['POST']) @authentication_classes([TokenAuthentication]) -- GitLab From b022cc6e38a8a4d0d33e1fd7f1f78c23eb1c6693 Mon Sep 17 00:00:00 2001 From: Muhammad Abdurrahman Date: Tue, 21 Apr 2020 02:45:41 +0700 Subject: [PATCH 6/8] [REFACTOR] slight refactor on Facsilitas handler for tag and rating --- README.md | 4 ++++ informasi_fasilitas/tests.py | 3 ++- informasi_fasilitas/views.py | 6 +++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f3d57dc..7ecd926 100644 --- a/README.md +++ b/README.md @@ -109,9 +109,13 @@ Make `POST` request to API endpoint `/informasi-lokasi/lokasi/add-fasilitas/*nam * TEMPAT_PARKIR_DISABILITAS = 'PK' * RUNNING_TEXT = 'RT' * TEMPAT_PARKIR_BIASA = 'TB' + + * Put as a String separated by space + * example: "KR LF TD"
* `deskripsi` : Facility description. +* `rating` : rating for the Facility, an integer 1-5.
Make sure you have token it your request header. Add this to your request header. `Authorization` with value `token *your_token_from_request*` diff --git a/informasi_fasilitas/tests.py b/informasi_fasilitas/tests.py index 8e9b4bf..85855ba 100644 --- a/informasi_fasilitas/tests.py +++ b/informasi_fasilitas/tests.py @@ -367,7 +367,8 @@ class InformasiFasilitasViewTest(TestCase): response = client.post(reverse('add-fasilitas', kwargs={'nama_lokasi':'Mall'}), {'deskripsi' : 'penjelasan fasilitas', - 'rating' : 2}) + 'rating' : 2, + 'tag' : 'KR RT'}) self.assertEqual(response.status_code, 201) def test_cannot_get_add_fasilitas(self): diff --git a/informasi_fasilitas/views.py b/informasi_fasilitas/views.py index e9862e5..68b7566 100644 --- a/informasi_fasilitas/views.py +++ b/informasi_fasilitas/views.py @@ -102,9 +102,13 @@ def add_fasilitas(request, nama_lokasi): lokasi = Lokasi.objects.get(name=nama_lokasi) user = User.objects.get(email=str(request.user)) deskripsi = request.POST['deskripsi'] + rating = request.POST['rating'] + tag = request.POST['tag'].split() fasilitas = Fasilitas.objects.create(lokasi=lokasi, user=user, - deskripsi=deskripsi) + deskripsi=deskripsi, + rating=rating, + tag=tag) return JsonResponse({'response' : 'fasilitas added', 'id':fasilitas.id}, status = 201) else: return JsonResponse({'response' : request_error_message("post")}, status = 400) -- GitLab From 61e3baad97265168fd49bb4f2bedd4d4c5030771 Mon Sep 17 00:00:00 2001 From: Bimo Iman Smartadi Date: Tue, 21 Apr 2020 06:42:18 +0700 Subject: [PATCH 7/8] [CHORES] Added closing / in several routing --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 7ecd926..c5023c2 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ Make `POST` request to API endpoint `/informasi-lokasi/lokasi/add/` with the fol * `image` : string of sourc image `.jpg` ### 5. To view a location list: -Make `GET` request to API endpoint `/informasi-lokasi/lokasi/list` with the key `name`.
+Make `GET` request to API endpoint `/informasi-lokasi/lokasi/list/`.
It will return a json list of locations with key: * `id` : id of location * `name` : location name @@ -83,7 +83,7 @@ It will return a json list of locations with key: * `image` : string of sourc image `.jpg` ### 6. To view a location details: -Make `GET` request to API endpoint `/informasi-lokasi/lokasi/detail/*nama_lokasi*` with the key `name`.
+Make `GET` request to API endpoint `/informasi-lokasi/lokasi/detail/*nama_lokasi*/`.
It will return a json with key: * `name` : location name * `altitude` : location altitude, a float. @@ -93,7 +93,7 @@ It will return a json with key: * `image` : string of source image `.jpg` ### 7. To register a facility: -Make `POST` request to API endpoint `/informasi-lokasi/lokasi/add-fasilitas/*nama-lokasi*` with the following key: +Make `POST` request to API endpoint `/informasi-lokasi/lokasi/add-fasilitas/*nama-lokasi*/` with the following key: * `tag` : Fasility Tag * The options are : * KURSI_RODA = 'KR' @@ -111,7 +111,7 @@ Make `POST` request to API endpoint `/informasi-lokasi/lokasi/add-fasilitas/*nam * TEMPAT_PARKIR_BIASA = 'TB' * Put as a String separated by space - * example: "KR LF TD" + * example: `KR LF TD`
* `deskripsi` : Facility description. @@ -121,7 +121,7 @@ Make `POST` request to API endpoint `/informasi-lokasi/lokasi/add-fasilitas/*nam Add this to your request header. `Authorization` with value `token *your_token_from_request*` ### 8. To see a facility list: -Make `GET` request to API endpoint `/informasi-lokasi/lokasi/list-fasilitas/*nama-lokasi*` with `name` key.
+Make `GET` request to API endpoint `/informasi-lokasi/lokasi/list-fasilitas/*nama-lokasi*/`.
It will return a json with the following key: * `id`: id of the facility * `nama_lokasi`: location name of the facility @@ -137,7 +137,7 @@ It will return a json with the following key: ### 9. To see a facility details: -Make `GET` request to API endpoint `/informasi-lokasi/lokasi/detail-fasilitas/*nama-lokasi*/id-fasilitas` with `name` key.
+Make `GET` request to API endpoint `/informasi-lokasi/lokasi/detail-fasilitas/*nama-lokasi*/*id-fasilitas*/`.
It will return a json with the following key: * `nama_lokasi`: location name of the facility * `deskripsi`: the description -- GitLab From 7f4030d13875df28287bd0d4cf6934862391130f Mon Sep 17 00:00:00 2001 From: Bimo Iman Smartadi Date: Tue, 21 Apr 2020 06:43:09 +0700 Subject: [PATCH 8/8] [REFACTOR] Added default image value --- informasi_fasilitas/views.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/informasi_fasilitas/views.py b/informasi_fasilitas/views.py index 68b7566..55b47f2 100644 --- a/informasi_fasilitas/views.py +++ b/informasi_fasilitas/views.py @@ -104,11 +104,15 @@ def add_fasilitas(request, nama_lokasi): deskripsi = request.POST['deskripsi'] rating = request.POST['rating'] tag = request.POST['tag'].split() + image = "" + if 'image' in request.POST.keys(): + image = str(request.POST['image']) fasilitas = Fasilitas.objects.create(lokasi=lokasi, user=user, deskripsi=deskripsi, rating=rating, - tag=tag) + tag=tag, + image = image) return JsonResponse({'response' : 'fasilitas added', 'id':fasilitas.id}, status = 201) else: return JsonResponse({'response' : request_error_message("post")}, status = 400) -- GitLab