forked from AkkomaGang/akkoma
99 lines
3.1 KiB
Elixir
99 lines
3.1 KiB
Elixir
|
# Pleroma: A lightweight social networking server
|
||
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||
|
|
||
|
defmodule Pleroma.AnnouncementTest do
|
||
|
alias Pleroma.Announcement
|
||
|
|
||
|
use Pleroma.DataCase, async: true
|
||
|
|
||
|
import Pleroma.Factory
|
||
|
|
||
|
describe "list_all_visible_when/1" do
|
||
|
setup do: {:ok, time: NaiveDateTime.utc_now()}
|
||
|
|
||
|
test "with no start or end time", %{time: time} do
|
||
|
_announcement = insert(:announcement)
|
||
|
|
||
|
assert [_] = Announcement.list_all_visible_when(time)
|
||
|
end
|
||
|
|
||
|
test "with start time before current", %{time: time} do
|
||
|
before_now = NaiveDateTime.add(time, -10, :second)
|
||
|
|
||
|
_announcement = insert(:announcement, %{starts_at: before_now})
|
||
|
|
||
|
assert [_] = Announcement.list_all_visible_when(time)
|
||
|
end
|
||
|
|
||
|
test "with start time after current", %{time: time} do
|
||
|
after_now = NaiveDateTime.add(time, 10, :second)
|
||
|
|
||
|
_announcement = insert(:announcement, %{starts_at: after_now})
|
||
|
|
||
|
assert [] = Announcement.list_all_visible_when(time)
|
||
|
end
|
||
|
|
||
|
test "with end time after current", %{time: time} do
|
||
|
after_now = NaiveDateTime.add(time, 10, :second)
|
||
|
|
||
|
_announcement = insert(:announcement, %{ends_at: after_now})
|
||
|
|
||
|
assert [_] = Announcement.list_all_visible_when(time)
|
||
|
end
|
||
|
|
||
|
test "with end time before current", %{time: time} do
|
||
|
before_now = NaiveDateTime.add(time, -10, :second)
|
||
|
|
||
|
_announcement = insert(:announcement, %{ends_at: before_now})
|
||
|
|
||
|
assert [] = Announcement.list_all_visible_when(time)
|
||
|
end
|
||
|
|
||
|
test "with both start and end time", %{time: time} do
|
||
|
before_now = NaiveDateTime.add(time, -10, :second)
|
||
|
after_now = NaiveDateTime.add(time, 10, :second)
|
||
|
|
||
|
_announcement = insert(:announcement, %{starts_at: before_now, ends_at: after_now})
|
||
|
|
||
|
assert [_] = Announcement.list_all_visible_when(time)
|
||
|
end
|
||
|
|
||
|
test "with both start and end time, current not in the range", %{time: time} do
|
||
|
before_now = NaiveDateTime.add(time, -10, :second)
|
||
|
after_now = NaiveDateTime.add(time, 10, :second)
|
||
|
|
||
|
_announcement = insert(:announcement, %{starts_at: after_now, ends_at: before_now})
|
||
|
|
||
|
assert [] = Announcement.list_all_visible_when(time)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "announcements formatting" do
|
||
|
test "it formats links" do
|
||
|
raw = "something on https://pleroma.social ."
|
||
|
announcement = insert(:announcement, %{data: %{"content" => raw}})
|
||
|
|
||
|
assert announcement.rendered["content"] =~ ~r(<a.+?https://pleroma.social)
|
||
|
assert announcement.data["content"] == raw
|
||
|
end
|
||
|
|
||
|
test "it formats mentions" do
|
||
|
user = insert(:user)
|
||
|
raw = "something on @#{user.nickname} ."
|
||
|
announcement = insert(:announcement, %{data: %{"content" => raw}})
|
||
|
|
||
|
assert announcement.rendered["content"] =~ ~r(<a.+?#{user.nickname})
|
||
|
assert announcement.data["content"] == raw
|
||
|
end
|
||
|
|
||
|
test "it formats tags" do
|
||
|
raw = "something on #mew ."
|
||
|
announcement = insert(:announcement, %{data: %{"content" => raw}})
|
||
|
|
||
|
assert announcement.rendered["content"] =~ ~r(<a.+?#mew)
|
||
|
assert announcement.data["content"] == raw
|
||
|
end
|
||
|
end
|
||
|
end
|