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):
|
def test_renders_input_form(self):
|
||||||
response = self.client.get('/')
|
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"')
|
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):
|
def test_can_save_a_POST_request(self):
|
||||||
self. client.post('/', data={'item_text': "A new list item"})
|
self. client.post('/', data={'item_text': "A new list item"})
|
||||||
self.assertEqual(Item.objects.count(), 1)
|
self.assertEqual(Item.objects.count(), 1)
|
||||||
@@ -29,7 +20,7 @@ class HomePageTest(TestCase):
|
|||||||
|
|
||||||
def test_redirects_after_POST(self):
|
def test_redirects_after_POST(self):
|
||||||
response = self.client.post('/', data={'item_text': 'A new list item'})
|
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):
|
def test_only_saves_items_when_necessary(self):
|
||||||
self.client.get('/')
|
self.client.get('/')
|
||||||
@@ -53,3 +44,20 @@ class ItemModelTest(TestCase):
|
|||||||
self.assertEqual(first_saved_item.text, "The first (ever) list item")
|
self.assertEqual(first_saved_item.text, "The first (ever) list item")
|
||||||
self.assertEqual(second_saved_item.text, "A sequel somehow better than the first")
|
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):
|
def home_page(request):
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
Item.objects.create(text=request.POST['item_text'])
|
Item.objects.create(text=request.POST['item_text'])
|
||||||
return redirect('/')
|
return redirect('/apps/dashboard/the-only-list-in-the-world/')
|
||||||
|
|
||||||
items = Item.objects.all()
|
items = Item.objects.all()
|
||||||
return render(request, 'apps/dashboard/home.html', {'items': items})
|
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.contrib import admin
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
from apps.dashboard.views import home_page
|
from apps.dashboard import views
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('admin/', admin.site.urls),
|
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')
|
self.wait_for_row_in_list_table('1. Buy peacock feathers')
|
||||||
|
|
||||||
edith_dash_url = self.browser.current_url
|
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()
|
self.browser.delete_all_cookies()
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ class NewVisitorTest(LiveServerTestCase):
|
|||||||
self.wait_for_row_in_list_table('1. Buy milk')
|
self.wait_for_row_in_list_table('1. Buy milk')
|
||||||
|
|
||||||
francis_dash_url = self.browser.current_url
|
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)
|
self.assertNotEqual(francis_dash_url, edith_dash_url)
|
||||||
|
|
||||||
page_text = self.browser.find_element(By.TAG_NAME, 'body').text
|
page_text = self.browser.find_element(By.TAG_NAME, 'body').text
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>Your To-Do List</h1>
|
<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">
|
<input name="item_text" id="id-new-item" placeholder="Enter a to-do item">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
Reference in New Issue
Block a user