diff options
| -rw-r--r-- | CHANGELOG.md | 1 | ||||
| -rw-r--r-- | lib/pleroma/web/mastodon_api/views/account_view.ex | 1 | ||||
| -rw-r--r-- | test/web/mastodon_api/account_view_test.exs | 102 | 
3 files changed, 85 insertions, 19 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 86c90da0b..f121d0fbf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).  - Mastodon API, extension: Ability to reset avatar, profile banner, and background  - Mastodon API: Add support for categories for custom emojis by reusing the group feature. <https://github.com/tootsuite/mastodon/pull/11196>  - Mastodon API: Add support for muting/unmuting notifications +- Mastodon API: Add support for the `blocked_by` attribute in the relationship API (`GET /api/v1/accounts/relationships`). <https://github.com/tootsuite/mastodon/pull/10373>  - Admin API: Return users' tags when querying reports  - Admin API: Return avatar and display name when querying users  - Admin API: Allow querying user by ID diff --git a/lib/pleroma/web/mastodon_api/views/account_view.ex b/lib/pleroma/web/mastodon_api/views/account_view.ex index 65bab4062..de1eef9d2 100644 --- a/lib/pleroma/web/mastodon_api/views/account_view.ex +++ b/lib/pleroma/web/mastodon_api/views/account_view.ex @@ -51,6 +51,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do        following: User.following?(user, target),        followed_by: User.following?(target, user),        blocking: User.blocks?(user, target), +      blocked_by: User.blocks?(target, user),        muting: User.mutes?(user, target),        muting_notifications: User.muted_notifications?(user, target),        subscribing: User.subscribed_to?(user, target), diff --git a/test/web/mastodon_api/account_view_test.exs b/test/web/mastodon_api/account_view_test.exs index de6aeec72..83b9db071 100644 --- a/test/web/mastodon_api/account_view_test.exs +++ b/test/web/mastodon_api/account_view_test.exs @@ -6,6 +6,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do    use Pleroma.DataCase    import Pleroma.Factory    alias Pleroma.User +  alias Pleroma.Web.CommonAPI    alias Pleroma.Web.MastodonAPI.AccountView    test "Represent a user account" do @@ -165,28 +166,90 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do      assert expected == AccountView.render("mention.json", %{user: user})    end -  test "represent a relationship" do -    user = insert(:user) -    other_user = insert(:user) +  describe "relationship" do +    test "represent a relationship for the following and followed user" do +      user = insert(:user) +      other_user = insert(:user) -    {:ok, user} = User.follow(user, other_user) -    {:ok, user} = User.block(user, other_user) +      {:ok, user} = User.follow(user, other_user) +      {:ok, other_user} = User.follow(other_user, user) +      {:ok, other_user} = User.subscribe(user, other_user) +      {:ok, user} = User.mute(user, other_user, true) +      {:ok, user} = CommonAPI.hide_reblogs(user, other_user) -    expected = %{ -      id: to_string(other_user.id), -      following: false, -      followed_by: false, -      blocking: true, -      muting: false, -      muting_notifications: false, -      subscribing: false, -      requested: false, -      domain_blocking: false, -      showing_reblogs: true, -      endorsed: false -    } +      expected = %{ +        id: to_string(other_user.id), +        following: true, +        followed_by: true, +        blocking: false, +        blocked_by: false, +        muting: true, +        muting_notifications: true, +        subscribing: true, +        requested: false, +        domain_blocking: false, +        showing_reblogs: false, +        endorsed: false +      } + +      assert expected == +               AccountView.render("relationship.json", %{user: user, target: other_user}) +    end + +    test "represent a relationship for the blocking and blocked user" do +      user = insert(:user) +      other_user = insert(:user) + +      {:ok, user} = User.follow(user, other_user) +      {:ok, other_user} = User.subscribe(user, other_user) +      {:ok, user} = User.block(user, other_user) +      {:ok, other_user} = User.block(other_user, user) + +      expected = %{ +        id: to_string(other_user.id), +        following: false, +        followed_by: false, +        blocking: true, +        blocked_by: true, +        muting: false, +        muting_notifications: false, +        subscribing: false, +        requested: false, +        domain_blocking: false, +        showing_reblogs: true, +        endorsed: false +      } + +      assert expected == +               AccountView.render("relationship.json", %{user: user, target: other_user}) +    end + +    test "represent a relationship for the user with a pending follow request" do +      user = insert(:user) +      other_user = insert(:user, %{info: %User.Info{locked: true}}) + +      {:ok, user, other_user, _} = CommonAPI.follow(user, other_user) +      user = User.get_cached_by_id(user.id) +      other_user = User.get_cached_by_id(other_user.id) + +      expected = %{ +        id: to_string(other_user.id), +        following: false, +        followed_by: false, +        blocking: false, +        blocked_by: false, +        muting: false, +        muting_notifications: false, +        subscribing: false, +        requested: true, +        domain_blocking: false, +        showing_reblogs: true, +        endorsed: false +      } -    assert expected == AccountView.render("relationship.json", %{user: user, target: other_user}) +      assert expected == +               AccountView.render("relationship.json", %{user: user, target: other_user}) +    end    end    test "represent an embedded relationship" do @@ -240,6 +303,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do            following: false,            followed_by: false,            blocking: true, +          blocked_by: false,            subscribing: false,            muting: false,            muting_notifications: false,  | 
