forked from mirrors/akkoma
add tests
This commit is contained in:
parent
aa64b3108b
commit
d3fb9e02cc
4 changed files with 23 additions and 7 deletions
|
@ -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
|
||||||
|
|
|
@ -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]
|
||||||
)
|
)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue