4   class ReadMarksControllerTest < ActionDispatch::IntegrationTest
 
   6     # test all routes which lead to this controller
 
   9         { :path => "/messages/1/read_mark", :method => :post },
 
  10         { :controller => "messages/read_marks", :action => "create", :message_id => "1" }
 
  13         { :path => "/messages/1/read_mark", :method => :delete },
 
  14         { :controller => "messages/read_marks", :action => "destroy", :message_id => "1" }
 
  18     def test_create_when_not_logged_in
 
  19       message = create(:message, :unread)
 
  21       post message_read_mark_path(message)
 
  22       assert_response :forbidden
 
  25     def test_create_as_other_user
 
  26       message = create(:message, :unread)
 
  27       session_for(create(:user))
 
  29       post message_read_mark_path(message)
 
  30       assert_response :not_found
 
  31       assert_template "no_such_message"
 
  34     def test_create_as_sender
 
  35       message = create(:message, :unread)
 
  36       session_for(message.sender)
 
  38       post message_read_mark_path(message)
 
  39       assert_response :not_found
 
  40       assert_template "no_such_message"
 
  43     def test_create_as_recipient
 
  44       message = create(:message, :unread)
 
  45       session_for(message.recipient)
 
  47       post message_read_mark_path(message)
 
  48       assert_redirected_to messages_inbox_path
 
  49       assert message.reload.message_read
 
  52     def test_create_on_missing_message
 
  53       session_for(create(:user))
 
  55       post message_read_mark_path(99999)
 
  56       assert_response :not_found
 
  57       assert_template "no_such_message"
 
  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)
 
  67       post message_read_mark_path(message)
 
  68       assert_redirected_to messages_muted_inbox_path
 
  69       assert message.reload.message_read
 
  72     def test_destroy_when_not_logged_in
 
  73       message = create(:message, :read)
 
  75       delete message_read_mark_path(message)
 
  76       assert_response :forbidden
 
  79     def test_destroy_as_other_user
 
  80       message = create(:message, :read)
 
  81       session_for(create(:user))
 
  83       delete message_read_mark_path(message)
 
  84       assert_response :not_found
 
  85       assert_template "no_such_message"
 
  88     def test_destroy_as_sender
 
  89       message = create(:message, :read)
 
  90       session_for(message.sender)
 
  92       delete message_read_mark_path(message)
 
  93       assert_response :not_found
 
  94       assert_template "no_such_message"
 
  97     def test_destroy_as_recipient
 
  98       message = create(:message, :read)
 
  99       session_for(message.recipient)
 
 101       delete message_read_mark_path(message)
 
 102       assert_redirected_to messages_inbox_path
 
 103       assert_not message.reload.message_read
 
 106     def test_destroy_on_missing_message
 
 107       session_for(create(:user))
 
 109       delete message_read_mark_path(99999)
 
 110       assert_response :not_found
 
 111       assert_template "no_such_message"
 
 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)
 
 121       delete message_read_mark_path(message, :mark => "unread")
 
 122       assert_redirected_to messages_muted_inbox_path
 
 123       assert_not message.reload.message_read