diff options
| author | lambda <pleromagit@rogerbraun.net> | 2017-11-12 11:08:06 +0000 | 
|---|---|---|
| committer | lambda <pleromagit@rogerbraun.net> | 2017-11-12 11:08:06 +0000 | 
| commit | 08bc31674218cd7ce634b008b7766b48e49c52e3 (patch) | |
| tree | 59269eca4b0d12c5b1585459e83fdbda2373613b /test | |
| parent | 87dee3902ad84599479f4e4a6b3109551651fb71 (diff) | |
| parent | e6a78c6ed0925c27ea4d194c0e52ab07542c444e (diff) | |
| download | pleroma-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.exs | 61 | ||||
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 71 | 
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) | 
