Merge develop
[akkoma] / test / notification_test.exs
index 9ac6925c3a5ce24e80b71a446a6c3947bc2593b5..b25239fd022f8d6207abdffd7b57bcf4a916c801 100644 (file)
@@ -179,17 +179,19 @@ defmodule Pleroma.NotificationTest do
   describe "create_notification" do
     @tag needs_streamer: true
     test "it creates a notification for user and send to the 'user' and the 'user:notification' stream" do
-      user = insert(:user)
+      %{user: user, token: oauth_token} = oauth_access(["read"])
 
       task =
         Task.async(fn ->
-          Streamer.get_topic_and_add_socket("user", user)
+          {:ok, _topic} = Streamer.get_topic_and_add_socket("user", user, oauth_token)
           assert_receive {:render_with_user, _, _, _}, 4_000
         end)
 
       task_user_notification =
         Task.async(fn ->
-          Streamer.get_topic_and_add_socket("user:notification", user)
+          {:ok, _topic} =
+            Streamer.get_topic_and_add_socket("user:notification", user, oauth_token)
+
           assert_receive {:render_with_user, _, _, _}, 4_000
         end)
 
@@ -217,14 +219,17 @@ defmodule Pleroma.NotificationTest do
       muter = Repo.get(User, muter.id)
       {:ok, activity} = CommonAPI.post(muted, %{status: "Hi @#{muter.nickname}"})
 
-      assert Notification.create_notification(activity, muter)
+      notification = Notification.create_notification(activity, muter)
+
+      assert notification.id
+      assert notification.seen
     end
 
     test "notification created if user is muted without notifications" do
       muter = insert(:user)
       muted = insert(:user)
 
-      {:ok, _user_relationships} = User.mute(muter, muted, false)
+      {:ok, _user_relationships} = User.mute(muter, muted, %{notifications: false})
 
       {:ok, activity} = CommonAPI.post(muted, %{status: "Hi @#{muter.nickname}"})
 
@@ -243,52 +248,24 @@ defmodule Pleroma.NotificationTest do
           in_reply_to_status_id: activity.id
         })
 
-      assert Notification.create_notification(activity, muter)
-    end
-
-    test "it disables notifications from followers" do
-      follower = insert(:user)
-
-      followed =
-        insert(:user, notification_settings: %Pleroma.User.NotificationSetting{followers: false})
+      notification = Notification.create_notification(activity, muter)
 
-      User.follow(follower, followed)
-      {:ok, activity} = CommonAPI.post(follower, %{status: "hey @#{followed.nickname}"})
-      refute Notification.create_notification(activity, followed)
+      assert notification.id
+      assert notification.seen
     end
 
-    test "it disables notifications from non-followers" do
+    test "it disables notifications from strangers" do
       follower = insert(:user)
 
       followed =
         insert(:user,
-          notification_settings: %Pleroma.User.NotificationSetting{non_followers: false}
+          notification_settings: %Pleroma.User.NotificationSetting{block_from_strangers: true}
         )
 
       {:ok, activity} = CommonAPI.post(follower, %{status: "hey @#{followed.nickname}"})
       refute Notification.create_notification(activity, followed)
     end
 
-    test "it disables notifications from people the user follows" do
-      follower =
-        insert(:user, notification_settings: %Pleroma.User.NotificationSetting{follows: false})
-
-      followed = insert(:user)
-      User.follow(follower, followed)
-      follower = Repo.get(User, follower.id)
-      {:ok, activity} = CommonAPI.post(followed, %{status: "hey @#{follower.nickname}"})
-      refute Notification.create_notification(activity, follower)
-    end
-
-    test "it disables notifications from people the user does not follow" do
-      follower =
-        insert(:user, notification_settings: %Pleroma.User.NotificationSetting{non_follows: false})
-
-      followed = insert(:user)
-      {:ok, activity} = CommonAPI.post(followed, %{status: "hey @#{follower.nickname}"})
-      refute Notification.create_notification(activity, follower)
-    end
-
     test "it doesn't create a notification for user if he is the activity author" do
       activity = insert(:note_activity)
       author = User.get_cached_by_ap_id(activity.data["actor"])
@@ -332,9 +309,9 @@ defmodule Pleroma.NotificationTest do
       User.subscribe(subscriber, user)
       insert(:filter, user: subscriber, phrase: "cofe", hide: true)
 
