add test
authorMaksim Pechnikov <parallel588@gmail.com>
Thu, 24 Oct 2019 06:50:41 +0000 (09:50 +0300)
committerMaksim Pechnikov <parallel588@gmail.com>
Thu, 24 Oct 2019 09:17:50 +0000 (12:17 +0300)
lib/pleroma/marker.ex
lib/pleroma/notification.ex
test/marker_test.exs

index 5f6a47f38e9c560fffaf360858ebdd5bf89c4d96..a7ea542dd009b8be54452dc0e379c6691dbc82e3 100644 (file)
@@ -51,19 +51,7 @@ defmodule Pleroma.Marker do
   def multi_set_unread_count(multi, %User{} = user, "notifications") do
     multi
     |> Multi.run(:counters, fn _repo, _changes ->
-      query =
-        from(q in Pleroma.Notification,
-          where: q.user_id == ^user.id,
-          select: %{
-            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)
-          }
-        )
-
-      {:ok, Repo.one(query)}
+      {:ok, Repo.one(Pleroma.Notification.notifications_info_query(user))}
     end)
     |> Multi.insert(
       :marker,
index af56cc667504087c4820513c505f3c286c876880..373f9b06a85b7f2771be63ab45e217d61f4313f9 100644 (file)
@@ -36,6 +36,20 @@ defmodule Pleroma.Notification do
     |> cast(attrs, [:seen])
   end
 
+  @spec notifications_info_query(User.t()) :: Ecto.Queryable.t()
+  def notifications_info_query(user) do
+    from(q in Pleroma.Notification,
+      where: q.user_id == ^user.id,
+      select: %{
+        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)
+      }
+    )
+  end
+
   def for_user_query(user, opts \\ []) do
     Notification
     |> where(user_id: ^user.id)
index 1900ed08bfcf6cd473b9ce252e52fccb87d8bd63..5d03db48ef1c7b42ec83ee08d8f2df37419012e5 100644 (file)
@@ -21,6 +21,12 @@ defmodule Pleroma.MarkerTest do
                  "notifications"
                )
     end
+
+    test "return empty multi" do
+      user = insert(:user)
+      multi = Ecto.Multi.new()
+      assert Marker.multi_set_unread_count(multi, user, "home") == multi
+    end
   end
 
   describe "get_markers/2" do