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

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) 

8 

9from ..models import ToDoItem, ToDoList 

10from ..views import ( 

11 ItemDeleteView, 

12 ListDeleteView, 

13 ListListView, 

14) 

15 

16# pytestmark = pytest.mark.django_db 

17 

18 

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

31 

32 

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

42 

43 

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" 

55 

56 

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""" 

74 

75 

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

92 

93 

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 ) 

101 

102 self.todolist = ToDoList.objects.create( 

103 title="A good title", 

104 owner=self.user, 

105 ) 

106 

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 ) 

112 

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)