diff options
| author | Haelwenn <contact+git.pleroma.social@hacktivis.me> | 2019-09-04 10:46:49 +0000 | 
|---|---|---|
| committer | Haelwenn <contact+git.pleroma.social@hacktivis.me> | 2019-09-04 10:46:49 +0000 | 
| commit | e54694748bdcc27a3acd3ff3feac5c0c284d8b0d (patch) | |
| tree | efd329ebcfdd39b2fe4c6592a0d96b10034268e9 /test/web | |
| parent | 46ffd8b3b6359ec796733a8fff5bdb7d03a728d5 (diff) | |
| parent | 328b2612cd957aa3ad810101a20037e4e9843bb0 (diff) | |
| download | pleroma-e54694748bdcc27a3acd3ff3feac5c0c284d8b0d.tar.gz pleroma-e54694748bdcc27a3acd3ff3feac5c0c284d8b0d.zip  | |
Merge branch 'feature/mastoapi-read-notifications' into 'develop'
Extend `/api/pleroma/notifications/read` to mark multiple notifications as read and make it respond with Mastoapi entities
See merge request pleroma/pleroma!1625
Diffstat (limited to 'test/web')
| -rw-r--r-- | test/web/pleroma_api/pleroma_api_controller_test.exs | 56 | ||||
| -rw-r--r-- | test/web/twitter_api/util_controller_test.exs | 32 | 
2 files changed, 56 insertions, 32 deletions
diff --git a/test/web/pleroma_api/pleroma_api_controller_test.exs b/test/web/pleroma_api/pleroma_api_controller_test.exs index ed6b79727..7eaeda4a0 100644 --- a/test/web/pleroma_api/pleroma_api_controller_test.exs +++ b/test/web/pleroma_api/pleroma_api_controller_test.exs @@ -6,6 +6,7 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIControllerTest do    use Pleroma.Web.ConnCase    alias Pleroma.Conversation.Participation +  alias Pleroma.Notification    alias Pleroma.Repo    alias Pleroma.Web.CommonAPI @@ -91,4 +92,59 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIControllerTest do      assert user in participation.recipients      assert other_user in participation.recipients    end + +  describe "POST /api/v1/pleroma/notifications/read" do +    test "it marks a single notification as read", %{conn: conn} do +      user1 = insert(:user) +      user2 = insert(:user) +      {:ok, activity1} = CommonAPI.post(user2, %{"status" => "hi @#{user1.nickname}"}) +      {:ok, activity2} = CommonAPI.post(user2, %{"status" => "hi @#{user1.nickname}"}) +      {:ok, [notification1]} = Notification.create_notifications(activity1) +      {:ok, [notification2]} = Notification.create_notifications(activity2) + +      response = +        conn +        |> assign(:user, user1) +        |> post("/api/v1/pleroma/notifications/read", %{"id" => "#{notification1.id}"}) +        |> json_response(:ok) + +      assert %{"pleroma" => %{"is_seen" => true}} = response +      assert Repo.get(Notification, notification1.id).seen +      refute Repo.get(Notification, notification2.id).seen +    end + +    test "it marks multiple notifications as read", %{conn: conn} do +      user1 = insert(:user) +      user2 = insert(:user) +      {:ok, _activity1} = CommonAPI.post(user2, %{"status" => "hi @#{user1.nickname}"}) +      {:ok, _activity2} = CommonAPI.post(user2, %{"status" => "hi @#{user1.nickname}"}) +      {:ok, _activity3} = CommonAPI.post(user2, %{"status" => "HIE @#{user1.nickname}"}) + +      [notification3, notification2, notification1] = Notification.for_user(user1, %{limit: 3}) + +      [response1, response2] = +        conn +        |> assign(:user, user1) +        |> post("/api/v1/pleroma/notifications/read", %{"max_id" => "#{notification2.id}"}) +        |> json_response(:ok) + +      assert %{"pleroma" => %{"is_seen" => true}} = response1 +      assert %{"pleroma" => %{"is_seen" => true}} = response2 +      assert Repo.get(Notification, notification1.id).seen +      assert Repo.get(Notification, notification2.id).seen +      refute Repo.get(Notification, notification3.id).seen +    end + +    test "it returns error when notification not found", %{conn: conn} do +      user1 = insert(:user) + +      response = +        conn +        |> assign(:user, user1) +        |> post("/api/v1/pleroma/notifications/read", %{"id" => "22222222222222"}) +        |> json_response(:bad_request) + +      assert response == %{"error" => "Cannot get notification"} +    end +  end  end diff --git a/test/web/twitter_api/util_controller_test.exs b/test/web/twitter_api/util_controller_test.exs index fe4ffdb59..cf8e69d2b 100644 --- a/test/web/twitter_api/util_controller_test.exs +++ b/test/web/twitter_api/util_controller_test.exs @@ -5,7 +5,6 @@  defmodule Pleroma.Web.TwitterAPI.UtilControllerTest do    use Pleroma.Web.ConnCase -  alias Pleroma.Notification    alias Pleroma.Repo    alias Pleroma.User    alias Pleroma.Web.CommonAPI @@ -141,37 +140,6 @@ defmodule Pleroma.Web.TwitterAPI.UtilControllerTest do      end    end -  describe "POST /api/pleroma/notifications/read" do -    test "it marks a single notification as read", %{conn: conn} do -      user1 = insert(:user) -      user2 = insert(:user) -      {:ok, activity1} = CommonAPI.post(user2, %{"status" => "hi @#{user1.nickname}"}) -      {:ok, activity2} = CommonAPI.post(user2, %{"status" => "hi @#{user1.nickname}"}) -      {:ok, [notification1]} = Notification.create_notifications(activity1) -      {:ok, [notification2]} = Notification.create_notifications(activity2) - -      conn -      |> assign(:user, user1) -      |> post("/api/pleroma/notifications/read", %{"id" => "#{notification1.id}"}) -      |> json_response(:ok) - -      assert Repo.get(Notification, notification1.id).seen -      refute Repo.get(Notification, notification2.id).seen -    end - -    test "it returns error when notification not found", %{conn: conn} do -      user1 = insert(:user) - -      response = -        conn -        |> assign(:user, user1) -        |> post("/api/pleroma/notifications/read", %{"id" => "22222222222222"}) -        |> json_response(403) - -      assert response == %{"error" => "Cannot get notification"} -    end -  end -    describe "PUT /api/pleroma/notification_settings" do      test "it updates notification settings", %{conn: conn} do        user = insert(:user)  | 
