plugged up some testing holes with explicit placeholder urls in views and unit tests; most tests now pass

This commit is contained in:
Disco DeDisco
2026-01-02 00:00:56 -05:00
parent 3081cd85b1
commit 47bf26ce49
5 changed files with 31 additions and 18 deletions

View File

@@ -8,19 +8,10 @@ class HomePageTest(TestCase):
def test_renders_input_form(self):
response = self.client.get('/')
self.assertContains(response, '<form method="POST">')
self.assertContains(response, '<form method="POST"')
self.assertContains(response, '<form method="POST" action="/">')
self.assertContains(response, '<input name="item_text"')
def test_displays_all_list_items(self):
# Given/Arrange
Item.objects.create(text='itemey 1')
Item.objects.create(text='itemey 2')
# When/Act
response = self.client.get('/')
# Then/Assert
self.assertContains(response, 'itemey 1')
self.assertContains(response, 'itemey 2')
def test_can_save_a_POST_request(self):
self. client.post('/', data={'item_text': "A new list item"})
self.assertEqual(Item.objects.count(), 1)
@@ -29,7 +20,7 @@ class HomePageTest(TestCase):
def test_redirects_after_POST(self):
response = self.client.post('/', data={'item_text': 'A new list item'})
self.assertRedirects(response, '/')
self.assertRedirects(response, '/apps/dashboard/the-only-list-in-the-world/')
def test_only_saves_items_when_necessary(self):
self.client.get('/')
@@ -52,4 +43,21 @@ class ItemModelTest(TestCase):
second_saved_item = saved_items[1]
self.assertEqual(first_saved_item.text, "The first (ever) list item")
self.assertEqual(second_saved_item.text, "A sequel somehow better than the first")
class ListViewTest(TestCase):
def test_renders_input_form(self):
response = self.client.get('/apps/dashboard/the-only-list-in-the-world/')
self.assertContains(response, '<form method="POST"')
self.assertContains(response, '<form method="POST" action="/">')
self.assertContains(response, '<input name="item_text"')
def test_displays_all_list_items(self):
# Given/Arrange
Item.objects.create(text='itemey 1')
Item.objects.create(text='itemey 2')
# When/Act
response = self.client.get('/apps/dashboard/the-only-list-in-the-world/')
# Then/Assert
self.assertContains(response, 'itemey 1')
self.assertContains(response, 'itemey 2')

View File

@@ -4,7 +4,11 @@ from .models import Item
def home_page(request):
if request.method == 'POST':
Item.objects.create(text=request.POST['item_text'])
return redirect('/')
return redirect('/apps/dashboard/the-only-list-in-the-world/')
items = Item.objects.all()
return render(request, 'apps/dashboard/home.html', {'items': items})
def view_list(request):
items = Item.objects.all()
return render(request, 'apps/dashboard/home.html', {'items': items})

View File

@@ -1,8 +1,9 @@
from django.contrib import admin
from django.urls import path
from apps.dashboard.views import home_page
from apps.dashboard import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', home_page, name='home'),
path('', views.home_page, name='home'),
path('apps/dashboard/the-only-list-in-the-world/', views.view_list, name='view_list'),
]

View File

@@ -60,7 +60,7 @@ class NewVisitorTest(LiveServerTestCase):
self.wait_for_row_in_list_table('1. Buy peacock feathers')
edith_dash_url = self.browser.current_url
self.assertRegex(edith_dash_url, '/dashboard/.+')
self.assertRegex(edith_dash_url, '/apps/dashboard/.+')
self.browser.delete_all_cookies()
@@ -74,7 +74,7 @@ class NewVisitorTest(LiveServerTestCase):
self.wait_for_row_in_list_table('1. Buy milk')
francis_dash_url = self.browser.current_url
self.assertRegex(francis_dash_url, '/dashboard/.+')
self.assertRegex(francis_dash_url, '/apps/dashboard/.+')
self.assertNotEqual(francis_dash_url, edith_dash_url)
page_text = self.browser.find_element(By.TAG_NAME, 'body').text

View File

@@ -4,7 +4,7 @@
</head>
<body>
<h1>Your To-Do List</h1>
<form method="POST">
<form method="POST" action="/">
<input name="item_text" id="id-new-item" placeholder="Enter a to-do item">
{% csrf_token %}
</form>