tests: add notification smoketests (ref #265)
This commit is contained in:
parent
3448b434f5
commit
504a25f812
1 changed files with 121 additions and 0 deletions
|
@ -1,6 +1,7 @@
|
||||||
defmodule Pleroma.NotificationTest do
|
defmodule Pleroma.NotificationTest do
|
||||||
use Pleroma.DataCase
|
use Pleroma.DataCase
|
||||||
alias Pleroma.Web.TwitterAPI.TwitterAPI
|
alias Pleroma.Web.TwitterAPI.TwitterAPI
|
||||||
|
alias Pleroma.Web.CommonAPI
|
||||||
alias Pleroma.{User, Notification}
|
alias Pleroma.{User, Notification}
|
||||||
import Pleroma.Factory
|
import Pleroma.Factory
|
||||||
|
|
||||||
|
@ -119,4 +120,124 @@ test "it clears all notifications belonging to the user" do
|
||||||
assert Notification.for_user(third_user) != []
|
assert Notification.for_user(third_user) != []
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "notification lifecycle" do
|
||||||
|
test "liking an activity results in 1 notification, then 0 if the activity is deleted" do
|
||||||
|
user = insert(:user)
|
||||||
|
other_user = insert(:user)
|
||||||
|
|
||||||
|
{:ok, activity} = CommonAPI.post(user, %{"status" => "test post"})
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 0
|
||||||
|
|
||||||
|
{:ok, _, _} = CommonAPI.favorite(activity.id, other_user)
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 1
|
||||||
|
|
||||||
|
{:ok, _} = CommonAPI.delete(activity.id, user)
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 0
|
||||||
|
end
|
||||||
|
|
||||||
|
test "liking an activity results in 1 notification, then 0 if the activity is unliked" do
|
||||||
|
user = insert(:user)
|
||||||
|
other_user = insert(:user)
|
||||||
|
|
||||||
|
{:ok, activity} = CommonAPI.post(user, %{"status" => "test post"})
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 0
|
||||||
|
|
||||||
|
{:ok, _, _} = CommonAPI.favorite(activity.id, other_user)
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 1
|
||||||
|
|
||||||
|
{:ok, _, _, _} = CommonAPI.unfavorite(activity.id, other_user)
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 0
|
||||||
|
end
|
||||||
|
|
||||||
|
test "repeating an activity results in 1 notification, then 0 if the activity is deleted" do
|
||||||
|
user = insert(:user)
|
||||||
|
other_user = insert(:user)
|
||||||
|
|
||||||
|
{:ok, activity} = CommonAPI.post(user, %{"status" => "test post"})
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 0
|
||||||
|
|
||||||
|
{:ok, _, _} = CommonAPI.repeat(activity.id, other_user)
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 1
|
||||||
|
|
||||||
|
{:ok, _} = CommonAPI.delete(activity.id, user)
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 0
|
||||||
|
end
|
||||||
|
|
||||||
|
test "repeating an activity results in 1 notification, then 0 if the activity is unrepeated" do
|
||||||
|
user = insert(:user)
|
||||||
|
other_user = insert(:user)
|
||||||
|
|
||||||
|
{:ok, activity} = CommonAPI.post(user, %{"status" => "test post"})
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 0
|
||||||
|
|
||||||
|
{:ok, _, _} = CommonAPI.repeat(activity.id, other_user)
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 1
|
||||||
|
|
||||||
|
{:ok, _, _} = CommonAPI.unrepeat(activity.id, other_user)
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 0
|
||||||
|
end
|
||||||
|
|
||||||
|
test "liking an activity which is already deleted does not generate a notification" do
|
||||||
|
user = insert(:user)
|
||||||
|
other_user = insert(:user)
|
||||||
|
|
||||||
|
{:ok, activity} = CommonAPI.post(user, %{"status" => "test post"})
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 0
|
||||||
|
|
||||||
|
{:ok, _deletion_activity} = CommonAPI.delete(activity.id, user)
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 0
|
||||||
|
|
||||||
|
{:error, _} = CommonAPI.favorite(activity.id, other_user)
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 0
|
||||||
|
end
|
||||||
|
|
||||||
|
test "repeating an activity which is already deleted does not generate a notification" do
|
||||||
|
user = insert(:user)
|
||||||
|
other_user = insert(:user)
|
||||||
|
|
||||||
|
{:ok, activity} = CommonAPI.post(user, %{"status" => "test post"})
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 0
|
||||||
|
|
||||||
|
{:ok, _deletion_activity} = CommonAPI.delete(activity.id, user)
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 0
|
||||||
|
|
||||||
|
{:error, _} = CommonAPI.repeat(activity.id, other_user)
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 0
|
||||||
|
end
|
||||||
|
|
||||||
|
test "replying to a deleted post without tagging does not generate a notification" do
|
||||||
|
user = insert(:user)
|
||||||
|
other_user = insert(:user)
|
||||||
|
|
||||||
|
{:ok, activity} = CommonAPI.post(user, %{"status" => "test post"})
|
||||||
|
{:ok, _deletion_activity} = CommonAPI.delete(activity.id, user)
|
||||||
|
|
||||||
|
{:ok, _reply_activity} =
|
||||||
|
CommonAPI.post(other_user, %{
|
||||||
|
"status" => "test reply",
|
||||||
|
"in_reply_to_status_id" => activity.id
|
||||||
|
})
|
||||||
|
|
||||||
|
assert length(Notification.for_user(user)) == 0
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue