diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/notification_test.exs | 121 | ||||
-rw-r--r-- | test/web/common_api/common_api_test.exs | 11 | ||||
-rw-r--r-- | test/web/common_api/common_api_utils_test.exs | 23 |
3 files changed, 155 insertions, 0 deletions
diff --git a/test/notification_test.exs b/test/notification_test.exs index 2ca1ac13d..d86b5c1ab 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -1,6 +1,7 @@ defmodule Pleroma.NotificationTest do use Pleroma.DataCase alias Pleroma.Web.TwitterAPI.TwitterAPI + alias Pleroma.Web.CommonAPI alias Pleroma.{User, Notification} import Pleroma.Factory @@ -119,4 +120,124 @@ defmodule Pleroma.NotificationTest do assert Notification.for_user(third_user) != [] 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 diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index a5da271b3..2a2c40833 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -1,6 +1,7 @@ defmodule Pleroma.Web.CommonAPI.Test do use Pleroma.DataCase alias Pleroma.Web.CommonAPI + alias Pleroma.User import Pleroma.Factory @@ -10,4 +11,14 @@ defmodule Pleroma.Web.CommonAPI.Test do assert activity.data["object"]["tag"] == ["2hu"] end + + test "it adds emoji when updating profiles" do + user = insert(:user, %{name: ":karjalanpiirakka:"}) + + CommonAPI.update(user) + user = User.get_cached_by_ap_id(user.ap_id) + [karjalanpiirakka] = user.info["source_data"]["tag"] + + assert karjalanpiirakka["name"] == ":karjalanpiirakka:" + end end diff --git a/test/web/common_api/common_api_utils_test.exs b/test/web/common_api/common_api_utils_test.exs index f39472ee3..b01ce04f8 100644 --- a/test/web/common_api/common_api_utils_test.exs +++ b/test/web/common_api/common_api_utils_test.exs @@ -1,5 +1,6 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do alias Pleroma.Web.CommonAPI.Utils + alias Pleroma.Web.Endpoint alias Pleroma.Builders.{UserBuilder} use Pleroma.DataCase @@ -29,4 +30,26 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do assert Utils.confirm_current_password(user, "test") == {:ok, user} end end + + test "parses emoji from name and bio" do + {:ok, user} = UserBuilder.insert(%{name: ":karjalanpiirakka:", bio: ":perkele:"}) + + expected = [ + %{ + "type" => "Emoji", + "icon" => %{"type" => "Image", "url" => "#{Endpoint.url()}/finmoji/128px/perkele-128.png"}, + "name" => ":perkele:" + }, + %{ + "type" => "Emoji", + "icon" => %{ + "type" => "Image", + "url" => "#{Endpoint.url()}/finmoji/128px/karjalanpiirakka-128.png" + }, + "name" => ":karjalanpiirakka:" + } + ] + + assert expected == Utils.emoji_from_profile(user) + end end |