require "test_helper" module Messages class ReadMarksControllerTest < ActionDispatch::IntegrationTest ## # test all routes which lead to this controller def test_routes assert_routing( { :path => "/messages/1/read_mark", :method => :post }, { :controller => "messages/read_marks", :action => "create", :message_id => "1" } ) assert_routing( { :path => "/messages/1/read_mark", :method => :delete }, { :controller => "messages/read_marks", :action => "destroy", :message_id => "1" } ) end def test_create_when_not_logged_in message = create(:message, :unread) post message_read_mark_path(message) assert_response :forbidden end def test_create_as_other_user message = create(:message, :unread) session_for(create(:user)) post message_read_mark_path(message) assert_response :not_found assert_template "no_such_message" end def test_create_as_sender message = create(:message, :unread) session_for(message.sender) post message_read_mark_path(message) assert_response :not_found assert_template "no_such_message" end def test_create_as_recipient message = create(:message, :unread) session_for(message.recipient) post message_read_mark_path(message) assert_redirected_to messages_inbox_path assert message.reload.message_read end def test_create_on_missing_message session_for(create(:user)) post message_read_mark_path(99999) assert_response :not_found assert_template "no_such_message" end def test_create_on_message_from_muted_user 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) post message_read_mark_path(message) assert_redirected_to messages_muted_inbox_path assert message.reload.message_read end def test_destroy_when_not_logged_in message = create(:message, :read) delete message_read_mark_path(message) assert_response :forbidden end def test_destroy_as_other_user message = create(:message, :read) session_for(create(:user)) delete message_read_mark_path(message) assert_response :not_found assert_template "no_such_message" end def test_destroy_as_sender message = create(:message, :read) session_for(message.sender) delete message_read_mark_path(message) assert_response :not_found assert_template "no_such_message" end def test_destroy_as_recipient message = create(:message, :read) session_for(message.recipient) delete message_read_mark_path(message) assert_redirected_to messages_inbox_path assert_not message.reload.message_read end def test_destroy_on_missing_message session_for(create(:user)) delete message_read_mark_path(99999) assert_response :not_found assert_template "no_such_message" end def test_destroy_on_message_from_muted_user sender_user = create(:user) recipient_user = create(:user) create(:user_mute, :owner => recipient_user, :subject => sender_user) message = create(:message, :read, :sender => sender_user, :recipient => recipient_user) session_for(recipient_user) delete message_read_mark_path(message, :mark => "unread") assert_redirected_to messages_muted_inbox_path assert_not message.reload.message_read end end end