defmodule Mobilizon.Service.CleanOldActivityTest do use Mobilizon.DataCase import Mobilizon.Factory alias Mobilizon.{Activities, Config} alias Mobilizon.Service.CleanOldActivity @activity_inserted_at_1 DateTime.from_iso8601("2019-01-02T10:33:39.207493Z") |> elem(1) @activity_inserted_at_2 DateTime.utc_now() setup do group1 = insert(:group) group2 = insert(:group) Config.clear_config_cache() {:ok, group1: group1, group2: group2} end describe "clean old activities" do test "with default settings", %{group1: group1, group2: group2} do create_activities(group1, group2) Config.put([:instance, :activity_expire_days], 100) Config.put([:instance, :activity_keep_number], 5) assert Activities.list_group_activities(group1.id).total == 10 assert Activities.list_group_activities(group2.id).total == 5 assert {:ok, actors: 1, activities: 5} == CleanOldActivity.clean(dry_run: true) assert Activities.list_group_activities(group1.id).total == 10 assert Activities.list_group_activities(group2.id).total == 5 assert {:ok, actors: 1, activities: 5} == CleanOldActivity.clean() assert Activities.list_group_activities(group1.id).total == 5 assert Activities.list_group_activities(group2.id).total == 5 assert {:ok, actors: 0, activities: 0} == CleanOldActivity.clean() assert Activities.list_group_activities(group1.id).total == 5 assert Activities.list_group_activities(group2.id).total == 5 Config.put([:instance, :activity_expire_days], 365) Config.put([:instance, :activity_keep_number], 100) end test "with custom settings", %{group1: group1, group2: group2} do create_activities(group1, group2) assert Activities.list_group_activities(group1.id).total == 10 assert Activities.list_group_activities(group2.id).total == 5 assert {:ok, actors: 1, activities: 5} == CleanOldActivity.clean(grace_period: 100, activity_keep_number: 5, dry_run: true) assert Activities.list_group_activities(group1.id).total == 10 assert Activities.list_group_activities(group2.id).total == 5 assert {:ok, actors: 1, activities: 5} == CleanOldActivity.clean(grace_period: 100, activity_keep_number: 5) assert Activities.list_group_activities(group1.id).total == 5 assert Activities.list_group_activities(group2.id).total == 5 assert {:ok, actors: 0, activities: 0} == CleanOldActivity.clean(grace_period: 100, activity_keep_number: 5) assert Activities.list_group_activities(group1.id).total == 5 assert Activities.list_group_activities(group2.id).total == 5 end end defp create_activities(group1, group2) do Enum.each(1..5, fn _ -> insert(:mobilizon_activity, group: group1, inserted_at: @activity_inserted_at_1) end) Enum.each(1..5, fn _ -> insert(:mobilizon_activity, group: group1, inserted_at: @activity_inserted_at_2) end) Enum.each(1..5, fn _ -> insert(:mobilizon_activity, group: group2, inserted_at: @activity_inserted_at_2) end) end end