new and refined tests for dashboard app; home iterates list w. django templating; views refined for redirect after post request

This commit is contained in:
Disco DeDisco
2025-12-31 14:39:26 -05:00
parent 1950eaa12e
commit c318a526fc
3 changed files with 30 additions and 17 deletions

View File

@@ -11,19 +11,34 @@ class HomePageTest(TestCase):
self.assertContains(response, '<form method="POST">')
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):
response = self.client.post('/', data={'item_text': 'A new dashboard item'})
self. client.post('/', data={'item_text': "A new list item"})
self.assertEqual(Item.objects.count(), 1)
new_item = Item.objects.first()
self.assertEqual(new_item.text, 'A new dashboard item')
self.assertContains(response, 'A new dashboard item')
self.assertTemplateUsed(response, 'apps/dashboard/home.html')
self.assertEqual(new_item.text, 'A new list item')
def test_redirects_after_POST(self):
response = self.client.post('/', data={'item_text': 'A new list item'})
self.assertRedirects(response, '/')
def test_only_saves_items_when_necessary(self):
self.client.get('/')
self.assertEqual(Item.objects.count(), 0)
class ItemModelTest(TestCase):
def test_saving_and_retrieving_items(self):
first_item = Item()
first_item.text = "The first (ever) dashboard item"
first_item.text = "The first (ever) list item"
first_item.save()
second_item = Item()
@@ -35,6 +50,6 @@ class ItemModelTest(TestCase):
first_saved_item = saved_items[0]
second_saved_item = saved_items[1]
self.assertEqual(first_saved_item.text, "The first (ever) dashboard 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")

View File

@@ -1,14 +1,10 @@
from django.http import HttpResponse
from django.shortcuts import render
from django.shortcuts import redirect, render
from .models import Item
def home_page(request):
item = Item()
item.text = request.POST.get('item_text', '')
item.save()
if request.method == 'POST':
Item.objects.create(text=request.POST['item_text'])
return redirect('/')
return render(
request,
'apps/dashboard/home.html',
{'new_item_text': request.POST.get('item_text', '')},
)
items = Item.objects.all()
return render(request, 'apps/dashboard/home.html', {'items': items})

View File

@@ -9,7 +9,9 @@
{% csrf_token %}
</form>
<table id="id-list-table">
<tr><td>1: {{ new_item_text }}</td></tr>
{% for item in items %}
<tr><td>1: {{ item.text }}</td></tr>
{% endfor %}
</table>
</body>
</html>