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

1import pytest 

2from django.urls import reverse 

3from pytest_django.asserts import ( 

4 assertContains, 

5) 

6 

7from ..models import Message 

8from ..views import ( 

9 message_create, 

10 message_delete, 

11 message_detail, 

12 message_list, 

13 message_update, 

14) 

15 

16# pytestmark = pytest.mark.django_db 

17 

18 

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

29 

30 

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

47 

48 

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

66 

67 

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

84 

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

90 

91 

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

102 

103 

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