add tests

This commit is contained in:
Maksim Pechnikov 2019-10-23 22:48:04 +03:00
parent aa64b3108b
commit d3fb9e02cc
4 changed files with 23 additions and 7 deletions

View file

@ -58,7 +58,8 @@ defmodule Pleroma.Marker do
timeline: "notifications", timeline: "notifications",
user_id: type(^user.id, :string), user_id: type(^user.id, :string),
unread_count: fragment("SUM( CASE WHEN seen = false THEN 1 ELSE 0 END )"), 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 end
def set_unread_count(%User{} = user, timeline) do def multi_set_unread_count(multi, _, _), do: multi
Multi.new()
|> multi_set_unread_count(user, timeline)
|> Repo.transaction()
end
defp get_marker(user, timeline) do defp get_marker(user, timeline) do
case Repo.find_resource(get_query(user, timeline)) do case Repo.find_resource(get_query(user, timeline)) do

View file

@ -26,7 +26,8 @@ defmodule Pleroma.Repo.Migrations.AddUnreadToMarker do
timeline: "notifications", timeline: "notifications",
user_id: q.user_id, user_id: q.user_id,
unread_count: fragment("SUM( CASE WHEN seen = false THEN 1 ELSE 0 END )"), 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] group_by: [q.user_id]
) )

View file

@ -8,6 +8,21 @@ defmodule Pleroma.MarkerTest do
import Pleroma.Factory 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 describe "get_markers/2" do
test "returns user markers" do test "returns user markers" do
user = insert(:user) user = insert(:user)

View file

@ -31,6 +31,9 @@ defmodule Pleroma.NotificationTest do
assert notified_ids == [other_user.id, third_user.id] assert notified_ids == [other_user.id, third_user.id]
assert notification.activity_id == activity.id assert notification.activity_id == activity.id
assert other_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 end
test "it creates a notification for subscribed users" do test "it creates a notification for subscribed users" do