defmodule Plausible.Workers.CleanUserSessionsTest do use Plausible.DataCase alias Plausible.Auth.UserSession alias Plausible.Workers.CleanUserSessions test "cleans invitation that is more than timeout_at + grace_period days old" do grace_cutoff = NaiveDateTime.utc_now(:second) |> NaiveDateTime.shift(Duration.negate(UserSession.timeout_duration())) |> NaiveDateTime.shift(CleanUserSessions.grace_period_duration()) ten_days_after = NaiveDateTime.shift(grace_cutoff, day: 10) one_day_after = NaiveDateTime.shift(grace_cutoff, day: 1) one_day_before = NaiveDateTime.shift(grace_cutoff, day: -1) session_to_clean = insert_session(one_day_before) session_to_leave1 = insert_session(one_day_after) session_to_leave2 = insert_session(ten_days_after) CleanUserSessions.perform(nil) refute Repo.reload(session_to_clean) assert Repo.reload(session_to_leave1) assert Repo.reload(session_to_leave2) end defp insert_session(now) do user = insert(:user) user |> UserSession.new_session("Unknown", now) |> Repo.insert!() end end