mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-08-04 21:15:19 +02:00
Subscription tests and domain (#2209)
* Save work * Subscriptions and trials domain * Store family ID on customer * Remove indirection of stripe calls * Test simplifications * Update brakeman * Fix stripe tests in CI * Update billing page to show subscription details * Remove legacy columns * Complete billing settings page * Fix hardcoded plan name * Handle subscriptions for self hosting mode * Lint fixes
This commit is contained in:
parent
8c10e87387
commit
5da4bb6dc3
40 changed files with 1041 additions and 233 deletions
37
app/models/subscription.rb
Normal file
37
app/models/subscription.rb
Normal file
|
@ -0,0 +1,37 @@
|
|||
class Subscription < ApplicationRecord
|
||||
TRIAL_DAYS = 14
|
||||
|
||||
belongs_to :family
|
||||
|
||||
# https://docs.stripe.com/api/subscriptions/object
|
||||
enum :status, {
|
||||
incomplete: "incomplete",
|
||||
incomplete_expired: "incomplete_expired",
|
||||
trialing: "trialing", # We use this, but "offline" (no through Stripe's interface)
|
||||
active: "active",
|
||||
past_due: "past_due",
|
||||
canceled: "canceled",
|
||||
unpaid: "unpaid",
|
||||
paused: "paused"
|
||||
}
|
||||
|
||||
validates :stripe_id, presence: true, if: :active?
|
||||
validates :trial_ends_at, presence: true, if: :trialing?
|
||||
|
||||
class << self
|
||||
def new_trial_ends_at
|
||||
TRIAL_DAYS.days.from_now
|
||||
end
|
||||
end
|
||||
|
||||
def name
|
||||
case interval
|
||||
when "month"
|
||||
"Monthly Plan"
|
||||
when "year"
|
||||
"Annual Plan"
|
||||
else
|
||||
"Free trial"
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue