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
- #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.
20 21 22 |
# File 'lib/pay/fake_processor/subscription.rb', line 20 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
30 31 32 33 34 35 36 |
# File 'lib/pay/fake_processor/subscription.rb', line 30 def cancel(**) 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
38 39 40 41 42 43 44 45 |
# File 'lib/pay/fake_processor/subscription.rb', line 38 def cancel_now!(**) 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
47 48 49 |
# File 'lib/pay/fake_processor/subscription.rb', line 47 def change_quantity(quantity, **) pay_subscription.update(quantity: quantity) end |
#on_grace_period? ⇒ Boolean
51 52 53 |
# File 'lib/pay/fake_processor/subscription.rb', line 51 def on_grace_period? canceled? && Time.current < ends_at end |
#pause ⇒ Object
59 60 61 |
# File 'lib/pay/fake_processor/subscription.rb', line 59 def pause pay_subscription.update(status: :paused, trial_ends_at: Time.current) end |
#paused? ⇒ Boolean
55 56 57 |
# File 'lib/pay/fake_processor/subscription.rb', line 55 def paused? pay_subscription.status == "paused" end |
#resume ⇒ Object
63 64 65 66 67 |
# File 'lib/pay/fake_processor/subscription.rb', line 63 def resume unless on_grace_period? || paused? raise StandardError, "You can only resume subscriptions within their grace period." end end |
#retry_failed_payment ⇒ Object
Retries the latest invoice for a Past Due subscription
74 75 76 |
# File 'lib/pay/fake_processor/subscription.rb', line 74 def retry_failed_payment pay_subscription.update(status: :active) end |
#subscription(**options) ⇒ Object
24 25 26 |
# File 'lib/pay/fake_processor/subscription.rb', line 24 def subscription(**) pay_subscription end |
#swap(plan, **options) ⇒ Object
69 70 71 |
# File 'lib/pay/fake_processor/subscription.rb', line 69 def swap(plan, **) pay_subscription.update(processor_plan: plan, ends_at: nil, status: :active) end |