diff options
| -rw-r--r-- | lib/pleroma/web/mastodon_api/views/account_view.ex | 11 | ||||
| -rw-r--r-- | test/web/mastodon_api/account_view_test.exs | 66 | 
2 files changed, 73 insertions, 4 deletions
diff --git a/lib/pleroma/web/mastodon_api/views/account_view.ex b/lib/pleroma/web/mastodon_api/views/account_view.ex index 8fdefdebd..c32f27be2 100644 --- a/lib/pleroma/web/mastodon_api/views/account_view.ex +++ b/lib/pleroma/web/mastodon_api/views/account_view.ex @@ -32,7 +32,11 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do      }    end -  def render("relationship.json", %{user: user, target: target}) do +  def render("relationship.json", %{user: nil, target: _target}) do +    %{} +  end + +  def render("relationship.json", %{user: %User{} = user, target: %User{} = target}) do      follow_activity = Pleroma.Web.ActivityPub.Utils.fetch_latest_follow(user, target)      requested = @@ -85,6 +89,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do      bio = HTML.filter_tags(user.bio, User.html_filter_policy(opts[:for])) +    relationship = render("relationship.json", %{user: opts[:for], target: user}) +      %{        id: to_string(user.id),        username: username_from_nickname(user.nickname), @@ -115,7 +121,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do          confirmation_pending: user_info.confirmation_pending,          tags: user.tags,          is_moderator: user.info.is_moderator, -        is_admin: user.info.is_admin +        is_admin: user.info.is_admin, +        relationship: relationship        }      }    end diff --git a/test/web/mastodon_api/account_view_test.exs b/test/web/mastodon_api/account_view_test.exs index f8cd68173..6be66ef63 100644 --- a/test/web/mastodon_api/account_view_test.exs +++ b/test/web/mastodon_api/account_view_test.exs @@ -63,7 +63,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do          confirmation_pending: false,          tags: [],          is_admin: false, -        is_moderator: false +        is_moderator: false, +        relationship: %{}        }      } @@ -106,7 +107,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do          confirmation_pending: false,          tags: [],          is_admin: false, -        is_moderator: false +        is_moderator: false, +        relationship: %{}        }      } @@ -148,4 +150,64 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do      assert expected == AccountView.render("relationship.json", %{user: user, target: other_user})    end + +  test "represent an embedded relationship" do +    user = +      insert(:user, %{ +        info: %{note_count: 5, follower_count: 3, source_data: %{"type" => "Service"}}, +        nickname: "shp@shitposter.club", +        inserted_at: ~N[2017-08-15 15:47:06.597036] +      }) + +    other_user = insert(:user) + +    {:ok, other_user} = User.follow(other_user, user) +    {:ok, other_user} = User.block(other_user, user) + +    expected = %{ +      id: to_string(user.id), +      username: "shp", +      acct: user.nickname, +      display_name: user.name, +      locked: false, +      created_at: "2017-08-15T15:47:06.000Z", +      followers_count: 3, +      following_count: 0, +      statuses_count: 5, +      note: user.bio, +      url: user.ap_id, +      avatar: "http://localhost:4001/images/avi.png", +      avatar_static: "http://localhost:4001/images/avi.png", +      header: "http://localhost:4001/images/banner.png", +      header_static: "http://localhost:4001/images/banner.png", +      emojis: [], +      fields: [], +      bot: true, +      source: %{ +        note: "", +        privacy: "public", +        sensitive: false +      }, +      pleroma: %{ +        confirmation_pending: false, +        tags: [], +        is_admin: false, +        is_moderator: false, +        relationship: %{ +          id: to_string(user.id), +          following: false, +          followed_by: false, +          blocking: true, +          muting: false, +          muting_notifications: false, +          requested: false, +          domain_blocking: false, +          showing_reblogs: false, +          endorsed: false +        } +      } +    } + +    assert expected == AccountView.render("account.json", %{user: user, for: other_user}) +  end  end  | 
