plugged up some testing holes with explicit placeholder urls in views and unit tests; most tests now pass
This commit is contained in:
@@ -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')
|
||||
|
||||
@@ -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})
|
||||
@@ -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'),
|
||||
]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user