]> git.openstreetmap.org Git - rails.git/blob - test/controllers/messages/read_marks_controller_test.rb
Merge pull request #5932 from tomhughes/frozen-strings
[rails.git] / test / controllers / messages / read_marks_controller_test.rb
1 # frozen_string_literal: true
2
3 require "test_helper"
4
5 module Messages
6   class ReadMarksControllerTest < ActionDispatch::IntegrationTest
7     ##
8     # test all routes which lead to this controller
9     def test_routes
10       assert_routing(
11         { :path => "/messages/1/read_mark", :method => :post },
12         { :controller => "messages/read_marks", :action => "create", :message_id => "1" }
13       )
14       assert_routing(
15         { :path => "/messages/1/read_mark", :method => :delete },
16         { :controller => "messages/read_marks", :action => "destroy", :message_id => "1" }
17       )
18     end
19
20     def test_create_when_not_logged_in
21       message = create(:message, :unread)
22
23       post message_read_mark_path(message)
24       assert_response :forbidden
25     end
26
27     def test_create_as_other_user
28       message = create(:message, :unread)
29       session_for(create(:user))
30
31       post message_read_mark_path(message)
32       assert_response :not_found
33       assert_template "no_such_message"
34     end
35
36     def test_create_as_sender
37       message = create(:message, :unread)
38       session_for(message.sender)
39
40       post message_read_mark_path(message)
41       assert_response :not_found
42       assert_template "no_such_message"
43     end
44
45     def test_create_as_recipient
46       message = create(:message, :unread)
47       session_for(message.recipient)
48
49       post message_read_mark_path(message)
50       assert_redirected_to messages_inbox_path
51       assert message.reload.message_read
52     end
53
54     def test_create_on_missing_message
55       session_for(create(:user))
56
57       post message_read_mark_path(99999)
58       assert_response :not_found
59       assert_template "no_such_message"
60     end
61
62     def test_create_on_message_from_muted_user
63       sender_user = create(:user)
64       recipient_user = create(:user)
65       create(:user_mute, :owner => recipient_user, :subject => sender_user)
66       message = create(:message, :unread, :sender => sender_user, :recipient => recipient_user)
67       session_for(recipient_user)
68
69       post message_read_mark_path(message)
70       assert_redirected_to messages_muted_inbox_path
71       assert message.reload.message_read
72     end
73
74     def test_destroy_when_not_logged_in
75       message = create(:message, :read)
76
77       delete message_read_mark_path(message)
78       assert_response :forbidden
79     end
80
81     def test_destroy_as_other_user
82       message = create(:message, :read)
83       session_for(create(:user))
84
85       delete message_read_mark_path(message)
86       assert_response :not_found
87       assert_template "no_such_message"
88     end
89
90     def test_destroy_as_sender
91       message = create(:message, :read)
92       session_for(message.sender)
93
94       delete message_read_mark_path(message)
95       assert_response :not_found
96       assert_template "no_such_message"
97     end
98
99     def test_destroy_as_recipient
100       message = create(:message, :read)
101       session_for(message.recipient)
102
103       delete message_read_mark_path(message)
104       assert_redirected_to messages_inbox_path
105       assert_not message.reload.message_read
106     end
107
108     def test_destroy_on_missing_message
109       session_for(create(:user))
110
111       delete message_read_mark_path(99999)
112       assert_response :not_found
113       assert_template "no_such_message"
114     end
115
116     def test_destroy_on_message_from_muted_user
117       sender_user = create(:user)
118       recipient_user = create(:user)
119       create(:user_mute, :owner => recipient_user, :subject => sender_user)
120       message = create(:message, :read, :sender => sender_user, :recipient => recipient_user)
121       session_for(recipient_user)
122
123       delete message_read_mark_path(message, :mark => "unread")
124       assert_redirected_to messages_muted_inbox_path
125       assert_not message.reload.message_read
126     end
127   end
128 end