From bd6b1a5f72dc18308b4bed0428a3fcb816d1a7f0 Mon Sep 17 00:00:00 2001
From: Adib Yusril Wafi <adib.yusril@ui.ac.id>
Date: Sun, 6 Oct 2019 19:45:54 +0700
Subject: [PATCH 1/4] initial commit

---
 core/migrations/0020_merge_20191006_1855.py | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
 create mode 100644 core/migrations/0020_merge_20191006_1855.py

diff --git a/core/migrations/0020_merge_20191006_1855.py b/core/migrations/0020_merge_20191006_1855.py
new file mode 100644
index 00000000..d1ed929b
--- /dev/null
+++ b/core/migrations/0020_merge_20191006_1855.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.5 on 2019-10-06 11:55
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0017_vacancy_amount'),
+        ('core', '0019_merge_20191006_0852'),
+        ('core', '0014_auto_20191004_1340'),
+    ]
+
+    operations = [
+    ]
-- 
GitLab


From 0223a8c6257e17ce33d3938beaa072f0793fffc9 Mon Sep 17 00:00:00 2001
From: Adib Yusril Wafi <adib.yusril@ui.ac.id>
Date: Sun, 6 Oct 2019 20:45:16 +0700
Subject: [PATCH 2/4] [RED] Add test for updating feedback

---
 core/tests/test_feedbacks.py | 47 ++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/core/tests/test_feedbacks.py b/core/tests/test_feedbacks.py
index f45dba9d..240bdb55 100644
--- a/core/tests/test_feedbacks.py
+++ b/core/tests/test_feedbacks.py
@@ -256,3 +256,50 @@ class FeedbacksTests(APITestCase):
         response = self.client.delete(feedbacks_url)
 
         self.assertEqual(response.status_code, status.HTTP_405_METHOD_NOT_ALLOWED)
+
+    @requests_mock.Mocker()
+    def test_feedbacks_update_with_exist_data_and_with_data_id(self, m):
+        self.login(m)
+
+        # test_feedbacks_update_with_exist_data_and_with_data_id
+
+        new_feedback = Feedback(title="a title", content="a content")
+        new_feedback.save()
+        feedback_id = new_feedback.id
+
+        feedbacks_url = '/api/feedbacks/' + str(feedback_id) + '/'
+        response = self.client.put(feedbacks_url,
+                                    {"content": "updated content", "title": "updated title"})
+
+        self.assertEqual(response.status_code, status.HTTP_200_OK)
+        self.assertEqual(response.data["title"], "updated title")
+        self.assertEqual(response.data["content"], "updated content")
+        self.assertEqual(response.data["detail"], "Feedback with id {} was updated".format(feedback_id))
+
+    @requests_mock.Mocker()
+    def test_feedbacks_update_with_not_exist_data_and_with_data_id(self, m):
+        self.login(m)
+
+        # test_feedbacks_delete_with_not_exist_data_and_with_data_id
+        new_feedback = Feedback(title="a title", content="a content")
+        new_feedback.save()
+        feedback_id = new_feedback.id
+        new_feedback.delete()
+
+        feedbacks_url = '/api/feedbacks/' + str(feedback_id) + '/'
+        response = self.client.put(feedbacks_url,
+                                    {"content": "updated content", "title": "updated title"})
+        
+        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
+        self.assertEqual(response.data["detail"], "Feedback with id {} doesn't exist".format(feedback_id))
+
+    @requests_mock.Mocker()
+    def test_feedbacks_delete_without_data_id(self, m):
+        self.login(m)
+
+        # test_feedbacks_delete_without_data_id
+        feedbacks_url = '/api/feedbacks/'
+        response = self.client.put(feedbacks_url,
+                                    {"content": "updated content", "title": "updated title"})
+
+        self.assertEqual(response.status_code, status.HTTP_405_METHOD_NOT_ALLOWED)
-- 
GitLab


From a09cf69bcbbb6ef0edd74ec3104a5da8d2f350d0 Mon Sep 17 00:00:00 2001
From: Adib Yusril Wafi <adib.yusril@ui.ac.id>
Date: Sun, 6 Oct 2019 21:06:31 +0700
Subject: [PATCH 3/4] [GREEN] Add update feedback implementation

---
 core/views/feedbacks.py | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/core/views/feedbacks.py b/core/views/feedbacks.py
index 42464b65..fa357206 100644
--- a/core/views/feedbacks.py
+++ b/core/views/feedbacks.py
@@ -61,3 +61,26 @@ class FeedbackViewSet(viewsets.GenericViewSet):
             message = {"detail": "Feedback with id {} doesn't exist".format(pk)}
             print(message)
             return Response(message, status=status.HTTP_400_BAD_REQUEST)
+
+    def update(self, request, pk):
+        """
+        Update feedback {id}
+        ---
+        """
+        if Feedback.objects.filter(id=pk).count() != 0:
+            print (request.data)
+            update_feedback = Feedback.objects.filter(id=pk)
+            update_feedback.update(title=request.data['title'], content=request.data['content'])
+
+            update_feedback = Feedback.objects.get(id=pk)
+            serialized_update_feedback = FeedbackSerializer(update_feedback, context={'request': request})
+            serialized_update_feedback_data = serialized_update_feedback.data
+
+            message = {"detail": "Feedback with id {} was updated".format(pk)}
+            message.update(serialized_update_feedback_data)
+            print(message)
+            return Response(message, status=status.HTTP_200_OK)
+        else:
+            message = {"detail": "Feedback with id {} doesn't exist".format(pk)}
+            print(message)
+            return Response(message, status=status.HTTP_400_BAD_REQUEST)
-- 
GitLab


From 5623c8dd934f98103bcd229e0445791003b82979 Mon Sep 17 00:00:00 2001
From: Adib Yusril Wafi <adib.yusril@ui.ac.id>
Date: Tue, 8 Oct 2019 22:05:14 +0700
Subject: [PATCH 4/4] merge migrations

---
 core/migrations/0035_merge_20191008_2145.py | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
 create mode 100644 core/migrations/0035_merge_20191008_2145.py

diff --git a/core/migrations/0035_merge_20191008_2145.py b/core/migrations/0035_merge_20191008_2145.py
new file mode 100644
index 00000000..1cfde9be
--- /dev/null
+++ b/core/migrations/0035_merge_20191008_2145.py
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.5 on 2019-10-08 14:45
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0020_merge_20191006_1855'),
+        ('core', '0034_merge_20191008_1907'),
+    ]
+
+    operations = [
+    ]
-- 
GitLab