98 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			98 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
 |