summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMattia Roccoberton <mattiaroccoberton@nebulab.it>2021-02-12 17:00:24 +0100
committerMattia Roccoberton <mattiaroccoberton@nebulab.it>2021-02-12 17:24:45 +0100
commit98584242ab88c2e6803c3fee864ede6219477785 (patch)
tree5b41cae3f35de6939037ebb62f719a76630df31f
parente526705dcbccf1255ea4b4646a6aabededf08fc7 (diff)
Cleanup the duplicated fields on subscription creation
-rw-r--r--lib/solidus_subscriptions/subscription_generator.rb11
-rw-r--r--spec/lib/solidus_subscriptions/subscription_generator_spec.rb9
2 files changed, 20 insertions, 0 deletions
diff --git a/lib/solidus_subscriptions/subscription_generator.rb b/lib/solidus_subscriptions/subscription_generator.rb
index 8153912..7acedfa 100644
--- a/lib/solidus_subscriptions/subscription_generator.rb
+++ b/lib/solidus_subscriptions/subscription_generator.rb
@@ -34,6 +34,8 @@ module SolidusSubscriptions
Subscription.create!(subscription_attributes) do |sub|
sub.actionable_date = sub.next_actionable_date
+ end.tap do |_subscription|
+ cleanup_subscription_line_items(subscription_line_items)
end
end
@@ -54,6 +56,15 @@ module SolidusSubscriptions
private
+ def cleanup_subscription_line_items(subscription_line_items)
+ ids = subscription_line_items.pluck :id
+ SolidusSubscriptions::LineItem.where(id: ids).update_all(
+ interval_length: nil,
+ interval_units: nil,
+ end_date: nil
+ )
+ end
+
def subscription_configuration(subscription_line_item)
SubscriptionConfiguration.new(
subscription_line_item.interval_length,
diff --git a/spec/lib/solidus_subscriptions/subscription_generator_spec.rb b/spec/lib/solidus_subscriptions/subscription_generator_spec.rb
index b7d73b8..073281c 100644
--- a/spec/lib/solidus_subscriptions/subscription_generator_spec.rb
+++ b/spec/lib/solidus_subscriptions/subscription_generator_spec.rb
@@ -44,6 +44,15 @@ RSpec.describe SolidusSubscriptions::SubscriptionGenerator do
payment_source: payment_source,
)
end
+
+ it 'cleanups the subscription line items fields duplicated on the subscription' do
+ subscription_line_item = create(:subscription_line_item)
+
+ described_class.activate([subscription_line_item])
+
+ attrs = %i[interval_length interval_units end_date]
+ expect(subscription_line_item.reload.slice(attrs).values).to eq [nil, nil, nil]
+ end
end
describe '.group' do