add tests
authorMaksim Pechnikov <parallel588@gmail.com>
Wed, 23 Oct 2019 19:48:04 +0000 (22:48 +0300)
committerMaksim Pechnikov <parallel588@gmail.com>
Wed, 23 Oct 2019 19:48:04 +0000 (22:48 +0300)
lib/pleroma/marker.ex
priv/repo/migrations/20191021113356_add_unread_to_marker.exs
test/marker_test.exs
test/notification_test.exs

index 098fe3bbd9bbd6dc57fe25c681e18add5cc9fe6e..5f6a47f38e9c560fffaf360858ebdd5bf89c4d96 100644 (file)
@@ -58,7 +58,8 @@ defmodule Pleroma.Marker do
             timeline: "notifications",
             user_id: type(^user.id, :string),
             unread_count: fragment("SUM( CASE WHEN seen = false THEN 1 ELSE 0 END )"),
-            last_read_id: type(fragment("MAX( CASE WHEN seen = true THEN id ELSE null END )"), :string)
+            last_read_id:
+              type(fragment("MAX( CASE WHEN seen = true THEN id ELSE null END )"), :string)
           }
         )
 
@@ -77,11 +78,7 @@ defmodule Pleroma.Marker do
     )
   end
 
-  def set_unread_count(%User{} = user, timeline) do
-    Multi.new()
-    |> multi_set_unread_count(user, timeline)
-    |> Repo.transaction()
-  end
+  def multi_set_unread_count(multi, _, _), do: multi
 
   defp get_marker(user, timeline) do
     case Repo.find_resource(get_query(user, timeline)) do
index 964c7fb986726d2638c1a0483e44c969bc93d342..c15e2ff1327b8bba2ffde427761453ec3b569969 100644 (file)
@@ -26,7 +26,8 @@ defmodule Pleroma.Repo.Migrations.AddUnreadToMarker do
         timeline: "notifications",
         user_id: q.user_id,
         unread_count: fragment("SUM( CASE WHEN seen = false THEN 1 ELSE 0 END )"),
-        last_read_id: type(fragment("MAX( CASE WHEN seen = true THEN id ELSE null END )"), :string)
+        last_read_id:
+          type(fragment("MAX( CASE WHEN seen = true THEN id ELSE null END )"), :string)
       },
       group_by: [q.user_id]
     )
index 04bd67fe672028f3d91898e397bd17277a2a716a..1900ed08bfcf6cd473b9ce252e52fccb87d8bd63 100644 (file)
@@ -8,6 +8,21 @@ defmodule Pleroma.MarkerTest do
 
   import Pleroma.Factory
 
+  describe "multi_set_unread_count/3" do
+    test "returns multi" do
+      user = insert(:user)
+
+      assert %Ecto.Multi{
+               operations: [marker: {:run, _}, counters: {:run, _}]
+             } =
+               Marker.multi_set_unread_count(
+                 Ecto.Multi.new(),
+                 user,
+                 "notifications"
+               )
+    end
+  end
+
   describe "get_markers/2" do
     test "returns user markers" do
       user = insert(:user)
index 558ac358ca1e78b70b025d2f359197a614b04233..1e8a9ca986ef7b8b13e8393dfe4b4070e91ad00f 100644 (file)
@@ -31,6 +31,9 @@ defmodule Pleroma.NotificationTest do
       assert notified_ids == [other_user.id, third_user.id]
       assert notification.activity_id == activity.id
       assert other_notification.activity_id == activity.id
+
+      assert [%Pleroma.Marker{unread_count: 2}] =
+               Pleroma.Marker.get_markers(other_user, ["notifications"])
     end
 
     test "it creates a notification for subscribed users" do