summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorlambda <pleromagit@rogerbraun.net>2017-11-12 11:08:06 +0000
committerlambda <pleromagit@rogerbraun.net>2017-11-12 11:08:06 +0000
commit08bc31674218cd7ce634b008b7766b48e49c52e3 (patch)
tree59269eca4b0d12c5b1585459e83fdbda2373613b /test
parent87dee3902ad84599479f4e4a6b3109551651fb71 (diff)
parente6a78c6ed0925c27ea4d194c0e52ab07542c444e (diff)
downloadpleroma-08bc31674218cd7ce634b008b7766b48e49c52e3.tar.gz
pleroma-08bc31674218cd7ce634b008b7766b48e49c52e3.zip
Merge branch 'mastodon-notification-endpoints' into 'develop'
MastoAPI: Add notification endpoints get, clear and dismiss. Closes #42 See merge request pleroma/pleroma!13
Diffstat (limited to 'test')
-rw-r--r--test/notification_test.exs61
-rw-r--r--test/web/mastodon_api/mastodon_api_controller_test.exs71
2 files changed, 131 insertions, 1 deletions
diff --git a/test/notification_test.exs b/test/notification_test.exs
index 77fdb532f..eee1c9fa3 100644
--- a/test/notification_test.exs
+++ b/test/notification_test.exs
@@ -31,4 +31,65 @@ defmodule Pleroma.NotificationTest do
assert nil == Notification.create_notification(activity, user)
end
end
+
+ describe "get notification" do
+ test "it gets a notification that belongs to the user" do
+ user = insert(:user)
+ other_user = insert(:user)
+
+ {:ok, activity} = TwitterAPI.create_status(user, %{"status" => "hey @#{other_user.nickname}"})
+ {:ok, [notification]} = Notification.create_notifications(activity)
+ {:ok, notification} = Notification.get(other_user, notification.id)
+
+ assert notification.user_id == other_user.id
+ end
+
+ test "it returns error if the notification doesn't belong to the user" do
+ user = insert(:user)
+ other_user = insert(:user)
+
+ {:ok, activity} = TwitterAPI.create_status(user, %{"status" => "hey @#{other_user.nickname}"})
+ {:ok, [notification]} = Notification.create_notifications(activity)
+ {:error, notification} = Notification.get(user, notification.id)
+ end
+ end
+
+ describe "dismiss notification" do
+ test "it dismisses a notification that belongs to the user" do
+ user = insert(:user)
+ other_user = insert(:user)
+
+ {:ok, activity} = TwitterAPI.create_status(user, %{"status" => "hey @#{other_user.nickname}"})
+ {:ok, [notification]} = Notification.create_notifications(activity)
+ {:ok, notification} = Notification.dismiss(other_user, notification.id)
+
+ assert notification.user_id == other_user.id
+ end
+
+ test "it returns error if the notification doesn't belong to the user" do
+ user = insert(:user)
+ other_user = insert(:user)
+
+ {:ok, activity} = TwitterAPI.create_status(user, %{"status" => "hey @#{other_user.nickname}"})
+ {:ok, [notification]} = Notification.create_notifications(activity)
+ {:error, notification} = Notification.dismiss(user, notification.id)
+ end
+ end
+
+ describe "clear notification" do
+ test "it clears all notifications belonging to the user" do
+ user = insert(:user)
+ other_user = insert(:user)
+ third_user = insert(:user)
+
+ {:ok, activity} = TwitterAPI.create_status(user, %{"status" => "hey @#{other_user.nickname} and @#{third_user.nickname} !"})
+ {:ok, _notifs} = Notification.create_notifications(activity)
+ {:ok, activity} = TwitterAPI.create_status(user, %{"status" => "hey again @#{other_user.nickname} and @#{third_user.nickname} !"})
+ {:ok, _notifs} = Notification.create_notifications(activity)
+ Notification.clear(other_user)
+
+ assert Notification.for_user(other_user) == []
+ assert Notification.for_user(third_user) != []
+ end
+ end
end
diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs
index cf60b4a51..f506d56a1 100644
--- a/test/web/mastodon_api/mastodon_api_controller_test.exs
+++ b/test/web/mastodon_api/mastodon_api_controller_test.exs
@@ -2,7 +2,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
use Pleroma.Web.ConnCase
alias Pleroma.Web.TwitterAPI.TwitterAPI
- alias Pleroma.{Repo, User, Activity}
+ alias Pleroma.{Repo, User, Activity, Notification}
alias Pleroma.Web.{OStatus, CommonAPI}
import Pleroma.Factory
@@ -122,6 +122,75 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
end
end
+ describe "notifications" do
+ test "list of notifications", %{conn: conn} do
+ user = insert(:user)
+ other_user = insert(:user)
+
+ {:ok, activity} = TwitterAPI.create_status(other_user, %{"status" => "hi @#{user.nickname}"})
+ {:ok, [notification]} = Notification.create_notifications(activity)
+
+ conn = conn
+ |> assign(:user, user)
+ |> get("/api/v1/notifications")
+
+ expected_response = "hi <a href=\"#{user.ap_id}\">@#{user.nickname}</a>"
+ assert [%{"status" => %{"content" => response}} | _rest] = json_response(conn, 200)
+ assert response == expected_response
+ end
+
+ test "getting a single notification", %{conn: conn} do
+ user = insert(:user)
+ other_user = insert(:user)
+
+ {:ok, activity} = TwitterAPI.create_status(other_user, %{"status" => "hi @#{user.nickname}"})
+ {:ok, [notification]} = Notification.create_notifications(activity)
+
+ conn = conn
+ |> assign(:user, user)
+ |> get("/api/v1/notifications/#{notification.id}")
+
+ expected_response = "hi <a href=\"#{user.ap_id}\">@#{user.nickname}</a>"
+ assert %{"status" => %{"content" => response}} = json_response(conn, 200)
+ assert response == expected_response
+ end
+
+ test "dismissing a single notification", %{conn: conn} do
+ user = insert(:user)
+ other_user = insert(:user)
+
+ {:ok, activity} = TwitterAPI.create_status(other_user, %{"status" => "hi @#{user.nickname}"})
+ {:ok, [notification]} = Notification.create_notifications(activity)
+
+ conn = conn
+ |> assign(:user, user)
+ |> post("/api/v1/notifications/dismiss", %{"id" => notification.id})
+
+ assert %{} = json_response(conn, 200)
+ end
+
+ test "clearing all notifications", %{conn: conn} do
+ user = insert(:user)
+ other_user = insert(:user)
+
+ {:ok, activity} = TwitterAPI.create_status(other_user, %{"status" => "hi @#{user.nickname}"})
+ {:ok, [notification]} = Notification.create_notifications(activity)
+
+ conn = conn
+ |> assign(:user, user)
+ |> post("/api/v1/notifications/clear")
+
+ assert %{} = json_response(conn, 200)
+
+ conn = build_conn()
+ |> assign(:user, user)
+ |> get("/api/v1/notifications")
+
+ assert all = json_response(conn, 200)
+ assert all == []
+ end
+ end
+
describe "reblogging" do
test "reblogs and returns the reblogged status", %{conn: conn} do
activity = insert(:note_activity)