Notification: Don't break on figuring out the type of old EmojiReactions
authorlain <lain@soykaf.club>
Thu, 4 Jun 2020 18:40:46 +0000 (20:40 +0200)
committerlain <lain@soykaf.club>
Thu, 4 Jun 2020 18:40:46 +0000 (20:40 +0200)
lib/pleroma/notification.ex
test/notification_test.exs

index 455d214bf4a4faa7f80975f7cc7acfb25ace826a..e5b880b105f8ba40cbfd298fd5c0a166a7612e95 100644 (file)
@@ -398,6 +398,10 @@ defmodule Pleroma.Notification do
       "EmojiReact" ->
         "pleroma:emoji_reaction"
 
+      # Compatibility with old reactions
+      "EmojiReaction" ->
+        "pleroma:emoji_reaction"
+
       "Create" ->
         activity
         |> type_from_activity_object()
index 6bc2b6904b5972025b48c59d5898a1ad9cc9fcd0..f2115a29efd266d2548a056ddc604b76af774c22 100644 (file)
@@ -8,8 +8,10 @@ defmodule Pleroma.NotificationTest do
   import Pleroma.Factory
   import Mock
 
+  alias Pleroma.Activity
   alias Pleroma.FollowingRelationship
   alias Pleroma.Notification
+  alias Pleroma.Repo
   alias Pleroma.Tests.ObanHelpers
   alias Pleroma.User
   alias Pleroma.Web.ActivityPub.ActivityPub
@@ -29,8 +31,18 @@ defmodule Pleroma.NotificationTest do
       {:ok, chat} = CommonAPI.post_chat_message(user, other_user, "yo")
       {:ok, react} = CommonAPI.react_with_emoji(post.id, other_user, "☕")
       {:ok, like} = CommonAPI.favorite(other_user, post.id)
+      {:ok, react_2} = CommonAPI.react_with_emoji(post.id, other_user, "☕")
 
-      assert {4, nil} = Repo.update_all(Notification, set: [type: nil])
+      data =
+        react_2.data
+        |> Map.put("type", "EmojiReaction")
+
+      {:ok, react_2} =
+        react_2
+        |> Activity.change(%{data: data})
+        |> Repo.update()
+
+      assert {5, nil} = Repo.update_all(Notification, set: [type: nil])
 
       Notification.fill_in_notification_types()
 
@@ -43,6 +55,9 @@ defmodule Pleroma.NotificationTest do
       assert %{type: "pleroma:emoji_reaction"} =
                Repo.get_by(Notification, user_id: user.id, activity_id: react.id)
 
+      assert %{type: "pleroma:emoji_reaction"} =
+               Repo.get_by(Notification, user_id: user.id, activity_id: react_2.id)
+
       assert %{type: "pleroma:chat_mention"} =
                Repo.get_by(Notification, user_id: other_user.id, activity_id: chat.id)
     end