-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtests.py
86 lines (62 loc) · 2.76 KB
/
tests.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
from django.urls import resolve
from django.test import TestCase
from django.http import HttpRequest
from lists.views import home_page
from lists.models import Item
# Create your tests here.
class SmokeTest(TestCase):
def test_bad_maths(self):
self.assertEqual(1 + 1, 2)
class HomePageTest(TestCase):
def test_root_url_resolves_to_home_page_view(self):
found = resolve("/")
self.assertEqual(found.func, home_page)
def test_home_page_returns_correct_html(self):
request = HttpRequest()
response = home_page(request)
html = response.content.decode("utf8")
self.assertTrue(html.startswith("<html>"))
self.assertIn("<title>To-Do Lists</title>", html)
# self.assertTrue(html.endswith("</html>"))
self.assertTrue(html.strip().endswith("</html>"))
def test_home_page_returns_correct_html_using_client(self):
response = self.client.get("/")
html = response.content.decode("utf8")
self.assertTrue(html.startswith("<html>"))
self.assertIn("<title>To-Do Lists</title>", html)
self.assertTrue(html.strip().endswith("</html>"))
def test_uses_home_template(self):
response = self.client.get("/")
self.assertTemplateUsed(response, "home.html")
def test_only_saves_items_when_necessary(self):
self.client.get("/")
self.assertEqual(Item.objects.count(), 0)
def test_can_save_a_POST_request(self):
response = 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 list item")
def test_redirects_after_POST(self):
response = self.client.post("/", data={"item_text": "A new list item"})
self.assertEqual(response.status_code, 302)
self.assertEqual(response["location"], "/")
def test_displays_all_list_items(self):
Item.objects.create(text="itemey 1")
Item.objects.create(text="itemey 2")
response = self.client.get("/")
self.assertIn("itemey 1", response.content.decode())
self.assertIn("itemey 2", response.content.decode())
class ItemModelTest(TestCase):
def test_saving_and_retrieving_items(self):
first_item = Item()
first_item.text = "The first list item"
first_item.save()
second_item = Item()
second_item.text = "Item the second"
second_item.save()
saved_items = Item.objects.all()
self.assertEqual(saved_items.count(), 2)
first_saved_item = saved_items[0]
second_saved_item = saved_items[1]
self.assertEqual(first_saved_item.text, "The first list item")
self.assertEqual(second_saved_item.text, "Item the second")