From 0a29679afa335040dcc0257241cef055b15a07a7 Mon Sep 17 00:00:00 2001 From: RobertJoonas <56999674+RobertJoonas@users.noreply.github.com> Date: Mon, 15 Jan 2024 16:24:22 +0000 Subject: [PATCH] Stop expecting `trial_expiry_date` to exist on upgrade (#3688) * stop expecting trial_expiry_date to exist on upgrade * add test --- lib/plausible_web/components/billing/plan_box.ex | 11 ++++++----- test/plausible_web/live/choose_plan_test.exs | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/lib/plausible_web/components/billing/plan_box.ex b/lib/plausible_web/components/billing/plan_box.ex index 9775291f8..37e21b407 100644 --- a/lib/plausible_web/components/billing/plan_box.ex +++ b/lib/plausible_web/components/billing/plan_box.ex @@ -208,13 +208,14 @@ defmodule PlausibleWeb.Components.Billing.PlanBox do end defp usage_within_plan_limits?(%{usage: usage, user: user, plan_to_render: plan}) do - # At this point, the user is guaranteed to have a `trial_expiry_date`. - # Otherwise, they'd be ineligible for an upgrade and this function - # would never be called. - %Date{} = user.trial_expiry_date + # At this point, the user is *not guaranteed* to have a `trial_expiry_date`, + # because in the past we've let users upgrade without that constraint, as + # well as transfer sites to those accounts. to these accounts we won't be + # offering an extra pageview limit allowance margin though. + invited_user? = is_nil(user.trial_expiry_date) trial_active_or_ended_recently? = - Timex.diff(Timex.today(), user.trial_expiry_date, :days) <= 10 + not invited_user? && Timex.diff(Timex.today(), user.trial_expiry_date, :days) <= 10 limit_checking_opts = cond do diff --git a/test/plausible_web/live/choose_plan_test.exs b/test/plausible_web/live/choose_plan_test.exs index e8a034cee..a463cdbdc 100644 --- a/test/plausible_web/live/choose_plan_test.exs +++ b/test/plausible_web/live/choose_plan_test.exs @@ -754,6 +754,21 @@ defmodule PlausibleWeb.Live.ChoosePlanTest do refute enterprise_box =~ "10+ team members" refute enterprise_box =~ "Unlimited team members" end + + test "allows to upgrade without a trial_expiry_date when the user owns a site", %{ + conn: conn, + user: user + } do + user + |> Plausible.Auth.User.changeset(%{trial_expiry_date: nil}) + |> Repo.update!() + + {:ok, lv, _doc} = get_liveview(conn) + doc = set_slider(lv, "100k") + + refute class_of_element(doc, @growth_checkout_button) =~ "pointer-events-none" + refute class_of_element(doc, @business_checkout_button) =~ "pointer-events-none" + end end describe "for a free_10k subscription" do