summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessandro Desantis <desa.alessandro@gmail.com>2020-11-16 17:19:45 +0100
committerGitHub <noreply@github.com>2020-11-16 17:19:45 +0100
commitb4721fc54b700130eb8e6b9c5042875cd8582bd2 (patch)
tree84e43de0369b4db9f8d2d19ab23e0fbedbaa8bb0
parent6180dacde705b8cfb30229c0653df80202c58159 (diff)
parent6267bd99adc0ed226fb62cf5c71dcec6205d0604 (diff)
Merge pull request #166 from solidusio-contrib/aldesantis/fix-update-form
Fix `ActiveRecord::ReadOnlyRecord` when updating subscriptions
-rw-r--r--.rubocop.yml1
-rw-r--r--app/controllers/spree/admin/subscriptions_controller.rb4
-rw-r--r--spec/features/admin/subscriptions_spec.rb18
-rw-r--r--spec/features/admin_link_spec.rb11
4 files changed, 21 insertions, 13 deletions
diff --git a/.rubocop.yml b/.rubocop.yml
index 48c6a23..fcd4bc4 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -6,3 +6,4 @@ require:
RSpec/DescribeClass:
Exclude:
- spec/requests/**/*
+ - spec/features/**/*
diff --git a/app/controllers/spree/admin/subscriptions_controller.rb b/app/controllers/spree/admin/subscriptions_controller.rb
index 7db4c77..2b6069f 100644
--- a/app/controllers/spree/admin/subscriptions_controller.rb
+++ b/app/controllers/spree/admin/subscriptions_controller.rb
@@ -88,8 +88,8 @@ module Spree
end
def prepare_form
- @subscription.build_shipping_address unless @subscription.shipping_address
- @subscription.build_billing_address unless @subscription.billing_address
+ @subscription.build_shipping_address(@subscription.shipping_address&.value_attributes)
+ @subscription.build_billing_address(@subscription.billing_address&.value_attributes)
@subscription.line_items.build
end
diff --git a/spec/features/admin/subscriptions_spec.rb b/spec/features/admin/subscriptions_spec.rb
new file mode 100644
index 0000000..53228ec
--- /dev/null
+++ b/spec/features/admin/subscriptions_spec.rb
@@ -0,0 +1,18 @@
+RSpec.describe 'Subscriptions admin' do
+ stub_authorization!
+
+ it 'Updating a subscription' do
+ subscription = create(:subscription, :with_shipping_address, :with_billing_address)
+
+ visit spree.admin_path
+ click_link 'Subscriptions'
+ find('.fa-edit').click
+ fill_in 'subscription[shipping_address_attributes][zipcode]', with: '33166'
+ fill_in 'subscription[billing_address_attributes][zipcode]', with: '33167'
+ click_button 'Update'
+ subscription.reload
+
+ expect(subscription.shipping_address.zipcode).to eq('33166')
+ expect(subscription.billing_address.zipcode).to eq('33167')
+ end
+end
diff --git a/spec/features/admin_link_spec.rb b/spec/features/admin_link_spec.rb
deleted file mode 100644
index 53b30bc..0000000
--- a/spec/features/admin_link_spec.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-require 'spec_helper'
-
-RSpec.describe 'Subscriptions admin link', type: :feature do
- stub_authorization!
-
- it 'Navigating to the subscriptions backend' do
- visit '/admin'
- click_on "Subscriptions"
- expect(page).to have_current_path %r{admin/subscriptions}
- end
-end