Add the blocked_by
attribute to the relationship API (GET /api/v1/accounts/relationships
)
This commit is contained in:
parent
cf7ca1db0e
commit
c4ca142e14
3 changed files with 85 additions and 19 deletions
|
@ -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, 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 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 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 users' tags when querying reports
|
||||||
- Admin API: Return avatar and display name when querying users
|
- Admin API: Return avatar and display name when querying users
|
||||||
- Admin API: Allow querying user by ID
|
- Admin API: Allow querying user by ID
|
||||||
|
|
|
@ -51,6 +51,7 @@ def render("relationship.json", %{user: %User{} = user, target: %User{} = target
|
||||||
following: User.following?(user, target),
|
following: User.following?(user, target),
|
||||||
followed_by: User.following?(target, user),
|
followed_by: User.following?(target, user),
|
||||||
blocking: User.blocks?(user, target),
|
blocking: User.blocks?(user, target),
|
||||||
|
blocked_by: User.blocks?(target, user),
|
||||||
muting: User.mutes?(user, target),
|
muting: User.mutes?(user, target),
|
||||||
muting_notifications: User.muted_notifications?(user, target),
|
muting_notifications: User.muted_notifications?(user, target),
|
||||||
subscribing: User.subscribed_to?(user, target),
|
subscribing: User.subscribed_to?(user, target),
|
||||||
|
|
|
@ -6,6 +6,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do
|
||||||
use Pleroma.DataCase
|
use Pleroma.DataCase
|
||||||
import Pleroma.Factory
|
import Pleroma.Factory
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
|
alias Pleroma.Web.CommonAPI
|
||||||
alias Pleroma.Web.MastodonAPI.AccountView
|
alias Pleroma.Web.MastodonAPI.AccountView
|
||||||
|
|
||||||
test "Represent a user account" do
|
test "Represent a user account" do
|
||||||
|
@ -165,28 +166,90 @@ test "Represent a smaller mention" do
|
||||||
assert expected == AccountView.render("mention.json", %{user: user})
|
assert expected == AccountView.render("mention.json", %{user: user})
|
||||||
end
|
end
|
||||||
|
|
||||||
test "represent a relationship" do
|
describe "relationship" do
|
||||||
user = insert(:user)
|
test "represent a relationship for the following and followed user" do
|
||||||
other_user = insert(:user)
|
user = insert(:user)
|
||||||
|
other_user = insert(:user)
|
||||||
|
|
||||||
{:ok, user} = User.follow(user, other_user)
|
{:ok, user} = User.follow(user, other_user)
|
||||||
{:ok, user} = User.block(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 = %{
|
expected = %{
|
||||||
id: to_string(other_user.id),
|
id: to_string(other_user.id),
|
||||||
following: false,
|
following: true,
|
||||||
followed_by: false,
|
followed_by: true,
|
||||||
blocking: true,
|
blocking: false,
|
||||||
muting: false,
|
blocked_by: false,
|
||||||
muting_notifications: false,
|
muting: true,
|
||||||
subscribing: false,
|
muting_notifications: true,
|
||||||
requested: false,
|
subscribing: true,
|
||||||
domain_blocking: false,
|
requested: false,
|
||||||
showing_reblogs: true,
|
domain_blocking: false,
|
||||||
endorsed: false
|
showing_reblogs: false,
|
||||||
}
|
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
|
||||||
|
|
||||||
|
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})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
test "represent an embedded relationship" do
|
test "represent an embedded relationship" do
|
||||||
|
@ -240,6 +303,7 @@ test "represent an embedded relationship" do
|
||||||
following: false,
|
following: false,
|
||||||
followed_by: false,
|
followed_by: false,
|
||||||
blocking: true,
|
blocking: true,
|
||||||
|
blocked_by: false,
|
||||||
subscribing: false,
|
subscribing: false,
|
||||||
muting: false,
|
muting: false,
|
||||||
muting_notifications: false,
|
muting_notifications: false,
|
||||||
|
|
Loading…
Reference in a new issue