diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/pleroma/object_test.exs | 38 | ||||
| -rw-r--r-- | test/pleroma/web/activity_pub/utils_test.exs | 27 | ||||
| -rw-r--r-- | test/pleroma/web/mastodon_api/views/status_view_test.exs | 21 | ||||
| -rw-r--r-- | test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs | 32 | 
4 files changed, 116 insertions, 2 deletions
| diff --git a/test/pleroma/object_test.exs b/test/pleroma/object_test.exs index d536e0b16..7bc5c9928 100644 --- a/test/pleroma/object_test.exs +++ b/test/pleroma/object_test.exs @@ -444,4 +444,42 @@ defmodule Pleroma.ObjectTest do                 Enum.sort_by(object.hashtags, & &1.name)      end    end + +  describe "get_emoji_reactions/1" do +    test "3-tuple current format" do +      object = %Object{ +        data: %{ +          "reactions" => [ +            ["x", ["https://some/user"], "https://some/emoji"] +          ] +        } +      } + +      assert Object.get_emoji_reactions(object) == object.data["reactions"] +    end + +    test "2-tuple legacy format" do +      object = %Object{ +        data: %{ +          "reactions" => [ +            ["x", ["https://some/user"]] +          ] +        } +      } + +      assert Object.get_emoji_reactions(object) == [["x", ["https://some/user"], nil]] +    end + +    test "Map format" do +      object = %Object{ +        data: %{ +          "reactions" => %{ +            "x" => ["https://some/user"] +          } +        } +      } + +      assert Object.get_emoji_reactions(object) == [["x", ["https://some/user"], nil]] +    end +  end  end diff --git a/test/pleroma/web/activity_pub/utils_test.exs b/test/pleroma/web/activity_pub/utils_test.exs index e7d1e01c4..3f93c872b 100644 --- a/test/pleroma/web/activity_pub/utils_test.exs +++ b/test/pleroma/web/activity_pub/utils_test.exs @@ -587,15 +587,38 @@ defmodule Pleroma.Web.ActivityPub.UtilsTest do    end    describe "get_cached_emoji_reactions/1" do -    test "returns the data or an emtpy list" do +    test "returns the normalized data or an emtpy list" do        object = insert(:note)        assert Utils.get_cached_emoji_reactions(object) == []        object = insert(:note, data: %{"reactions" => [["x", ["lain"]]]}) -      assert Utils.get_cached_emoji_reactions(object) == [["x", ["lain"]]] +      assert Utils.get_cached_emoji_reactions(object) == [["x", ["lain"], nil]]        object = insert(:note, data: %{"reactions" => %{}})        assert Utils.get_cached_emoji_reactions(object) == []      end    end + +  describe "add_emoji_reaction_to_object/1" do +    test "works with legacy 2-tuple format" do +      user = insert(:user) +      other_user = insert(:user) +      third_user = insert(:user) + +      note = +        insert(:note, +          user: user, +          data: %{ +            "reactions" => [["😿", [other_user.ap_id]]] +          } +        ) + +      _activity = insert(:note_activity, user: user, note: note) + +      Utils.add_emoji_reaction_to_object( +        %Activity{data: %{"content" => "😿", "actor" => third_user.ap_id}}, +        note +      ) +    end +  end  end diff --git a/test/pleroma/web/mastodon_api/views/status_view_test.exs b/test/pleroma/web/mastodon_api/views/status_view_test.exs index a1f3e3e1d..b93335190 100644 --- a/test/pleroma/web/mastodon_api/views/status_view_test.exs +++ b/test/pleroma/web/mastodon_api/views/status_view_test.exs @@ -74,6 +74,27 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do             ]    end +  test "works with legacy-formatted reactions" do +    user = insert(:user) +    other_user = insert(:user) + +    note = +      insert(:note, +        user: user, +        data: %{ +          "reactions" => [["😿", [other_user.ap_id]]] +        } +      ) + +    activity = insert(:note_activity, user: user, note: note) + +    status = StatusView.render("show.json", activity: activity, for: user) + +    assert status[:pleroma][:emoji_reactions] == [ +             %{name: "😿", count: 1, me: false, url: nil, account_ids: [other_user.id]} +           ] +  end +    test "works correctly with badly formatted emojis" do      user = insert(:user)      {:ok, activity} = CommonAPI.post(user, %{status: "yo"}) diff --git a/test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs b/test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs index d81b47a6b..21e7d4839 100644 --- a/test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs +++ b/test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs @@ -245,6 +245,38 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionControllerTest do               result    end +  test "GET /api/v1/pleroma/statuses/:id/reactions with legacy format", %{conn: conn} do +    user = insert(:user) +    other_user = insert(:user) + +    note = +      insert(:note, +        user: user, +        data: %{ +          "reactions" => [["😿", [other_user.ap_id]]] +        } +      ) + +    activity = insert(:note_activity, user: user, note: note) + +    result = +      conn +      |> get("/api/v1/pleroma/statuses/#{activity.id}/reactions") +      |> json_response_and_validate_schema(200) + +    other_user_id = other_user.id + +    assert [ +             %{ +               "name" => "😿", +               "count" => 1, +               "me" => false, +               "url" => nil, +               "accounts" => [%{"id" => ^other_user_id}] +             } +           ] = result +  end +    test "GET /api/v1/pleroma/statuses/:id/reactions?with_muted=true", %{conn: conn} do      user = insert(:user)      user2 = insert(:user) | 
