1 # frozen_string_literal: true
 
   6   class ReadMarksControllerTest < ActionDispatch::IntegrationTest
 
   8     # test all routes which lead to this controller
 
  11         { :path => "/messages/1/read_mark", :method => :post },
 
  12         { :controller => "messages/read_marks", :action => "create", :message_id => "1" }
 
  15         { :path => "/messages/1/read_mark", :method => :delete },
 
  16         { :controller => "messages/read_marks", :action => "destroy", :message_id => "1" }
 
  20     def test_create_when_not_logged_in
 
  21       message = create(:message, :unread)
 
  23       post message_read_mark_path(message)
 
  24       assert_response :forbidden
 
  27     def test_create_as_other_user
 
  28       message = create(:message, :unread)
 
  29       session_for(create(:user))
 
  31       post message_read_mark_path(message)
 
  32       assert_response :not_found
 
  33       assert_template "no_such_message"
 
  36     def test_create_as_sender
 
  37       message = create(:message, :unread)
 
  38       session_for(message.sender)
 
  40       post message_read_mark_path(message)
 
  41       assert_response :not_found
 
  42       assert_template "no_such_message"
 
  45     def test_create_as_recipient
 
  46       message = create(:message, :unread)
 
  47       session_for(message.recipient)
 
  49       post message_read_mark_path(message)
 
  50       assert_redirected_to messages_inbox_path
 
  51       assert message.reload.message_read
 
  54     def test_create_on_missing_message
 
  55       session_for(create(:user))
 
  57       post message_read_mark_path(99999)
 
  58       assert_response :not_found
 
  59       assert_template "no_such_message"
 
  62     def test_create_on_message_from_muted_user
 
  63       sender_user = create(:user)
 
  64       recipient_user = create(:user)
 
  65       create(:user_mute, :owner => recipient_user, :subject => sender_user)
 
  66       message = create(:message, :unread, :sender => sender_user, :recipient => recipient_user)
 
  67       session_for(recipient_user)
 
  69       post message_read_mark_path(message)
 
  70       assert_redirected_to messages_muted_inbox_path
 
  71       assert message.reload.message_read
 
  74     def test_destroy_when_not_logged_in
 
  75       message = create(:message, :read)
 
  77       delete message_read_mark_path(message)
 
  78       assert_response :forbidden
 
  81     def test_destroy_as_other_user
 
  82       message = create(:message, :read)
 
  83       session_for(create(:user))
 
  85       delete message_read_mark_path(message)
 
  86       assert_response :not_found
 
  87       assert_template "no_such_message"
 
  90     def test_destroy_as_sender
 
  91       message = create(:message, :read)
 
  92       session_for(message.sender)
 
  94       delete message_read_mark_path(message)
 
  95       assert_response :not_found
 
  96       assert_template "no_such_message"
 
  99     def test_destroy_as_recipient
 
 100       message = create(:message, :read)
 
 101       session_for(message.recipient)
 
 103       delete message_read_mark_path(message)
 
 104       assert_redirected_to messages_inbox_path
 
 105       assert_not message.reload.message_read
 
 108     def test_destroy_on_missing_message
 
 109       session_for(create(:user))
 
 111       delete message_read_mark_path(99999)
 
 112       assert_response :not_found
 
 113       assert_template "no_such_message"
 
 116     def test_destroy_on_message_from_muted_user
 
 117       sender_user = create(:user)
 
 118       recipient_user = create(:user)
 
 119       create(:user_mute, :owner => recipient_user, :subject => sender_user)
 
 120       message = create(:message, :read, :sender => sender_user, :recipient => recipient_user)
 
 121       session_for(recipient_user)
 
 123       delete message_read_mark_path(message, :mark => "unread")
 
 124       assert_redirected_to messages_muted_inbox_path
 
 125       assert_not message.reload.message_read