Coverage for message/tests/test_views.py: 100.00%
55 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-13 16:05 -0700
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-13 16:05 -0700
1import pytest
2from django.urls import reverse
3from pytest_django.asserts import (
4 assertContains,
5)
7from ..models import Message
8from ..views import (
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
20def test_message_list_view(rf, admin_user):
21 # Get the request
22 request = rf.get(reverse("message_list")) 1e
23 request.user = admin_user 1e
24 # Use the request to get the response
25 response = message_list(request) 1e
26 # Test that the response is valid
27 assert response.status_code == 200 1e
28 assertContains(response, "This is the message board") 1e
31@pytest.mark.django_db
32def test_message_detail_view(rf, message, admin_user):
33 # Get the request
34 url = f"{message.publish}/{message.slug}/" 1f
35 request = rf.get(url) 1f
36 request.user = admin_user 1f
37 # Use the request to get the response
38 response = message_detail( 1f
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) 1f
49@pytest.mark.django_db
50def test_message_create_view(rf, message, admin_user):
51 form_data = { 1c
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) 1c
58 # Add an authenticated user
59 request.user = admin_user 1c
60 # Use the request to get the response
61 response = message_create(request) 1c
62 text = Message.published.last() 1c
63 # Test that the response is valid
64 assert response.status_code == 302 1c
65 assert text.author == message.author 1c
68@pytest.mark.django_db
69def test_message_update(rf, message):
70 """POST request to message_update updates a message
71 and redirects.
72 """
73 form_data = { 1b
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}) 1b
79 # Make a request for our updated message
80 request = rf.post(url, form_data) 1b
81 request.user = message.author 1b
82 callable_obj = message_update 1b
83 response = callable_obj(request, pk=message.id) 1b
85 # Check that the message body has been changed
86 message.refresh_from_db() 1b
87 text = Message.published.last() 1b
88 assert response.status_code == 302 1b
89 assert text.author == message.author 1b
92@pytest.mark.django_db
93def test_message_delete(rf, message):
94 request = rf.post( 1d
95 reverse("message_delete", kwargs={"pk": message.id}),
96 )
97 request.user = message.author 1d
98 callable_obj = message_delete 1d
99 response = callable_obj(request, pk=message.id) 1d
100 assert request.method == "POST" 1d
101 assert response.status_code == 302 1d
104@pytest.mark.django_db
105def test_message_delete_bad_author(rf, message, user):
106 request = rf.get( 1g
107 reverse("message_delete", kwargs={"pk": message.id}),
108 )
109 request.user = user 1g
110 callable_obj = message_delete 1g
111 response = callable_obj(request, pk=message.id) 1g
112 assert response.status_code == 200 1g