From c3c591aeaa22cdfee2bda1bf430cf792707cc63e Mon Sep 17 00:00:00 2001
From: Bagas <priambudibagaskara@gmail.com>
Date: Sun, 22 Dec 2019 20:24:50 +0700
Subject: [PATCH] finish creating delete featur

---
 .coverage                                     |  2 +-
 functional_tests/test_simple_list_creation.py |  5 +++++
 lists/templates/index.html                    | 10 +++++++---
 lists/tests/test_views.py                     | 10 ++++++++--
 lists/views.py                                | 14 ++++++++++----
 5 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/.coverage b/.coverage
index efc0c8f..28fd842 100644
--- a/.coverage
+++ b/.coverage
@@ -1 +1 @@
-!coverage.py: This is a private format, don't read it directly!{"arcs":{"/Users/priambudi/Documents/Kuliah/PMPL/1606895171-practice/lists/__init__.py":[[-1,1],[1,-1]],"/Users/priambudi/Documents/Kuliah/PMPL/1606895171-practice/accounts/__init__.py":[[-1,1],[1,-1]],"/Users/priambudi/Documents/Kuliah/PMPL/1606895171-practice/lists/models.py":[[-1,1],[1,3],[-3,3],[3,4],[4,-3],[3,-1]],"/Users/priambudi/Documents/Kuliah/PMPL/1606895171-practice/accounts/models.py":[[-1,1],[1,2],[2,3],[3,5],[5,7],[-7,7],[7,8],[8,10],[10,11],[11,12],[12,13],[13,-7],[7,15],[-15,15],[15,16],[16,17],[17,-15],[15,-1]],"/Users/priambudi/Documents/Kuliah/PMPL/1606895171-practice/accounts/authentication.py":[[-1,1],[1,3],[-3,3],[3,5],[5,15],[15,-3],[3,-1],[-5,6],[6,7],[7,9],[9,11],[11,12],[12,-5],[7,8],[8,-5],[8,9],[9,10],[10,-5],[-15,16],[16,17],[17,-15],[17,18],[18,19],[19,-15]],"/Users/priambudi/Documents/Kuliah/PMPL/1606895171-practice/accounts/views.py":[[-1,1],[1,2],[2,3],[3,4],[4,6],[6,7],[7,10],[10,30],[30,37],[37,-1],[-30,31],[31,32],[32,33],[33,34],[34,-30],[-10,11],[11,12],[12,13],[13,14],[14,16],[16,17],[17,18],[18,19],[19,20],[20,21],[21,23],[23,24],[24,25],[25,27],[27,-10],[32,34],[-37,38],[38,39],[39,-37]],"/Users/priambudi/Documents/Kuliah/PMPL/1606895171-practice/lists/views.py":[[-1,1],[1,2],[2,3],[3,6],[6,20],[20,-1],[-6,7],[7,8],[8,18],[-20,21],[21,22],[22,23],[23,28],[28,-20],[18,-6],[22,24],[24,25],[25,28],[24,27],[27,28],[8,9],[9,16],[16,17],[17,-6]]}}
\ No newline at end of file
+!coverage.py: This is a private format, don't read it directly!{"arcs":{"/Users/priambudi/Documents/Kuliah/PMPL/1606895171-practice/lists/__init__.py":[[-1,1],[1,-1]],"/Users/priambudi/Documents/Kuliah/PMPL/1606895171-practice/accounts/__init__.py":[[-1,1],[1,-1]],"/Users/priambudi/Documents/Kuliah/PMPL/1606895171-practice/lists/models.py":[[-1,1],[1,3],[-3,3],[3,4],[4,-3],[3,-1]],"/Users/priambudi/Documents/Kuliah/PMPL/1606895171-practice/accounts/models.py":[[-1,1],[1,2],[2,3],[3,5],[5,7],[-7,7],[7,8],[8,10],[10,11],[11,12],[12,13],[13,-7],[7,15],[-15,15],[15,16],[16,17],[17,-15],[15,-1]],"/Users/priambudi/Documents/Kuliah/PMPL/1606895171-practice/accounts/authentication.py":[[-1,1],[1,3],[-3,3],[3,5],[5,15],[15,-3],[3,-1],[-5,6],[6,7],[7,9],[9,11],[11,12],[12,-5],[7,8],[8,-5],[8,9],[9,10],[10,-5],[-15,16],[16,17],[17,-15],[17,18],[18,19],[19,-15]],"/Users/priambudi/Documents/Kuliah/PMPL/1606895171-practice/accounts/views.py":[[-1,1],[1,2],[2,3],[3,4],[4,6],[6,7],[7,10],[10,30],[30,37],[37,-1],[-30,31],[31,32],[32,33],[33,34],[34,-30],[-10,11],[11,12],[12,13],[13,14],[14,16],[16,17],[17,18],[18,19],[19,20],[20,21],[21,23],[23,24],[24,25],[25,27],[27,-10],[32,34],[-37,38],[38,39],[39,-37]],"/Users/priambudi/Documents/Kuliah/PMPL/1606895171-practice/lists/views.py":[[-1,1],[1,2],[2,3],[3,6],[6,26],[26,-1],[-6,7],[7,8],[8,24],[-26,27],[27,28],[28,29],[29,34],[34,-26],[24,-6],[28,30],[30,31],[31,34],[30,33],[33,34],[8,9],[9,11],[11,12],[12,19],[19,20],[20,-6],[11,22],[22,23],[23,-6],[12,13],[13,15],[15,16],[16,17],[17,-6]]}}
\ No newline at end of file
diff --git a/functional_tests/test_simple_list_creation.py b/functional_tests/test_simple_list_creation.py
index f435100..8d95879 100644
--- a/functional_tests/test_simple_list_creation.py
+++ b/functional_tests/test_simple_list_creation.py
@@ -67,6 +67,11 @@ class NewVisitorTest(FunctionalTest):
 
         self.check_for_auto_comment('oh tidak')
 
