File size: 3,248 Bytes
6778ee0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | defmodule Plausible.Workers.LockSitesTest do
use Plausible.DataCase, async: true
require Plausible.Billing.Subscription.Status
alias Plausible.Workers.LockSites
alias Plausible.Billing.Subscription
@moduletag :ee_only
test "does not lock enterprise site on grace period" do
user = new_user()
site = new_site(owner: user)
user
|> team_of()
|> Plausible.Teams.start_manual_lock_grace_period()
LockSites.perform(nil)
refute Repo.reload!(site.team).locked
end
test "does not lock trial user's site" do
user = new_user(trial_expiry_date: Date.utc_today() |> Date.shift(day: 1))
site = new_site(owner: user)
LockSites.perform(nil)
refute Repo.reload!(site.team).locked
end
test "locks site for user whose trial has expired" do
user = new_user(trial_expiry_date: Date.utc_today() |> Date.shift(day: -1))
site = new_site(owner: user)
LockSites.perform(nil)
assert Repo.reload!(site.team).locked
end
test "does not lock active subsriber's sites" do
user = new_user() |> subscribe_to_growth_plan(status: Subscription.Status.active())
site = new_site(owner: user)
LockSites.perform(nil)
refute Repo.reload!(site.team).locked
end
test "does not lock user who is past due" do
user = new_user() |> subscribe_to_growth_plan(status: Subscription.Status.past_due())
site = new_site(owner: user)
LockSites.perform(nil)
refute Repo.reload!(site.team).locked
end
test "does not lock user who cancelled subscription but it hasn't expired yet" do
user = new_user() |> subscribe_to_growth_plan(status: Subscription.Status.deleted())
site = new_site(owner: user)
LockSites.perform(nil)
refute Repo.reload!(site.team).locked
end
test "locks user who cancelled subscription and the cancelled subscription has expired" do
user =
new_user(trial_expiry_date: Date.utc_today() |> Date.shift(day: -1))
|> subscribe_to_growth_plan(
status: Subscription.Status.deleted(),
next_bill_date: Date.utc_today() |> Date.shift(day: -1)
)
site = new_site(owner: user)
LockSites.perform(nil)
assert Repo.reload!(site.team).locked
end
test "does not lock if user has an old cancelled subscription and a new active subscription" do
user =
new_user(trial_expiry_date: Date.utc_today() |> Date.shift(day: -1))
|> subscribe_to_growth_plan(
status: Subscription.Status.deleted(),
next_bill_date: Date.utc_today() |> Date.shift(day: -1),
inserted_at: NaiveDateTime.utc_now() |> NaiveDateTime.shift(day: -1)
)
|> subscribe_to_growth_plan(status: Subscription.Status.deleted())
site = new_site(owner: user)
LockSites.perform(nil)
refute Repo.reload!(site.team).locked
end
describe "locking" do
test "only locks sites that the user owns" do
user = new_user(trial_expiry_date: Date.utc_today() |> Date.shift(day: -1))
owner_site = new_site(owner: user)
viewer_site = new_site()
add_guest(viewer_site, user: user, role: :viewer)
LockSites.perform(nil)
assert Repo.reload!(owner_site.team).locked
refute Repo.reload!(viewer_site.team).locked
end
end
end
|