Class: Pay::FakeProcessor::Subscription
- Inherits:
-
Object
- Object
- Pay::FakeProcessor::Subscription
- Defined in:
- lib/pay/fake_processor/subscription.rb
Instance Attribute Summary collapse
-
#pay_subscription ⇒ Object
readonly
Returns the value of attribute pay_subscription.
Instance Method Summary collapse
-
#cancel(**options) ⇒ Object
With trial, sets end to trial end (mimicing Stripe) Without trial, sets can ends_at to end of month.
- #cancel_now!(**options) ⇒ Object
- #change_quantity(quantity, **options) ⇒ Object
-
#initialize(pay_subscription) ⇒ Subscription
constructor
A new instance of Subscription.
- #on_grace_period? ⇒ Boolean
- #pause ⇒ Object
- #paused? ⇒ Boolean
- #resumable? ⇒ Boolean
- #resume ⇒ Object
-
#retry_failed_payment ⇒ Object
Retries the latest invoice for a Past Due subscription.
- #subscription(**options) ⇒ Object
- #swap(plan, **options) ⇒ Object
Constructor Details
#initialize(pay_subscription) ⇒ Subscription
Returns a new instance of Subscription.
21 22 23 |
# File 'lib/pay/fake_processor/subscription.rb', line 21 def initialize(pay_subscription) @pay_subscription = pay_subscription end |
Instance Attribute Details
#pay_subscription ⇒ Object (readonly)
Returns the value of attribute pay_subscription.
4 5 6 |
# File 'lib/pay/fake_processor/subscription.rb', line 4 def pay_subscription @pay_subscription end |
Instance Method Details
#cancel(**options) ⇒ Object
With trial, sets end to trial end (mimicing Stripe) Without trial, sets can ends_at to end of month
31 32 33 34 35 36 37 38 39 |
# File 'lib/pay/fake_processor/subscription.rb', line 31 def cancel(**) return if canceled? if pay_subscription.on_trial? pay_subscription.update(ends_at: pay_subscription.trial_ends_at) else pay_subscription.update(ends_at: Time.current.end_of_month) end end |
#cancel_now!(**options) ⇒ Object
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/pay/fake_processor/subscription.rb', line 41 def cancel_now!(**) return if canceled? ends_at = Time.current pay_subscription.update( status: :canceled, trial_ends_at: (ends_at if pay_subscription.trial_ends_at?), ends_at: ends_at ) end |
#change_quantity(quantity, **options) ⇒ Object
52 53 54 |
# File 'lib/pay/fake_processor/subscription.rb', line 52 def change_quantity(quantity, **) pay_subscription.update(quantity: quantity) end |
#on_grace_period? ⇒ Boolean
56 57 58 |
# File 'lib/pay/fake_processor/subscription.rb', line 56 def on_grace_period? ends_at? && ends_at > Time.current end |
#pause ⇒ Object
64 65 66 |
# File 'lib/pay/fake_processor/subscription.rb', line 64 def pause pay_subscription.update(status: :paused, trial_ends_at: Time.current) end |
#paused? ⇒ Boolean
60 61 62 |
# File 'lib/pay/fake_processor/subscription.rb', line 60 def paused? pay_subscription.status == "paused" end |
#resumable? ⇒ Boolean
68 69 70 |
# File 'lib/pay/fake_processor/subscription.rb', line 68 def resumable? on_grace_period? || paused? end |
#resume ⇒ Object
72 73 74 75 76 77 78 |
# File 'lib/pay/fake_processor/subscription.rb', line 72 def resume unless resumable? raise StandardError, "You can only resume subscriptions within their grace period." end pay_subscription.update(status: :active, trial_ends_at: nil, ends_at: nil) end |
#retry_failed_payment ⇒ Object
Retries the latest invoice for a Past Due subscription
85 86 87 |
# File 'lib/pay/fake_processor/subscription.rb', line 85 def retry_failed_payment pay_subscription.update(status: :active) end |
#subscription(**options) ⇒ Object
25 26 27 |
# File 'lib/pay/fake_processor/subscription.rb', line 25 def subscription(**) pay_subscription end |
#swap(plan, **options) ⇒ Object
80 81 82 |
# File 'lib/pay/fake_processor/subscription.rb', line 80 def swap(plan, **) pay_subscription.update(processor_plan: plan, ends_at: nil, status: :active) end |