summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlucalanda <lucalanda@hotmail.it>2021-03-12 17:35:11 +0100
committerGitHub <noreply@github.com>2021-03-12 17:35:11 +0100
commit32d8e59f56a9ed76daebcd7d58ec913da0b35b07 (patch)
tree52989e63cdbad29143d36acc90b7a84c2cb09044
parent0ce4c815ae808fb91f71701b09c14b30a3b76e19 (diff)
parent6e7d333cafd6ed18c025bca7cf5318fab870581a (diff)
Merge pull request #210 from solidusio-contrib/luca-landa/set-default-currency-to-subscription
Set default config currency to subscription
-rw-r--r--app/models/solidus_subscriptions/subscription.rb5
-rw-r--r--config/locales/en.yml2
-rw-r--r--spec/features/admin/subscriptions_spec.rb47
-rw-r--r--spec/models/solidus_subscriptions/subscription_spec.rb6
4 files changed, 57 insertions, 3 deletions
diff --git a/app/models/solidus_subscriptions/subscription.rb b/app/models/solidus_subscriptions/subscription.rb
index 5b16681..df82447 100644
--- a/app/models/solidus_subscriptions/subscription.rb
+++ b/app/models/solidus_subscriptions/subscription.rb
@@ -33,6 +33,7 @@ module SolidusSubscriptions
accepts_nested_attributes_for :line_items, allow_destroy: true, reject_if: ->(p) { p[:quantity].blank? }
before_validation :set_payment_method
+ before_validation :set_currency
before_create :generate_guest_token
after_create :emit_event_for_creation
before_update :update_actionable_date_if_interval_changed
@@ -315,6 +316,10 @@ module SolidusSubscriptions
end
end
+ def set_currency
+ self.currency ||= ::Spree::Config[:currency]
+ end
+
def generate_guest_token
self.guest_token ||= loop do
random_token = SecureRandom.urlsafe_base64(nil, false)
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 7215601..b921a2c 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -45,7 +45,7 @@ en:
orders: Orders
new:
back: Back to Subscriptions List
- title: Create a Susbcription
+ title: Create a Subscription
form:
subscription: Subscription
subscription_line_items: Line Items
diff --git a/spec/features/admin/subscriptions_spec.rb b/spec/features/admin/subscriptions_spec.rb
index 53228ec..1d9f698 100644
--- a/spec/features/admin/subscriptions_spec.rb
+++ b/spec/features/admin/subscriptions_spec.rb
@@ -1,18 +1,61 @@
RSpec.describe 'Subscriptions admin' do
stub_authorization!
+ let(:shipping_address_fieldset) { 'Shipping Address' }
+ let(:billing_address_fieldset) { 'Billing Address' }
+
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'
+ within_fieldset(shipping_address_fieldset) do
+ fill_in 'Zip Code', with: '33166'
+ end
+ within_fieldset(billing_address_fieldset) do
+ fill_in 'Zip Code', with: '33167'
+ end
click_button 'Update'
subscription.reload
expect(subscription.shipping_address.zipcode).to eq('33166')
expect(subscription.billing_address.zipcode).to eq('33167')
end
+
+ it 'Creates a subscription' do
+ variant = create(:variant, subscribable: true)
+ create(:user)
+ create(:store)
+
+ visit spree.admin_path
+ click_link 'Subscriptions'
+ click_link 'New Subscription'
+ fill_in 'Actionable date', with: '01/01/2020'
+ fill_in 'Interval length', with: 2
+ fill_in 'End date', with: '01/03/2020'
+
+ [shipping_address_fieldset, billing_address_fieldset].each do |fieldset|
+ within_fieldset(fieldset) do
+ name_input_label = if Spree.solidus_gem_version >= Gem::Version.new('2.11.0')
+ 'Name'
+ else
+ 'First Name'
+ end
+
+ fill_in name_input_label, with: 'John Doe'
+ fill_in 'Street Address', with: 'Street Address'
+ fill_in 'City', with: 'City'
+ fill_in 'Zip Code', with: '33166'
+ fill_in 'Phone', with: '1234567890'
+ end
+ end
+
+ select variant.name, from: 'Subscribable'
+ fill_in 'Quantity', with: 1
+
+ expect { click_on 'Create' }.to change { SolidusSubscriptions::Subscription.count }.by(1)
+
+ expect(page).to have_text('Subscription has been successfully created!')
+ end
end
diff --git a/spec/models/solidus_subscriptions/subscription_spec.rb b/spec/models/solidus_subscriptions/subscription_spec.rb
index b95caa6..c2fd4a4 100644
--- a/spec/models/solidus_subscriptions/subscription_spec.rb
+++ b/spec/models/solidus_subscriptions/subscription_spec.rb
@@ -31,6 +31,12 @@ RSpec.describe SolidusSubscriptions::Subscription, type: :model do
expect(subscription.guest_token).to be_present
end
+
+ it 'sets default config currency if not given' do
+ subscription = create(:subscription, currency: nil)
+
+ expect(subscription.currency).to eq(Spree::Config.currency)
+ end
end
describe 'updating a subscription' do