diff --git a/Gemfile.lock b/Gemfile.lock index 03f9f8d..ff41def 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -188,4 +188,4 @@ DEPENDENCIES webvalve BUNDLED WITH - 1.17.3 + 2.2.20 diff --git a/app/models/unity/subscription.rb b/app/models/unity/subscription.rb index c7d1a4c..37f6004 100644 --- a/app/models/unity/subscription.rb +++ b/app/models/unity/subscription.rb @@ -35,5 +35,10 @@ def trial_expired? return true unless trial_ends_at.present? trial_ends_at < Time.current end + + def awaiting_cancellation? + active? && + cancellation_date > Time.current + end end end diff --git a/spec/models/unity/subscription_spec.rb b/spec/models/unity/subscription_spec.rb index b662dfb..8bbed6a 100644 --- a/spec/models/unity/subscription_spec.rb +++ b/spec/models/unity/subscription_spec.rb @@ -3,4 +3,22 @@ RSpec.describe Unity::Subscription, type: :model do it { should belong_to :subscription_plan } it { should belong_to Unity.config.user_class.downcase.to_sym } + + context "when cancelling a subscription" do + context "when the subscription is still active" do + + let(:subscription) do + build( + :unity_subscription, + gateway_status: :active, + marked_for_cancellation_at: Time.currents, + cancellation_date: 2.days.from_now, + ) + end + + it "responds true to #awaiting_cancellation?" do + expect(subscription.awaiting_cancellation?).to eq true + end + end + end end