# Pleroma: A lightweight social networking server # Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.StateTest do use Pleroma.DataCase import Pleroma.Factory alias Pleroma.Web.CommonAPI describe "status visibility count" do test "on new status" do user = insert(:user) other_user = insert(:user) CommonAPI.post(user, %{"visibility" => "public", "status" => "hey"}) Enum.each(0..1, fn _ -> CommonAPI.post(user, %{ "visibility" => "unlisted", "status" => "hey" }) end) Enum.each(0..2, fn _ -> CommonAPI.post(user, %{ "visibility" => "direct", "status" => "hey @#{other_user.nickname}" }) end) Enum.each(0..3, fn _ -> CommonAPI.post(user, %{ "visibility" => "private", "status" => "hey" }) end) assert %{direct: 3, private: 4, public: 1, unlisted: 2} = Pleroma.Stats.get_status_visibility_count() end test "on status delete" do user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{"visibility" => "public", "status" => "hey"}) assert %{public: 1} = Pleroma.Stats.get_status_visibility_count() CommonAPI.delete(activity.id, user) assert %{public: 0} = Pleroma.Stats.get_status_visibility_count() end test "on status visibility update" do user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{"visibility" => "public", "status" => "hey"}) assert %{public: 1, private: 0} = Pleroma.Stats.get_status_visibility_count() {:ok, _} = CommonAPI.update_activity_scope(activity.id, %{"visibility" => "private"}) assert %{public: 0, private: 1} = Pleroma.Stats.get_status_visibility_count() end test "doesn't count unrelated activities" do user = insert(:user) other_user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{"visibility" => "public", "status" => "hey"}) _ = CommonAPI.follow(user, other_user) CommonAPI.favorite(activity.id, other_user) CommonAPI.repeat(activity.id, other_user) assert %{direct: 0, private: 0, public: 1, unlisted: 0} = Pleroma.Stats.get_status_visibility_count() end end end