Fork of Pleroma with site-specific changes and feature branches https://git.pleroma.social/pleroma/pleroma
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.6KB

  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.StatsTest do
  5. use Pleroma.DataCase
  6. import Pleroma.Factory
  7. alias Pleroma.Web.CommonAPI
  8. describe "user count" do
  9. test "it ignores internal users" do
  10. _user = insert(:user, local: true)
  11. _internal = insert(:user, local: true, nickname: nil)
  12. _internal = Pleroma.Web.ActivityPub.Relay.get_actor()
  13. assert match?(%{stats: %{user_count: 1}}, Pleroma.Stats.calculate_stat_data())
  14. end
  15. end
  16. describe "status visibility count" do
  17. test "on new status" do
  18. user = insert(:user)
  19. other_user = insert(:user)
  20. CommonAPI.post(user, %{visibility: "public", status: "hey"})
  21. Enum.each(0..1, fn _ ->
  22. CommonAPI.post(user, %{
  23. visibility: "unlisted",
  24. status: "hey"
  25. })
  26. end)
  27. Enum.each(0..2, fn _ ->
  28. CommonAPI.post(user, %{
  29. visibility: "direct",
  30. status: "hey @#{other_user.nickname}"
  31. })
  32. end)
  33. Enum.each(0..3, fn _ ->
  34. CommonAPI.post(user, %{
  35. visibility: "private",
  36. status: "hey"
  37. })
  38. end)
  39. assert %{direct: 3, private: 4, public: 1, unlisted: 2} =
  40. Pleroma.Stats.get_status_visibility_count()
  41. end
  42. test "on status delete" do
  43. user = insert(:user)
  44. {:ok, activity} = CommonAPI.post(user, %{visibility: "public", status: "hey"})
  45. assert %{public: 1} = Pleroma.Stats.get_status_visibility_count()
  46. CommonAPI.delete(activity.id, user)
  47. assert %{public: 0} = Pleroma.Stats.get_status_visibility_count()
  48. end
  49. test "on status visibility update" do
  50. user = insert(:user)
  51. {:ok, activity} = CommonAPI.post(user, %{visibility: "public", status: "hey"})
  52. assert %{public: 1, private: 0} = Pleroma.Stats.get_status_visibility_count()
  53. {:ok, _} = CommonAPI.update_activity_scope(activity.id, %{visibility: "private"})
  54. assert %{public: 0, private: 1} = Pleroma.Stats.get_status_visibility_count()
  55. end
  56. test "doesn't count unrelated activities" do
  57. user = insert(:user)
  58. other_user = insert(:user)
  59. {:ok, activity} = CommonAPI.post(user, %{visibility: "public", status: "hey"})
  60. _ = CommonAPI.follow(user, other_user)
  61. CommonAPI.favorite(other_user, activity.id)
  62. CommonAPI.repeat(activity.id, other_user)
  63. assert %{direct: 0, private: 0, public: 1, unlisted: 0} =
  64. Pleroma.Stats.get_status_visibility_count()
  65. end
  66. end
  67. end