From 5cedbfe9ce424939bfd08f14331a3952dac97697 Mon Sep 17 00:00:00 2001 From: Ignacio Date: Wed, 23 Oct 2024 18:30:47 -0600 Subject: [PATCH] Modified home page template. Added more FT and UT --- functional_tests.py | 20 +++++++++++++++----- lists/templates/home.html | 7 +++++-- lists/tests.py | 5 +++++ lists/views.py | 7 ++++++- 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/functional_tests.py b/functional_tests.py index e09c241..508ee25 100644 --- a/functional_tests.py +++ b/functional_tests.py @@ -36,16 +36,26 @@ class NewVisitorTest(unittest.TestCase): table = self.browser.find_element(By.ID, "id_list_table") rows = table.find_elements(By.TAG_NAME, "tr") - self.assertTrue( - any(row.text == "1: Buy peacock feathers" for row in rows), - "New to-do item did not appear in table", - ) + self.assertIn("1: Buy peacock feathers", [row.text for row in rows]) # There is still a text box inviting him to add another item. # He enters "Use peacock feathers to make a fly" (Ig is very methodical) - self.fail("Finish the test!") + inputbox = self.browser.find_element(By.ID, "id_new_item") + inputbox.send_keys("Use peacock feathers to make a fly") + inputbox.send_keys(Keys.ENTER) + time.sleep(1) # The page updates again, and now shows both items on his list + table = self.browser.find_element(By.ID, "id_list_table") + rows = table.find_elements(By.TAG_NAME, "tr") + self.assertIn( + "1: Buy peacock feathers", + [row.text for row in rows], + ) + self.assertIn( + "2: Use peacock feather sto make a fly", + [row.text for row in rows], + ) # Satisfied, he goes back to sleep diff --git a/lists/templates/home.html b/lists/templates/home.html index 3a9209d..c5df936 100644 --- a/lists/templates/home.html +++ b/lists/templates/home.html @@ -4,9 +4,12 @@

Your To-Do list

- +
+ + {% csrf_token %} +
- +
1: {{ new_item_text }}
\ No newline at end of file diff --git a/lists/tests.py b/lists/tests.py index 39539db..8669ad5 100644 --- a/lists/tests.py +++ b/lists/tests.py @@ -6,4 +6,9 @@ from lists.views import home_page class HomePageTest(TestCase): def test_uses_home_page_template(self): response = self.client.get("/") + self.assertTemplateUsed(response, "home.html") + + def test_can_save_a_POST_request(self): + response = self.client.post("/", data={"item_text": "A new list item"}) + self.assertContains(response, "A new list item") self.assertTemplateUsed(response, "home.html") \ No newline at end of file diff --git a/lists/views.py b/lists/views.py index 8ddabe1..4487dd0 100644 --- a/lists/views.py +++ b/lists/views.py @@ -1,5 +1,10 @@ from django.shortcuts import render +from django.http import HttpResponse # Create your views here. def home_page(request): - return render(request, "home.html") \ No newline at end of file + return render( + request, + "home.html", + {"new_item_text": request.POST.get("item_text", "")}, + ) \ No newline at end of file