2019-10-17 05:26:59 -07:00
|
|
|
# Pleroma: A lightweight social networking server
|
|
|
|
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
|
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
|
|
|
defmodule Pleroma.MarkerTest do
|
|
|
|
use Pleroma.DataCase
|
|
|
|
alias Pleroma.Marker
|
|
|
|
|
|
|
|
import Pleroma.Factory
|
|
|
|
|
2019-10-23 12:48:04 -07:00
|
|
|
describe "multi_set_unread_count/3" do
|
|
|
|
test "returns multi" do
|
|
|
|
user = insert(:user)
|
|
|
|
|
|
|
|
assert %Ecto.Multi{
|
|
|
|
operations: [marker: {:run, _}, counters: {:run, _}]
|
|
|
|
} =
|
2020-02-09 22:01:45 -08:00
|
|
|
Marker.multi_set_last_read_id(
|
2019-10-23 12:48:04 -07:00
|
|
|
Ecto.Multi.new(),
|
|
|
|
user,
|
|
|
|
"notifications"
|
|
|
|
)
|
|
|
|
end
|
2019-10-23 23:50:41 -07:00
|
|
|
|
|
|
|
test "return empty multi" do
|
|
|
|
user = insert(:user)
|
|
|
|
multi = Ecto.Multi.new()
|
2020-02-09 22:01:45 -08:00
|
|
|
assert Marker.multi_set_last_read_id(multi, user, "home") == multi
|
2019-10-23 23:50:41 -07:00
|
|
|
end
|
2019-10-23 12:48:04 -07:00
|
|
|
end
|
|
|
|
|
2019-10-17 05:26:59 -07:00
|
|
|
describe "get_markers/2" do
|
|
|
|
test "returns user markers" do
|
2019-11-15 11:10:41 -08:00
|
|
|
user = insert(:user)
|
|
|
|
marker = insert(:marker, user: user)
|
|
|
|
insert(:notification, user: user)
|
|
|
|
insert(:notification, user: user)
|
|
|
|
insert(:marker, timeline: "home", user: user)
|
|
|
|
|
|
|
|
assert Marker.get_markers(
|
|
|
|
user,
|
2020-02-09 22:01:45 -08:00
|
|
|
["notifications"]
|
2019-11-15 11:10:41 -08:00
|
|
|
) == [%Marker{refresh_record(marker) | unread_count: 2}]
|
|
|
|
end
|
2019-10-17 05:26:59 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
describe "upsert/2" do
|
|
|
|
test "creates a marker" do
|
|
|
|
user = insert(:user)
|
|
|
|
|
|
|
|
{:ok, %{"notifications" => %Marker{} = marker}} =
|
|
|
|
Marker.upsert(
|
|
|
|
user,
|
|
|
|
%{"notifications" => %{"last_read_id" => "34"}}
|
|
|
|
)
|
|
|
|
|
|
|
|
assert marker.timeline == "notifications"
|
|
|
|
assert marker.last_read_id == "34"
|
|
|
|
assert marker.lock_version == 0
|
|
|
|
end
|
|
|
|
|
|
|
|
test "updates exist marker" do
|
|
|
|
user = insert(:user)
|
|
|
|
marker = insert(:marker, user: user, last_read_id: "8909")
|
|
|
|
|
|
|
|
{:ok, %{"notifications" => %Marker{}}} =
|
|
|
|
Marker.upsert(
|
|
|
|
user,
|
|
|
|
%{"notifications" => %{"last_read_id" => "9909"}}
|
|
|
|
)
|
|
|
|
|
|
|
|
marker = refresh_record(marker)
|
|
|
|
assert marker.timeline == "notifications"
|
|
|
|
assert marker.last_read_id == "9909"
|
|
|
|
assert marker.lock_version == 0
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|