diff options
author | Alessio Rocco <alessio.rocco.lt@gmail.com> | 2021-01-15 14:19:44 +0100 |
---|---|---|
committer | Alessio Rocco <alessio.rocco.lt@gmail.com> | 2021-01-22 12:52:36 +0100 |
commit | c6807954d62efe9597a6cda03066f820123f0c6d (patch) | |
tree | 53e36b9386b0524fae7654a5467915e682e230cf | |
parent | 69f0ca038b66d0ca36971405e51c0d3aa916cf19 (diff) |
Fix skip counters to handle skip limits
Increments "skip_count" and "successive_skip_count" Subscription
attributes when SolidusSubscriptions::Subscription#skip is called
so the skip limits are correctly handled.
-rw-r--r-- | app/models/solidus_subscriptions/subscription.rb | 4 | ||||
-rw-r--r-- | spec/models/solidus_subscriptions/subscription_spec.rb | 15 |
2 files changed, 6 insertions, 13 deletions
diff --git a/app/models/solidus_subscriptions/subscription.rb b/app/models/solidus_subscriptions/subscription.rb index 4168973..49bb20b 100644 --- a/app/models/solidus_subscriptions/subscription.rb +++ b/app/models/solidus_subscriptions/subscription.rb @@ -162,6 +162,10 @@ module SolidusSubscriptions return if errors.any? end + increment(:skip_count) + increment(:successive_skip_count) + save! + advance_actionable_date.tap do events.create!(event_type: 'subscription_skipped') end diff --git a/spec/models/solidus_subscriptions/subscription_spec.rb b/spec/models/solidus_subscriptions/subscription_spec.rb index 5d855db..078194e 100644 --- a/spec/models/solidus_subscriptions/subscription_spec.rb +++ b/spec/models/solidus_subscriptions/subscription_spec.rb @@ -137,7 +137,7 @@ RSpec.describe SolidusSubscriptions::Subscription, type: :model do let(:total_skips) { 0 } let(:successive_skips) { 0 } - let(:expected_date) { 1.month.from_now.to_date } + let(:expected_date) { 2.months.from_now.to_date } let(:subscription) do create( @@ -148,18 +148,7 @@ RSpec.describe SolidusSubscriptions::Subscription, type: :model do ) end - around do |e| - successive_skip_limit = SolidusSubscriptions.configuration.maximum_successive_skips - total_skip_limit = SolidusSubscriptions.configuration.maximum_total_skips - - SolidusSubscriptions.configuration.maximum_successive_skips = 1 - SolidusSubscriptions.configuration.maximum_total_skips = 1 - - Timecop.freeze { e.run } - - SolidusSubscriptions.configuration.maximum_successive_skips = successive_skip_limit - SolidusSubscriptions.configuration.maximum_total_skips = total_skip_limit - end + before { stub_config(maximum_total_skips: 1) } context 'when the successive skips have been exceeded' do let(:successive_skips) { 1 } |