# test all routes which lead to this controller
def test_routes
assert_routing(
- { :path => "/message/new/username", :method => :get },
+ { :path => "/messages/new/username", :method => :get },
{ :controller => "messages", :action => "new", :display_name => "username" }
)
assert_routing(
{ :path => "/messages/1/mark", :method => :post },
{ :controller => "messages", :action => "mark", :message_id => "1" }
)
- assert_routing(
- { :path => "/messages/1/reply", :method => :get },
- { :controller => "messages", :action => "reply", :message_id => "1" }
- )
- assert_routing(
- { :path => "/messages/1/reply", :method => :post },
- { :controller => "messages", :action => "reply", :message_id => "1" }
- )
assert_routing(
{ :path => "/messages/1", :method => :delete },
{ :controller => "messages", :action => "destroy", :id => "1" }
end
end
- ##
- # test the reply action
- def test_reply
- user = create(:user)
- recipient_user = create(:user)
- other_user = create(:user)
- message = create(:message, :unread, :sender => user, :recipient => recipient_user)
-
- # Check that the message reply page requires us to login
- get message_reply_path(message)
- assert_redirected_to login_path(:referer => message_reply_path(message))
-
- # Login as the wrong user
- session_for(other_user)
-
- # Check that we can't reply to somebody else's message
- get message_reply_path(message)
- assert_redirected_to login_path(:referer => message_reply_path(message))
- assert_equal "You are logged in as '#{other_user.display_name}' but the message you have asked to reply to was not sent to that user. Please log in as the correct user in order to reply.", flash[:notice]
-
- # Login as the right user
- session_for(recipient_user)
-
- # Check that the message reply page loads
- get message_reply_path(message)
- assert_response :success
- assert_template "new"
- assert_select "title", "Re: #{message.title} | OpenStreetMap"
- assert_select "form[action='/messages']", :count => 1 do
- assert_select "input[type='hidden'][name='display_name'][value='#{user.display_name}']"
- assert_select "input#message_title[value='Re: #{message.title}']", :count => 1
- assert_select "textarea#message_body", :count => 1
- assert_select "input[type='submit'][value='Send']", :count => 1
- end
- assert Message.find(message.id).message_read
-
- # Login as the sending user
- session_for(user)
-
- # Check that the message reply page loads
- get message_reply_path(message)
- assert_response :success
- assert_template "new"
- assert_select "title", "Re: #{message.title} | OpenStreetMap"
- assert_select "form[action='/messages']", :count => 1 do
- assert_select "input[type='hidden'][name='display_name'][value='#{recipient_user.display_name}']"
- assert_select "input#message_title[value='Re: #{message.title}']", :count => 1
- assert_select "textarea#message_body", :count => 1
- assert_select "input[type='submit'][value='Send']", :count => 1
- end
-
- # Asking to reply to a message with a bogus ID should fail
- get message_reply_path(99999)
- assert_response :not_found
- assert_template "no_such_message"
- end
-
##
# test the show action
def test_show