Coverage for tasks/tests/test_views.py: 100.00%
39 statements
« prev ^ index » next coverage.py v7.9.0, created at 2025-06-12 14:44 -0700
« prev ^ index » next coverage.py v7.9.0, created at 2025-06-12 14:44 -0700
1import pytest
2from django.contrib.auth import get_user_model
3from django.test import TestCase
4from django.urls import reverse
5from pytest_django.asserts import (
6 assertContains,
7)
9from ..models import ToDoItem, ToDoList
10from ..views import (
11 ItemDeleteView,
12 ListDeleteView,
13 ListListView,
14)
16# pytestmark = pytest.mark.django_db
19@pytest.mark.django_db
20def test_list_list_view(rf, todolist):
21 # Get the request
22 request = rf.get(reverse("list", args=[todolist.id])) 1b
23 request.user = todolist.owner 1b
24 # Use the request to get the response
25 response = ListListView.as_view()(request) 1b
26 # Test that the response is valid
27 assert response.status_code == 200 1b
28 # assertContains(response, f"{todolist.owner}'s task lists")
29 assertContains(response, f"{todolist.title}") 1b
30 assert ToDoList.objects.count(), 1 1b
33@pytest.mark.django_db
34def test_todo_list_delete(rf, todolist):
35 request = rf.post( 1c
36 reverse("list-delete", kwargs={"pk": todolist.id}),
37 )
38 request.user = todolist.owner 1c
39 callable_obj = ListDeleteView.as_view() 1c
40 response = callable_obj(request, pk=todolist.id) 1c
41 assert response.status_code == 302 1c
44"""
45@pytest.mark.django_db
46def test_todolist_create_view(rf, todolist, admin_user):
47 form_data = {
48 "title": "New ToDo List",
49 }
50 request = rf.post(reverse("list-add"), form_data)
51 request.user = admin_user
52 response = ListCreateView.as_view()(request)
53 assert response.status_code, 302
54 assert todolist.title, "New ToDo List"
57@pytest.mark.django_db
58def test_todo_item_create_view(rf, todoitem, todolist):
59 form_data = {
60 "todo_list": todolist.title,
61 "title": "A thing to do",
62 "description": "Get this thing done",
63 "created_date": todoitem.created_date,
64 "due_date": todoitem.due_date,
65 }
66 request = rf.post(
67 reverse("item-add", args=[todolist.id]), form_data,
68 )
69 request.user = todolist.owner
70 response = ItemCreateView.as_view()(request)
71 assert response.status_code, 200
72 # assert ToDoItem.objects.last().description, "Get this thing done"
73"""
76@pytest.mark.django_db
77def test_todo_item_delete(rf, todoitem, todolist):
78 request = rf.post( 1d
79 reverse(
80 "item-delete",
81 kwargs={
82 "list_id": todolist.id,
83 "pk": todoitem.id,
84 },
85 ),
86 )
87 request.user = todolist.owner 1d
88 callable_obj = ItemDeleteView.as_view() 1d
89 # response = callable_obj(request)
90 response = callable_obj(request, list_id=todolist.id, pk=todoitem.id) 1d
91 assert response.status_code == 302 1d
94class TodoModelTest(TestCase):
95 def setUp(self):
96 self.user = get_user_model().objects.create_user(
97 username="johndoe",
98 email="johndoe@example.com",
99 password="secret",
100 )
102 self.todolist = ToDoList.objects.create(
103 title="A good title",
104 owner=self.user,
105 )
107 self.todoitem = ToDoItem.objects.create(
108 todo_list=self.todolist,
109 title="A good second title",
110 description="Nice body content for a second article",
111 )
113 def test_listview(self):
114 self.client.login(email="johndoe@example.com", password="secret") 1e
115 response = self.client.get(reverse("list", args=[self.todolist.id])) 1e
116 self.assertEqual(response.status_code, 200) 1e
117 # self.assertEqual(ToDoList.objects.count(), 1)