Sha256: cec2912dfc82726b3aa9d3dfe4fcebef35d3860fdc56a38d7d0e949abf226d4b

Contents?: true

Size: 1.61 KB

Versions: 13

Compression:

Stored size: 1.61 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(**options)
        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!(**options)
        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

      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

      def change_quantity(quantity)
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
pay-5.0.4 lib/pay/fake_processor/subscription.rb
pay-5.0.3 lib/pay/fake_processor/subscription.rb
pay-5.0.2 lib/pay/fake_processor/subscription.rb
pay-5.0.1 lib/pay/fake_processor/subscription.rb
pay-5.0.0 lib/pay/fake_processor/subscription.rb
pay-4.2.1 lib/pay/fake_processor/subscription.rb
pay-4.2.0 lib/pay/fake_processor/subscription.rb
pay-4.1.1 lib/pay/fake_processor/subscription.rb
pay-4.1.0 lib/pay/fake_processor/subscription.rb
pay-4.0.4 lib/pay/fake_processor/subscription.rb
pay-4.0.2 lib/pay/fake_processor/subscription.rb
pay-4.0.1 lib/pay/fake_processor/subscription.rb
pay-4.0.0 lib/pay/fake_processor/subscription.rb