forked from AkkomaGang/akkoma
tests: add testing for new notification behavior
This commit is contained in:
parent
b3c360ce2c
commit
dfc26d0fdd
1 changed files with 95 additions and 0 deletions
|
@ -3,6 +3,7 @@ defmodule Pleroma.NotificationTest do
|
||||||
alias Pleroma.Web.TwitterAPI.TwitterAPI
|
alias Pleroma.Web.TwitterAPI.TwitterAPI
|
||||||
alias Pleroma.Web.CommonAPI
|
alias Pleroma.Web.CommonAPI
|
||||||
alias Pleroma.{User, Notification}
|
alias Pleroma.{User, Notification}
|
||||||
|
alias Pleroma.Web.ActivityPub.Transmogrifier
|
||||||
import Pleroma.Factory
|
import Pleroma.Factory
|
||||||
|
|
||||||
describe "create_notifications" do
|
describe "create_notifications" do
|
||||||
|
@ -156,6 +157,100 @@ test "it sets all notifications as read up to a specified notification ID" do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "notification target determination" do
|
||||||
|
test "it sends notifications to addressed users in new messages" do
|
||||||
|
user = insert(:user)
|
||||||
|
other_user = insert(:user)
|
||||||
|
|
||||||
|
{:ok, activity} =
|
||||||
|
CommonAPI.post(user, %{
|
||||||
|
"status" => "hey @#{other_user.nickname}!"
|
||||||
|
})
|
||||||
|
|
||||||
|
assert other_user in Notification.get_notified_from_activity(activity)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "it sends notifications to mentioned users in new messages" do
|
||||||
|
user = insert(:user)
|
||||||
|
other_user = insert(:user)
|
||||||
|
|
||||||
|
create_activity = %{
|
||||||
|
"@context" => "https://www.w3.org/ns/activitystreams",
|
||||||
|
"type" => "Create",
|
||||||
|
"to" => ["https://www.w3.org/ns/activitystreams#Public"],
|
||||||
|
"actor" => user.ap_id,
|
||||||
|
"object" => %{
|
||||||
|
"type" => "Note",
|
||||||
|
"content" => "message with a Mention tag, but no explicit tagging",
|
||||||
|
"tag" => [
|
||||||
|
%{
|
||||||
|
"type" => "Mention",
|
||||||
|
"href" => other_user.ap_id,
|
||||||
|
"name" => other_user.nickname
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"attributedTo" => user.ap_id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{:ok, activity} = Transmogrifier.handle_incoming(create_activity)
|
||||||
|
|
||||||
|
assert other_user in Notification.get_notified_from_activity(activity)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "it does not send notifications to users who are only cc in new messages" do
|
||||||
|
user = insert(:user)
|
||||||
|
other_user = insert(:user)
|
||||||
|
|
||||||
|
create_activity = %{
|
||||||
|
"@context" => "https://www.w3.org/ns/activitystreams",
|
||||||
|
"type" => "Create",
|
||||||
|
"to" => ["https://www.w3.org/ns/activitystreams#Public"],
|
||||||
|
"cc" => [other_user.ap_id],
|
||||||
|
"actor" => user.ap_id,
|
||||||
|
"object" => %{
|
||||||
|
"type" => "Note",
|
||||||
|
"content" => "hi everyone",
|
||||||
|
"attributedTo" => user.ap_id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{:ok, activity} = Transmogrifier.handle_incoming(create_activity)
|
||||||
|
|
||||||
|
assert other_user not in Notification.get_notified_from_activity(activity)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "it does not send notification to mentioned users in likes" do
|
||||||
|
user = insert(:user)
|
||||||
|
other_user = insert(:user)
|
||||||
|
third_user = insert(:user)
|
||||||
|
|
||||||
|
{:ok, activity_one} =
|
||||||
|
CommonAPI.post(user, %{
|
||||||
|
"status" => "hey @#{other_user.nickname}!"
|
||||||
|
})
|
||||||
|
|
||||||
|
{:ok, activity_two, _} = CommonAPI.favorite(activity_one.id, third_user)
|
||||||
|
|
||||||
|
assert other_user not in Notification.get_notified_from_activity(activity_two)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "it does not send notification to mentioned users in announces" do
|
||||||
|
user = insert(:user)
|
||||||
|
other_user = insert(:user)
|
||||||
|
third_user = insert(:user)
|
||||||
|
|
||||||
|
{:ok, activity_one} =
|
||||||
|
CommonAPI.post(user, %{
|
||||||
|
"status" => "hey @#{other_user.nickname}!"
|
||||||
|
})
|
||||||
|
|
||||||
|
{:ok, activity_two, _} = CommonAPI.repeat(activity_one.id, third_user)
|
||||||
|
|
||||||
|
assert other_user not in Notification.get_notified_from_activity(activity_two)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "notification lifecycle" do
|
describe "notification lifecycle" do
|
||||||
test "liking an activity results in 1 notification, then 0 if the activity is deleted" do
|
test "liking an activity results in 1 notification, then 0 if the activity is deleted" do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
|
|
Loading…
Reference in a new issue