| 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 |
|
|