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