]> git.openstreetmap.org Git - rails.git/commitdiff
Include message_read attribute in api output of messages to self
authorAnton Khorev <tony29@yandex.ru>
Sun, 19 Jan 2025 02:48:36 +0000 (05:48 +0300)
committerAnton Khorev <tony29@yandex.ru>
Sun, 19 Jan 2025 02:48:36 +0000 (05:48 +0300)
app/views/api/messages/_message.json.jbuilder
app/views/api/messages/_message.xml.builder
test/controllers/api/messages_controller_test.rb

index a04295d31304fa98f204c84d33a23a465284e1a1..840ad19d029d230c69802c1d04e188218b961d85 100644 (file)
@@ -6,10 +6,11 @@ json.to_display_name message.recipient.display_name
 json.title message.title
 json.sent_on message.sent_on.xmlschema
 
+json.message_read message.message_read if current_user.id == message.to_user_id
+
 if current_user.id == message.from_user_id
   json.deleted !message.from_user_visible
 elsif current_user.id == message.to_user_id
-  json.message_read message.message_read
   json.deleted !message.to_user_visible
 end
 
index 64ac9e3bcc0d8aecb442a4661221496f7d65cc12..2ab307f1ab1e848cd0b433832d6c5f479bb6e401 100644 (file)
@@ -8,10 +8,11 @@ attrs = {
   "body_format" => message.body_format
 }
 
+attrs["message_read"] = message.message_read if current_user.id == message.to_user_id
+
 if current_user.id == message.from_user_id
   attrs["deleted"] = !message.from_user_visible
 elsif current_user.id == message.to_user_id
-  attrs["message_read"] = message.message_read
   attrs["deleted"] = !message.to_user_visible
 end
 
index 806a4a505ee75e9de39a840141f3d6239169cf9b..0857d0e100fa6c1375d28bb6d28eec51156eef51 100644 (file)
@@ -222,6 +222,34 @@ module Api
       assert_equal msg.body, jsm["body"]
     end
 
+    def test_show_message_to_self_read
+      user = create(:user)
+      message = create(:message, :sender => user, :recipient => user)
+      auth_header = bearer_authorization_header user
+
+      get api_message_path(message), :headers => auth_header
+      assert_response :success
+      assert_equal "application/xml", response.media_type
+      assert_dom "message", :count => 1 do
+        assert_dom "> @message_read", "false"
+      end
+    end
+
+    def test_show_message_to_self_read_json
+      user = create(:user)
+      message = create(:message, :sender => user, :recipient => user)
+      auth_header = bearer_authorization_header user
+
+      get api_message_path(message, :format => "json"), :headers => auth_header
+      assert_response :success
+      assert_equal "application/json", response.media_type
+      js = ActiveSupport::JSON.decode(@response.body)
+      jsm = js["message"]
+      assert_not_nil jsm
+      assert jsm.key?("message_read")
+      assert_not jsm["message_read"]
+    end
+
     def test_update_status
       recipient = create(:user)
       sender = create(:user)