summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean <seand7565@gmail.com>2021-04-07 09:29:59 -0500
committerSean <seand7565@gmail.com>2021-04-07 11:41:07 -0500
commit565e8f737146a51b160a3d00c2abd07bc932ca2d (patch)
tree83328c3b949822ebf7b1dac57497c196f3b23904
parent6a150092cdd35008d7ddeee4f8354ff4db088616 (diff)
Reload order during finalize action
If you decorate the subscription generator to change the order in any way (for instance, to associate the order to the subscription), that change is not persisted in the rest of the finalize action, as the order has already been loaded by that point. This can cause massive headaches with validations, so to fix it I've added a reload method before super, so we can ensure that the order is up-to-date before continuing. This also means that subscription_line_items interval is nil, since activating the subscription sets it to nil. So in the spec we're fetching the interval from the subscription instead.
-rw-r--r--app/decorators/models/solidus_subscriptions/spree/order/finalize_creates_subscriptions.rb2
-rw-r--r--spec/decorators/models/solidus_subscriptions/spree/order/finalize_creates_subscriptions_spec.rb2
2 files changed, 3 insertions, 1 deletions
diff --git a/app/decorators/models/solidus_subscriptions/spree/order/finalize_creates_subscriptions.rb b/app/decorators/models/solidus_subscriptions/spree/order/finalize_creates_subscriptions.rb
index 568e5a8..3f83b82 100644
--- a/app/decorators/models/solidus_subscriptions/spree/order/finalize_creates_subscriptions.rb
+++ b/app/decorators/models/solidus_subscriptions/spree/order/finalize_creates_subscriptions.rb
@@ -13,6 +13,8 @@ module SolidusSubscriptions
SolidusSubscriptions::SubscriptionGenerator.activate(line_items)
end
+ reload
+
super
end
end
diff --git a/spec/decorators/models/solidus_subscriptions/spree/order/finalize_creates_subscriptions_spec.rb b/spec/decorators/models/solidus_subscriptions/spree/order/finalize_creates_subscriptions_spec.rb
index 121afbf..0ca34d9 100644
--- a/spec/decorators/models/solidus_subscriptions/spree/order/finalize_creates_subscriptions_spec.rb
+++ b/spec/decorators/models/solidus_subscriptions/spree/order/finalize_creates_subscriptions_spec.rb
@@ -8,7 +8,7 @@ RSpec.describe SolidusSubscriptions::Spree::Order::FinalizeCreatesSubscriptions
let(:order) { create :order, :with_subscription_line_items }
let(:subscription_line_item) { order.subscription_line_items.last }
- let(:expected_actionable_date) { Time.zone.today + subscription_line_item.interval }
+ let(:expected_actionable_date) { Time.zone.today + subscription_line_item.subscription.interval }
around { |e| Timecop.freeze { e.run } }