summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessio Rocco <alessio.rocco.lt@gmail.com>2021-01-15 14:19:44 +0100
committerAlessio Rocco <alessio.rocco.lt@gmail.com>2021-01-22 12:52:36 +0100
commitc6807954d62efe9597a6cda03066f820123f0c6d (patch)
tree53e36b9386b0524fae7654a5467915e682e230cf
parent69f0ca038b66d0ca36971405e51c0d3aa916cf19 (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.rb4
-rw-r--r--spec/models/solidus_subscriptions/subscription_spec.rb15
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 }