+        deletebox = self.browser.find_element_by_id('id_delete_item')
+        deletebox.send_keys(Keys.ENTER)
+        
+        self.check_for_auto_comment("yey, waktunya berlibur")
+
     def check_for_auto_comment(self, text):
         auto_comment = self.browser.find_element_by_id('comment').text
         self.assertEqual(text, auto_comment)
\ No newline at end of file
diff --git a/lists/templates/index.html b/lists/templates/index.html
index c5571b3..f44fd46 100644
--- a/lists/templates/index.html
+++ b/lists/templates/index.html
@@ -42,9 +42,13 @@
       <p id="comment">{{comment}}</p>
       <p class="has-error">{{error}}</p>
       <form method="POST">
-    <input name="item_text" class="right" id="id_new_item" placeholder="Enter a to-do item" />
-{% csrf_token %}
-</form>
+        <input name="item_text" class="right" id="id_new_item" placeholder="Enter a to-do item" />
+        {% csrf_token %}
+      </form>
+      <form method="POST">
+        <input type="submit" id="id_delete_item" name="delete_button" value="Delete List"/>
+        {% csrf_token %}
+      </form>
 
 <table id="id_list_table">
 {% for item in items %}
diff --git a/lists/tests/test_views.py b/lists/tests/test_views.py
index 8a0774a..3239e8b 100644
--- a/lists/tests/test_views.py
+++ b/lists/tests/test_views.py
@@ -32,13 +32,19 @@ class HomePageUnitTest(TestCase):
         self.assertEqual(response.status_code, 302)
         self.assertEqual(response['location'], '/')
 
-    def test_can_do_DELETE(self):
+    def test_can_delete_list(self):
         response = self.client.post('/', data={'item_text': 'A new list item'})
         self.assertEqual(Item.objects.count(), 1)  
         
-        response = self.client.delete('/')
+        response = self.client.post('/', data={'delete_button': 'Delete List'})
         self.assertEqual(Item.objects.count(), 0)
 
+    def test_redirects_after_delete_list(self):
+        response = self.client.post('/', data={'item_text': 'A new list item'})
+        response = self.client.post('/')
+        self.assertEqual(response.status_code, 302)
+        self.assertEqual(response['location'], '/')
+
     def test_only_saves_items_when_necessary(self):
         self.client.get('/')
         self.assertEqual(Item.objects.count(), 0)
diff --git a/lists/views.py b/lists/views.py
index 385132f..ebd8443 100644
--- a/lists/views.py
+++ b/lists/views.py
@@ -6,15 +6,21 @@ from lists.models import Item
 def home_page(request):
     items = Item.objects.all()
     if request.method == 'POST':
-        if len(request.POST['item_text']) == 0:
-            return render(request, 'index.html', 
+        is_item_text_valid = request.POST.get('item_text', False)
+        # if is_item_text_valid != False:
+        if "item_text" in request.POST:
+            if len(is_item_text_valid) == 0:
+                return render(request, 'index.html', 
                 {
                     'items': items, 
                     'comment': comment_text(len(items)),
                     'error': "You can't have an empty list item"
                 })
-        Item.objects.create(text=request.POST['item_text'])
-        return redirect('/')
+            Item.objects.create(text=request.POST['item_text'])
+            return redirect('/')
+        else:
+            items.all().delete()
+            return redirect('/')
     return render(request, 'index.html', {'items': items, 'comment': comment_text(len(items))})
 
 def comment_text(length):
-- 
GitLab