Coverage for message/tests/test_views.py: 100.00%
55 statements
« prev ^ index » next coverage.py v7.17.0, created at 2026-10-30 09:06 -0700
« prev ^ index » next coverage.py v7.17.0, created at 2026-10-30 09:06 -0700
1import pytest 1a
2from django.urls import reverse 1a
3from pytest_django.asserts import ( 1a
4 assertContains,
5)
7from ..models import Message 1a
8from ..views import ( 1a
9 message_create,
10 message_delete,
11 message_detail,
12 message_list,
13 message_update,
14)
16# pytestmark = pytest.mark.django_db
19@pytest.mark.django_db 1a
20def test_message_list_view(rf, admin_user): 1a
21 # Get the request
22 request = rf.get(reverse("message_list")) 1a
23 request.user = admin_user 1a
24 # Use the request to get the response
25 response = message_list(request) 1a
26 # Test that the response is valid
27 assert response.status_code == 200 1a
28 assertContains(response, "This is the message board") 1a
31@pytest.mark.django_db 1a
32def test_message_detail_view(rf, message, admin_user): 1a
33 # Get the request
34 url = f"{message.publish}/{message.slug}/" 1a
35 request = rf.get(url) 1a
36 request.user = admin_user 1a
37 # Use the request to get the response
38 response = message_detail( 1a
39 request,
40 year=message.publish.year,
41 month=message.publish.month,
42 day=message.publish.day,
43 message=message.slug,
44 )
45 # Test that the response is valid
46 assertContains(response, message.title) 1a
49@pytest.mark.django_db 1a
50def test_message_create_view(rf, message, admin_user): 1a
51 form_data = { 1a
52 "title": message.title,
53 "status": message.status,
54 "body": message.body,
55 }
56 # Make a request for our new message
57 request = rf.post(reverse("message_new"), form_data) 1a
58 # Add an authenticated user
59 request.user = admin_user 1a
60 # Use the request to get the response
61 response = message_create(request) 1a
62 text = Message.published.last() 1a
63 # Test that the response is valid
64 assert response.status_code == 302 1a
65 assert text.author == message.author 1a
68@pytest.mark.django_db 1a
69def test_message_update(rf, message): 1a
70 """POST request to message_update updates a message
71 and redirects.
72 """
73 form_data = { 1a
74 "title": message.title,
75 "status": message.status,
76 "body": "This is the new message body",
77 }
78 url = reverse("message_update", kwargs={"pk": message.id}) 1a
79 # Make a request for our updated message
80 request = rf.post(url, form_data) 1a
81 request.user = message.author 1a
82 callable_obj = message_update 1a
83 response = callable_obj(request, pk=message.id) 1a
85 # Check that the message body has been changed
86 message.refresh_from_db() 1a
87 text = Message.published.last() 1a
88 assert response.status_code == 302 1a
89 assert text.author == message.author 1a
92@pytest.mark.django_db 1a
93def test_message_delete(rf, message): 1a
94 request = rf.post( 1a
95 reverse("message_delete", kwargs={"pk": message.id}),
96 )
97 request.user = message.author 1a
98 callable_obj = message_delete 1a
99 response = callable_obj(request, pk=message.id) 1a
100 assert request.method == "POST" 1a
101 assert response.status_code == 302 1a
104@pytest.mark.django_db 1a
105def test_message_delete_bad_author(rf, message, user): 1a
106 request = rf.get( 1a
107 reverse("message_delete", kwargs={"pk": message.id}),
108 )
109 request.user = user 1a
110 callable_obj = message_delete 1a
111 response = callable_obj(request, pk=message.id) 1a
112 assert response.status_code == 200 1a