# Set the message as being read or unread.
def mark
- @message = current_user.messages.find(params[:message_id])
+ @message = current_user.messages.unscope(:where => :muted).find(params[:message_id])
if params[:mark] == "unread"
message_read = false
notice = t ".as_unread"
@message.message_read = message_read
if @message.save
flash[:notice] = notice
- redirect_to inbox_messages_path, :status => :see_other
+ if @message.muted?
+ redirect_to muted_messages_path, :status => :see_other
+ else
+ redirect_to inbox_messages_path, :status => :see_other
+ end
end
rescue ActiveRecord::RecordNotFound
@title = t "messages.no_such_message.title"
assert_template "no_such_message"
end
+ ##
+ # test the mark action for messages from muted users
+ def test_mark_muted
+ sender_user = create(:user)
+ recipient_user = create(:user)
+ create(:user_mute, :owner => recipient_user, :subject => sender_user)
+ message = create(:message, :unread, :sender => sender_user, :recipient => recipient_user)
+
+ session_for(recipient_user)
+
+ # Check that the marking a message read works
+ post message_mark_path(message, :mark => "read")
+ assert_redirected_to muted_messages_path
+ assert Message.find(message.id).message_read
+
+ # Check that the marking a message unread works
+ post message_mark_path(message, :mark => "unread")
+ assert_redirected_to muted_messages_path
+ assert_not Message.find(message.id).message_read
+ end
+
##
# test the destroy action
def test_destroy