Sha256: 1c80cfc9d9f2ef8c3f8c2e5916fc4c5a7ac9989e254d0f4ea3b72e056a28e165

Contents?: true

Size: 1.42 KB

Versions: 23

Compression:

Stored size: 1.42 KB

Contents

module Pay
  module FakeProcessor
    class Subscription
      attr_reader :pay_subscription

      delegate :canceled?,
        :ends_at,
        :on_trial?,
        :owner,
        :processor_subscription,
        :processor_id,
        :prorate,
        :processor_plan,
        :quantity?,
        :quantity,
        to: :pay_subscription

      def initialize(pay_subscription)
        @pay_subscription = pay_subscription
      end

      def subscription(**options)
        pay_subscription
      end

      # With trial, sets end to trial end (mimicing Stripe)
      # Without trial, sets can ends_at to end of month
      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

      def cancel_now!
        pay_subscription.update(ends_at: Time.current, status: :canceled)
      end

      def on_grace_period?
        canceled? && Time.current < ends_at
      end

      def paused?
        pay_subscription.status == "paused"
      end

      def pause
        pay_subscription.update(status: :paused, trial_ends_at: Time.current)
      end

      def resume
        unless on_grace_period? || paused?
          raise StandardError, "You can only resume subscriptions within their grace period."
        end
      end

      def swap(plan)
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
pay-3.0.23 lib/pay/fake_processor/subscription.rb
pay-3.0.22 lib/pay/fake_processor/subscription.rb
pay-3.0.21 lib/pay/fake_processor/subscription.rb
pay-3.0.20 lib/pay/fake_processor/subscription.rb
pay-3.0.19 lib/pay/fake_processor/subscription.rb
pay-3.0.18 lib/pay/fake_processor/subscription.rb
pay-3.0.17 lib/pay/fake_processor/subscription.rb
pay-3.0.16 lib/pay/fake_processor/subscription.rb
pay-3.0.15 lib/pay/fake_processor/subscription.rb
pay-3.0.14 lib/pay/fake_processor/subscription.rb
pay-3.0.13 lib/pay/fake_processor/subscription.rb
pay-3.0.12 lib/pay/fake_processor/subscription.rb
pay-3.0.11 lib/pay/fake_processor/subscription.rb
pay-3.0.10 lib/pay/fake_processor/subscription.rb
pay-3.0.9 lib/pay/fake_processor/subscription.rb
pay-3.0.8 lib/pay/fake_processor/subscription.rb
pay-3.0.7 lib/pay/fake_processor/subscription.rb
pay-3.0.6 lib/pay/fake_processor/subscription.rb
pay-3.0.5 lib/pay/fake_processor/subscription.rb
pay-3.0.4 lib/pay/fake_processor/subscription.rb