-      {:ok, status} = CommonAPI.post(user, %{"status" => "got cofe?"})
+      {:ok, status} = CommonAPI.post(user, %{status: "got cofe?"})
 
-      assert {:ok, [nil]} == Notification.create_notifications(status)
+      assert {:ok, []} == Notification.create_notifications(status)
     end
 
     test "it creates notifications if content matches with a not irreversible filter" do
@@ -344,10 +321,11 @@ defmodule Pleroma.NotificationTest do
       User.subscribe(subscriber, user)
       insert(:filter, user: subscriber, phrase: "cofe", hide: false)
 
-      {:ok, status} = CommonAPI.post(user, %{"status" => "got cofe?"})
+      {:ok, status} = CommonAPI.post(user, %{status: "got cofe?"})
       {:ok, [notification]} = Notification.create_notifications(status)
 
       assert notification
+      refute notification.seen
     end
 
     test "it creates notifications when someone likes user's status with a filtered word" do
@@ -355,12 +333,13 @@ defmodule Pleroma.NotificationTest do
       other_user = insert(:user)
       insert(:filter, user: user, phrase: "tesla", hide: true)
 
-      {:ok, activity_one} = CommonAPI.post(user, %{"status" => "wow tesla"})
-      {:ok, activity_two, _} = CommonAPI.favorite(activity_one.id, other_user)
+      {:ok, activity_one} = CommonAPI.post(user, %{status: "wow tesla"})
+      {:ok, activity_two} = CommonAPI.favorite(other_user, activity_one.id)
 
       {:ok, [notification]} = Notification.create_notifications(activity_two)
 
       assert notification
+      refute notification.seen
     end
   end
 
@@ -1036,13 +1015,14 @@ defmodule Pleroma.NotificationTest do
 
     test "it returns notifications for muted user without notifications", %{user: user} do
       muted = insert(:user)
-      {:ok, _user_relationships} = User.mute(user, muted, false)
+      {:ok, _user_relationships} = User.mute(user, muted, %{notifications: false})
 
       {:ok, _activity} = CommonAPI.post(muted, %{status: "hey @#{user.nickname}"})
 
       [notification] = Notification.for_user(user)
 
       assert notification.activity.object
+      assert notification.seen
     end
 
     test "it doesn't return notifications for muted user with notifications", %{user: user} do
@@ -1133,21 +1113,20 @@ defmodule Pleroma.NotificationTest do
       assert length(Notification.for_user(user, %{with_muted: true})) == 1
     end
 
-    test "it doesn't return notifications about mentiones with filtered word", %{user: user} do
+    test "it doesn't return notifications about mentions with filtered word", %{user: user} do
       insert(:filter, user: user, phrase: "cofe", hide: true)
       another_user = insert(:user)
 
-      {:ok, _activity} =
-        CommonAPI.post(another_user, %{"status" => "@#{user.nickname} got cofe?"})
+      {:ok, _activity} = CommonAPI.post(another_user, %{status: "@#{user.nickname} got cofe?"})
 
       assert Enum.empty?(Notification.for_user(user))
     end
 
-    test "it returns notifications about mentiones with not hidden filtered word", %{user: user} do
+    test "it returns notifications about mentions with not hidden filtered word", %{user: user} do
       insert(:filter, user: user, phrase: "test", hide: false)
       another_user = insert(:user)
 
-      {:ok, _activity} = CommonAPI.post(another_user, %{"status" => "@#{user.nickname} test"})
+      {:ok, _} = CommonAPI.post(another_user, %{status: "@#{user.nickname} test"})
 
       assert length(Notification.for_user(user)) == 1
     end
@@ -1156,8 +1135,8 @@ defmodule Pleroma.NotificationTest do
       insert(:filter, user: user, phrase: "cofe", hide: true)
       another_user = insert(:user)
 
-      {:ok, activity} = CommonAPI.post(user, %{"status" => "Give me my cofe!"})
-      {:ok, _, _} = CommonAPI.favorite(activity.id, another_user)
+      {:ok, activity} = CommonAPI.post(user, %{status: "Give me my cofe!"})
+      {:ok, _} = CommonAPI.favorite(another_user, activity.id)
 
       assert length(Notification.for_user(user)) == 1
     end