spree_core 4.2.0.beta → 4.2.0.rc5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/spree/base_controller.rb +2 -3
- data/app/controllers/spree/errors_controller.rb +11 -0
- data/app/finders/spree/addresses/find.rb +6 -0
- data/app/finders/spree/base_finder.rb +14 -0
- data/app/finders/spree/countries/find.rb +11 -3
- data/app/finders/spree/credit_cards/find.rb +2 -2
- data/app/finders/spree/orders/find_current.rb +2 -2
- data/app/finders/spree/products/find.rb +12 -1
- data/app/helpers/spree/base_helper.rb +38 -18
- data/app/helpers/spree/locale_helper.rb +19 -0
- data/app/helpers/spree/mail_helper.rb +12 -7
- data/app/helpers/spree/products_helper.rb +39 -13
- data/app/mailers/spree/base_mailer.rb +5 -5
- data/app/mailers/spree/order_mailer.rb +3 -3
- data/app/mailers/spree/reimbursement_mailer.rb +1 -1
- data/app/mailers/spree/shipment_mailer.rb +1 -1
- data/app/models/concerns/spree/default_price.rb +1 -5
- data/app/models/concerns/spree/user_methods.rb +2 -2
- data/app/models/concerns/spree/user_payment_source.rb +1 -1
- data/app/models/spree/ability.rb +45 -34
- data/app/models/spree/address.rb +17 -1
- data/app/models/spree/adjustment.rb +1 -0
- data/app/models/spree/app_configuration.rb +2 -3
- data/app/models/spree/app_dependencies.rb +10 -2
- data/app/models/spree/base.rb +5 -0
- data/app/models/spree/credit_card.rb +5 -0
- data/app/models/spree/fulfilment_changer.rb +58 -16
- data/app/models/spree/image.rb +14 -14
- data/app/models/spree/inventory_unit.rb +2 -7
- data/app/models/spree/line_item.rb +9 -16
- data/app/models/spree/log_entry.rb +1 -1
- data/app/models/spree/option_type.rb +2 -0
- data/app/models/spree/order.rb +12 -6
- data/app/models/spree/order/address_book.rb +7 -20
- data/app/models/spree/order/payments.rb +10 -2
- data/app/models/spree/payment.rb +18 -4
- data/app/models/spree/payment/processing.rb +2 -2
- data/app/models/spree/payment_method.rb +3 -3
- data/app/models/spree/preferences/store.rb +1 -1
- data/app/models/spree/price.rb +1 -6
- data/app/models/spree/product.rb +24 -17
- data/app/models/spree/promotion.rb +10 -15
- data/app/models/spree/promotion/rules/option_value.rb +1 -1
- data/app/models/spree/promotion/rules/product.rb +2 -1
- data/app/models/spree/promotion/rules/user.rb +2 -1
- data/app/models/spree/promotion_handler/coupon.rb +1 -2
- data/app/models/spree/promotion_handler/promotion_duplicator.rb +9 -3
- data/app/models/spree/refund.rb +2 -2
- data/app/models/spree/return_item/eligibility_validator/default.rb +0 -2
- data/app/models/spree/return_item/eligibility_validator/{r_m_a_required.rb → rma_required.rb} +0 -0
- data/app/models/spree/shipment.rb +1 -1
- data/app/models/spree/shipping_method.rb +1 -5
- data/app/models/spree/shipping_rate.rb +2 -11
- data/app/models/spree/stock/availability_validator.rb +3 -4
- data/app/models/spree/stock_item.rb +1 -5
- data/app/models/spree/store.rb +45 -1
- data/app/models/spree/store_credit.rb +1 -1
- data/app/models/spree/variant.rb +8 -15
- data/app/models/spree/zone.rb +17 -4
- data/app/presenters/spree/variant_presenter.rb +4 -6
- data/app/services/spree/account/addresses/create.rb +23 -0
- data/app/services/spree/account/addresses/helper.rb +37 -0
- data/app/services/spree/account/addresses/update.rb +23 -0
- data/app/services/spree/cart/estimate_shipping_rates.rb +1 -1
- data/app/services/spree/checkout/update.rb +13 -2
- data/app/services/spree/compare_line_items.rb +4 -2
- data/app/sorters/spree/base_sorter.rb +35 -0
- data/app/sorters/spree/orders/sort.rb +1 -37
- data/app/sorters/spree/products/sort.rb +9 -32
- data/app/validators/email_validator.rb +1 -1
- data/app/views/spree/errors/forbidden.html.erb +0 -0
- data/app/views/spree/errors/unauthorized.html.erb +0 -0
- data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +0 -2
- data/app/views/spree/shared/purchased_items_table/_line_item.html.erb +1 -1
- data/config/initializers/inflections.rb +3 -0
- data/config/initializers/rails61_fixes.rb +3 -0
- data/config/locales/en.yml +42 -63
- data/config/routes.rb +2 -1
- data/db/default/spree/countries.rb +10 -4
- data/db/default/spree/states.rb +42 -5
- data/db/default/spree/stores.rb +18 -13
- data/db/default/spree/zones.rb +5 -2
- data/db/migrate/20130326175857_add_stock_location_to_rma.rb +1 -1
- data/db/migrate/20200610113542_add_label_to_spree_addresses.rb +5 -0
- data/db/migrate/20201006110150_add_checkout_zone_field_to_store.rb +12 -0
- data/db/migrate/20201012091259_add_filterable_column_to_spree_option_types.rb +6 -0
- data/db/migrate/20201013084504_add_seo_robots_to_spree_stores.rb +5 -0
- data/db/migrate/20201127084048_add_default_country_kind_to_spree_zones.rb +5 -0
- data/db/migrate/20210112193440_remove_contact_email_from_spree_stores.rb +5 -0
- data/db/migrate/20210114182625_create_spree_payment_methods_stores.rb +10 -0
- data/db/migrate/20210114220232_migrate_data_payment_methods_stores.rb +15 -0
- data/db/migrate/20210117112551_remove_store_id_from_spree_payment_methods.rb +5 -0
- data/db/migrate/20210120142527_ensure_default_locale_in_spree_stores.rb +5 -0
- data/lib/generators/spree/install/templates/config/spree_storefront.yml +9 -9
- data/lib/spree/core.rb +3 -1
- data/lib/spree/core/controller_helpers/auth.rb +3 -1
- data/lib/spree/core/controller_helpers/common.rb +6 -8
- data/lib/spree/core/controller_helpers/currency.rb +45 -0
- data/lib/spree/core/controller_helpers/locale.rb +57 -0
- data/lib/spree/core/controller_helpers/order.rb +9 -4
- data/lib/spree/core/controller_helpers/store.rb +4 -16
- data/lib/spree/core/importer/order.rb +9 -9
- data/lib/spree/core/product_filters.rb +3 -3
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/i18n.rb +7 -21
- data/lib/spree/permitted_attributes.rb +3 -3
- data/lib/spree/service_module.rb +6 -2
- data/lib/spree/testing_support/capybara_config.rb +1 -1
- data/lib/spree/testing_support/factories/promotion_factory.rb +29 -17
- data/lib/spree/testing_support/factories/shipment_factory.rb +7 -9
- data/lib/spree/testing_support/factories/stock_location_factory.rb +2 -2
- data/lib/spree/testing_support/factories/zone_factory.rb +16 -13
- data/lib/spree/testing_support/i18n.rb +1 -1
- data/lib/spree/testing_support/order_walkthrough.rb +8 -3
- data/lib/spree/testing_support/rspec_retry_config.rb +10 -0
- data/spree_core.gemspec +7 -5
- metadata +90 -28
- data/lib/spree/core/controller_helpers/currency_helpers.rb +0 -15
- data/lib/spree/i18n/base.rb +0 -17
- data/lib/spree/i18n/initializer.rb +0 -1
@@ -52,10 +52,15 @@ module Spree
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def set_current_order
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
55
|
+
return unless try_spree_current_user && current_order
|
56
|
+
|
57
|
+
orders_scope = try_spree_current_user.orders.
|
58
|
+
incomplete.
|
59
|
+
where.not(id: current_order.id).
|
60
|
+
where(store_id: current_store.id)
|
61
|
+
|
62
|
+
orders_scope.each do |order|
|
63
|
+
current_order.merge!(order, try_spree_current_user)
|
59
64
|
end
|
60
65
|
end
|
61
66
|
|
@@ -5,30 +5,18 @@ module Spree
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
included do
|
8
|
-
helper_method :supported_currencies
|
9
|
-
helper_method :current_currency
|
10
8
|
helper_method :current_store
|
11
9
|
helper_method :current_price_options
|
12
10
|
end
|
13
11
|
|
14
|
-
def current_currency
|
15
|
-
if defined?(session) && session.key?(:currency) && supported_currencies.map(&:iso_code).include?(session[:currency])
|
16
|
-
session[:currency]
|
17
|
-
elsif params[:currency].present? && supported_currencies.map(&:iso_code).include?(params[:currency])
|
18
|
-
params[:currency]
|
19
|
-
else
|
20
|
-
current_store.default_currency
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def supported_currencies
|
25
|
-
current_store.supported_currencies_list
|
26
|
-
end
|
27
|
-
|
28
12
|
def current_store
|
29
13
|
@current_store ||= Spree::Store.current(request.env['SERVER_NAME'])
|
30
14
|
end
|
31
15
|
|
16
|
+
def store_locale
|
17
|
+
current_store.default_locale
|
18
|
+
end
|
19
|
+
|
32
20
|
# Return a Hash of things that influence the prices displayed in your shop.
|
33
21
|
#
|
34
22
|
# By default, the only thing that influences prices that is the current order's +tax_zone+
|
@@ -38,7 +38,7 @@ module Spree
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
order.reload
|
41
|
-
rescue
|
41
|
+
rescue StandardError => e
|
42
42
|
order.destroy if order&.persisted?
|
43
43
|
raise e.message
|
44
44
|
end
|
@@ -80,7 +80,7 @@ module Spree
|
|
80
80
|
|
81
81
|
adjustments = s.delete(:adjustments_attributes)
|
82
82
|
create_adjustments_from_params(adjustments, order, shipment)
|
83
|
-
rescue
|
83
|
+
rescue StandardError => e
|
84
84
|
raise "Order import shipments: #{e.message} #{s}"
|
85
85
|
end
|
86
86
|
end
|
@@ -115,7 +115,7 @@ module Spree
|
|
115
115
|
line_item.save!
|
116
116
|
end
|
117
117
|
create_adjustments_from_params(adjustments, order, line_item)
|
118
|
-
rescue
|
118
|
+
rescue StandardError => e
|
119
119
|
raise "Order import line items: #{e.message} #{line_item}"
|
120
120
|
end
|
121
121
|
end
|
@@ -132,7 +132,7 @@ module Spree
|
|
132
132
|
)
|
133
133
|
adjustment.save!
|
134
134
|
adjustment.close!
|
135
|
-
rescue
|
135
|
+
rescue StandardError => e
|
136
136
|
raise "Order import adjustments: #{e.message} #{a}"
|
137
137
|
end
|
138
138
|
end
|
@@ -150,7 +150,7 @@ module Spree
|
|
150
150
|
payment.payment_method = Spree::PaymentMethod.find_by!(name: p[:payment_method])
|
151
151
|
payment.source = create_source_payment_from_params(p[:source], payment) if p[:source]
|
152
152
|
payment.save!
|
153
|
-
rescue
|
153
|
+
rescue StandardError => e
|
154
154
|
raise "Order import payments: #{e.message} #{p}"
|
155
155
|
end
|
156
156
|
end
|
@@ -167,7 +167,7 @@ module Spree
|
|
167
167
|
gateway_payment_profile_id: source_hash[:gateway_payment_profile_id],
|
168
168
|
imported: true
|
169
169
|
)
|
170
|
-
rescue
|
170
|
+
rescue StandardError => e
|
171
171
|
raise "Order import source payments: #{e.message} #{source_hash}"
|
172
172
|
end
|
173
173
|
|
@@ -179,7 +179,7 @@ module Spree
|
|
179
179
|
hash
|
180
180
|
rescue ActiveRecord::RecordNotFound => e
|
181
181
|
raise "Ensure order import variant: Variant w/SKU #{sku} not found."
|
182
|
-
rescue
|
182
|
+
rescue StandardError => e
|
183
183
|
raise "Ensure order import variant: #{e.message} #{hash}"
|
184
184
|
end
|
185
185
|
|
@@ -200,7 +200,7 @@ module Spree
|
|
200
200
|
|
201
201
|
address.delete(:country)
|
202
202
|
address[:country_id] = Spree::Country.where(search).first!.id
|
203
|
-
rescue
|
203
|
+
rescue StandardError => e
|
204
204
|
raise "Ensure order import address country: #{e.message} #{search}"
|
205
205
|
end
|
206
206
|
end
|
@@ -224,7 +224,7 @@ module Spree
|
|
224
224
|
else
|
225
225
|
address[:state_name] = search[:name] || search[:abbr]
|
226
226
|
end
|
227
|
-
rescue
|
227
|
+
rescue StandardError => e
|
228
228
|
raise "Ensure order import address state: #{e.message} #{search}"
|
229
229
|
end
|
230
230
|
end
|
@@ -68,9 +68,9 @@ module Spree
|
|
68
68
|
def self.price_filter
|
69
69
|
v = Spree::Price.arel_table
|
70
70
|
conds = [[Spree.t(:under_price, price: format_price(10)), v[:amount].lteq(10)],
|
71
|
-
["#{format_price(10)} - #{format_price(15)}", v[:amount].
|
72
|
-
["#{format_price(15)} - #{format_price(18)}", v[:amount].
|
73
|
-
["#{format_price(18)} - #{format_price(20)}", v[:amount].
|
71
|
+
["#{format_price(10)} - #{format_price(15)}", v[:amount].between(10..15)],
|
72
|
+
["#{format_price(15)} - #{format_price(18)}", v[:amount].between(15..18)],
|
73
|
+
["#{format_price(18)} - #{format_price(20)}", v[:amount].between(18..20)],
|
74
74
|
[Spree.t(:or_over_price, price: format_price(20)), v[:amount].gteq(20)]]
|
75
75
|
{
|
76
76
|
name: Spree.t(:price_range),
|
data/lib/spree/core/version.rb
CHANGED
data/lib/spree/i18n.rb
CHANGED
@@ -1,35 +1,21 @@
|
|
1
1
|
require 'i18n'
|
2
2
|
require 'active_support/core_ext/array/extract_options'
|
3
|
-
require '
|
3
|
+
require 'action_view'
|
4
4
|
|
5
5
|
module Spree
|
6
|
-
|
7
|
-
|
6
|
+
class TranslationHelperWrapper
|
7
|
+
include ActionView::Helpers::TranslationHelper
|
8
|
+
end
|
8
9
|
|
9
10
|
class << self
|
10
11
|
# Add spree namespace and delegate to Rails TranslationHelper for some nice
|
11
12
|
# extra functionality. e.g return reasonable strings for missing translations
|
12
|
-
def translate(
|
13
|
-
|
13
|
+
def translate(key, options = {})
|
14
|
+
options[:scope] = [*options[:scope]].unshift(:spree).uniq
|
14
15
|
|
15
|
-
options
|
16
|
-
options[:scope] = [*options[:scope]].unshift(:spree)
|
17
|
-
args << options
|
18
|
-
super(*args)
|
16
|
+
TranslationHelperWrapper.new.translate(key, **options)
|
19
17
|
end
|
20
18
|
|
21
19
|
alias t translate
|
22
|
-
|
23
|
-
def context
|
24
|
-
Spree::ViewContext.context
|
25
|
-
end
|
26
|
-
|
27
|
-
def virtual_path
|
28
|
-
if context
|
29
|
-
path = context.instance_variable_get('@virtual_path')
|
30
|
-
|
31
|
-
path&.gsub(/spree/, '')
|
32
|
-
end
|
33
|
-
end
|
34
20
|
end
|
35
21
|
end
|
@@ -33,7 +33,7 @@ module Spree
|
|
33
33
|
:id, :firstname, :lastname, :first_name, :last_name,
|
34
34
|
:address1, :address2, :city, :country_iso, :country_id, :state_id,
|
35
35
|
:zipcode, :phone, :state_name, :alternative_phone, :company,
|
36
|
-
:user_id, :deleted_at,
|
36
|
+
:user_id, :deleted_at, :label,
|
37
37
|
country: [:iso, :name, :iso3, :iso_name],
|
38
38
|
state: [:name, :abbr]
|
39
39
|
]
|
@@ -99,9 +99,9 @@ module Spree
|
|
99
99
|
@@store_attributes = [:name, :url, :seo_title, :code, :meta_keywords, :logo,
|
100
100
|
:meta_description, :default_currency, :mail_from_address,
|
101
101
|
:customer_support_email, :facebook, :twitter, :instagram,
|
102
|
-
:description, :address, :
|
102
|
+
:description, :address, :contact_phone,
|
103
103
|
:default_locale, :default_country_id, :supported_currencies,
|
104
|
-
:new_order_notifications_email]
|
104
|
+
:new_order_notifications_email, :mailer_logo, :checkout_zone_id, :seo_robots]
|
105
105
|
|
106
106
|
@@store_credit_attributes = %i[amount currency category_id memo]
|
107
107
|
|
data/lib/spree/service_module.rb
CHANGED
@@ -47,7 +47,11 @@ module Spree
|
|
47
47
|
def call(input = nil)
|
48
48
|
input ||= {}
|
49
49
|
@_passed_input = Result.new(true, input)
|
50
|
-
result =
|
50
|
+
result = if input.is_a?(Hash)
|
51
|
+
super(**input)
|
52
|
+
else
|
53
|
+
super(input)
|
54
|
+
end
|
51
55
|
@_passed_input = result if result.is_a? Result
|
52
56
|
enforce_data_format
|
53
57
|
@_passed_input
|
@@ -71,7 +75,7 @@ module Spree
|
|
71
75
|
end
|
72
76
|
|
73
77
|
begin
|
74
|
-
@_passed_input = callable.call(
|
78
|
+
@_passed_input = callable.call(**@_passed_input.value)
|
75
79
|
rescue ArgumentError => e
|
76
80
|
if e.message.include? 'missing'
|
77
81
|
raise IncompatibleParamsPassed, "You didn't pass #{e.message} to callable '#{callable.name}'"
|
@@ -1,4 +1,21 @@
|
|
1
1
|
FactoryBot.define do
|
2
|
+
trait :with_item_total_rule do
|
3
|
+
transient do
|
4
|
+
item_total_threshold_amount { 10 }
|
5
|
+
end
|
6
|
+
|
7
|
+
after(:create) do |promotion, evaluator|
|
8
|
+
rule = Spree::Promotion::Rules::ItemTotal.create!(
|
9
|
+
preferred_operator_min: 'gte',
|
10
|
+
preferred_operator_max: 'lte',
|
11
|
+
preferred_amount_min: evaluator.item_total_threshold_amount,
|
12
|
+
preferred_amount_max: evaluator.item_total_threshold_amount + 100
|
13
|
+
)
|
14
|
+
promotion.rules << rule
|
15
|
+
promotion.save!
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
2
19
|
factory :promotion, class: Spree::Promotion do
|
3
20
|
name { 'Promo' }
|
4
21
|
|
@@ -13,7 +30,16 @@ FactoryBot.define do
|
|
13
30
|
Spree::Promotion::Actions::CreateItemAdjustments.create!(calculator: calculator, promotion: promotion)
|
14
31
|
end
|
15
32
|
end
|
33
|
+
|
34
|
+
trait :with_one_use_per_user_rule do
|
35
|
+
after(:create) do |promotion|
|
36
|
+
rule = Spree::Promotion::Rules::OneUsePerUser.create!
|
37
|
+
promotion.rules << rule
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
16
41
|
factory :promotion_with_item_adjustment, traits: [:with_line_item_adjustment]
|
42
|
+
factory :promotion_with_one_use_per_user_rule, traits: [:with_line_item_adjustment, :with_one_use_per_user_rule]
|
17
43
|
|
18
44
|
trait :with_order_adjustment do
|
19
45
|
transient do
|
@@ -28,24 +54,8 @@ FactoryBot.define do
|
|
28
54
|
promotion.save!
|
29
55
|
end
|
30
56
|
end
|
31
|
-
factory :promotion_with_order_adjustment, traits: [:with_order_adjustment]
|
32
57
|
|
33
|
-
|
34
|
-
transient do
|
35
|
-
item_total_threshold_amount { 10 }
|
36
|
-
end
|
37
|
-
|
38
|
-
after(:create) do |promotion, evaluator|
|
39
|
-
rule = Spree::Promotion::Rules::ItemTotal.create!(
|
40
|
-
preferred_operator_min: 'gte',
|
41
|
-
preferred_operator_max: 'lte',
|
42
|
-
preferred_amount_min: evaluator.item_total_threshold_amount,
|
43
|
-
preferred_amount_max: evaluator.item_total_threshold_amount + 100
|
44
|
-
)
|
45
|
-
promotion.rules << rule
|
46
|
-
promotion.save!
|
47
|
-
end
|
48
|
-
end
|
58
|
+
factory :promotion_with_order_adjustment, traits: [:with_order_adjustment]
|
49
59
|
factory :promotion_with_item_total_rule, traits: [:with_item_total_rule]
|
50
60
|
end
|
51
61
|
|
@@ -57,5 +67,7 @@ FactoryBot.define do
|
|
57
67
|
action.promotion = promotion
|
58
68
|
action.save
|
59
69
|
end
|
70
|
+
|
71
|
+
factory :free_shipping_promotion_with_item_total_rule, traits: [:with_item_total_rule]
|
60
72
|
end
|
61
73
|
end
|
@@ -8,15 +8,13 @@ FactoryBot.define do
|
|
8
8
|
|
9
9
|
after(:create) do |shipment, _evalulator|
|
10
10
|
shipment.add_shipping_method(create(:shipping_method), true)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
)
|
19
|
-
end
|
11
|
+
shipment.order.line_items.map do |line_item|
|
12
|
+
shipment.inventory_units.create(
|
13
|
+
order_id: shipment.order_id,
|
14
|
+
variant_id: line_item.variant_id,
|
15
|
+
line_item_id: line_item.id,
|
16
|
+
quantity: line_item.quantity
|
17
|
+
)
|
20
18
|
end
|
21
19
|
end
|
22
20
|
end
|
@@ -20,8 +20,8 @@ FactoryBot.define do
|
|
20
20
|
product_1 = create(:product)
|
21
21
|
product_2 = create(:product)
|
22
22
|
|
23
|
-
stock_location.stock_items.where(variant_id: product_1.
|
24
|
-
stock_location.stock_items.where(variant_id: product_2.
|
23
|
+
stock_location.stock_items.where(variant_id: product_1.master_id).first.adjust_count_on_hand(10)
|
24
|
+
stock_location.stock_items.where(variant_id: product_2.master_id).first.adjust_count_on_hand(20)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
@@ -1,24 +1,27 @@
|
|
1
1
|
FactoryBot.define do
|
2
|
-
factory :global_zone, class: Spree::Zone do
|
3
|
-
name { 'GlobalZone' }
|
4
|
-
description { generate(:random_string) }
|
5
|
-
zone_members do |proxy|
|
6
|
-
zone = proxy.instance_eval { @instance }
|
7
|
-
Spree::Country.all.map do |c|
|
8
|
-
Spree::ZoneMember.create(zoneable: c, zone: zone)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
2
|
factory :zone, class: Spree::Zone do
|
14
3
|
name { generate(:random_string) }
|
15
4
|
description { generate(:random_string) }
|
16
5
|
|
17
6
|
factory :zone_with_country do
|
7
|
+
kind { :country }
|
8
|
+
|
18
9
|
zone_members do |proxy|
|
19
10
|
zone = proxy.instance_eval { @instance }
|
20
|
-
|
21
|
-
[Spree::ZoneMember.create(zoneable: country, zone: zone)]
|
11
|
+
|
12
|
+
[Spree::ZoneMember.create(zoneable: create(:country), zone: zone)]
|
13
|
+
end
|
14
|
+
|
15
|
+
factory :global_zone, class: Spree::Zone do
|
16
|
+
sequence(:name) { |n| "GlobalZone_#{n}" }
|
17
|
+
|
18
|
+
zone_members do |proxy|
|
19
|
+
zone = proxy.instance_eval { @instance }
|
20
|
+
|
21
|
+
Spree::Country.all.map do |country|
|
22
|
+
Spree::ZoneMember.where(zoneable: country, zone: zone).first_or_create
|
23
|
+
end
|
24
|
+
end
|
22
25
|
end
|
23
26
|
end
|
24
27
|
end
|
@@ -84,7 +84,7 @@ RSpec.configure do |config|
|
|
84
84
|
end
|
85
85
|
|
86
86
|
Spree.check_unused_translations
|
87
|
-
if
|
87
|
+
if Spree.unused_translation_messages.any?
|
88
88
|
puts "\nThere are unused translations within Spree:"
|
89
89
|
puts Spree.unused_translation_messages.sort
|
90
90
|
exit(1)
|
@@ -1,11 +1,16 @@
|
|
1
1
|
class OrderWalkthrough
|
2
2
|
def self.up_to(state)
|
3
|
-
|
4
|
-
|
3
|
+
store = if Spree::Store.exists?
|
4
|
+
# Ensure the default store is used
|
5
|
+
Spree::Store.default || FactoryBot.create(:store, default: true)
|
6
|
+
else
|
7
|
+
# Create a default store
|
8
|
+
FactoryBot.create(:store, default: true)
|
9
|
+
end
|
5
10
|
|
6
11
|
# A payment method must exist for an order to proceed through the Address state
|
7
12
|
unless Spree::PaymentMethod.exists?
|
8
|
-
FactoryBot.create(:check_payment_method)
|
13
|
+
FactoryBot.create(:check_payment_method, stores: [store])
|
9
14
|
end
|
10
15
|
|
11
16
|
# Need to create a valid zone too...
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'rspec/retry'
|
2
|
+
|
3
|
+
RSpec.configure do |config|
|
4
|
+
config.verbose_retry = true
|
5
|
+
config.display_try_failure_messages = true
|
6
|
+
|
7
|
+
config.around :each, type: :feature do |ex|
|
8
|
+
ex.run_with_retry retry: ENV.fetch('RSPEC_RETRY_RETRY_COUNT', 3).to_i
|
9
|
+
end
|
10
|
+
end
|
data/spree_core.gemspec
CHANGED
@@ -28,9 +28,9 @@ Gem::Specification.new do |s|
|
|
28
28
|
|
29
29
|
s.add_dependency 'activemerchant', '~> 1.67'
|
30
30
|
s.add_dependency 'acts_as_list', '~> 0.8'
|
31
|
-
s.add_dependency 'awesome_nested_set', '>= 3.1
|
31
|
+
s.add_dependency 'awesome_nested_set', '>= 3.3.1', '< 4.0'
|
32
32
|
s.add_dependency 'carmen', '>= 1.0', '< 1.2'
|
33
|
-
s.add_dependency 'cancancan', '~> 3.
|
33
|
+
s.add_dependency 'cancancan', '~> 3.2'
|
34
34
|
s.add_dependency 'ffaker', '~> 2.9'
|
35
35
|
s.add_dependency 'friendly_id', '>= 5.2.1', '< 5.5.0'
|
36
36
|
s.add_dependency 'highline', '~> 2.0.0' # Necessary for the install generator
|
@@ -39,17 +39,19 @@ Gem::Specification.new do |s|
|
|
39
39
|
s.add_dependency 'monetize', '~> 1.9'
|
40
40
|
s.add_dependency 'paranoia', '~> 2.4.2'
|
41
41
|
s.add_dependency 'premailer-rails'
|
42
|
-
s.add_dependency 'rails', '
|
43
|
-
s.add_dependency 'ransack', '
|
42
|
+
s.add_dependency 'rails', '>= 6.0', '< 6.2'
|
43
|
+
s.add_dependency 'ransack', '>= 2.3', '< 2.5'
|
44
44
|
s.add_dependency 'responders'
|
45
|
+
s.add_dependency 'rexml'
|
45
46
|
s.add_dependency 'state_machines-activerecord', '~> 0.6'
|
46
47
|
s.add_dependency 'state_machines-activemodel', '~> 0.7'
|
47
48
|
s.add_dependency 'stringex'
|
48
49
|
s.add_dependency 'twitter_cldr', '>= 4.3', '< 7.0'
|
49
50
|
s.add_dependency 'sprockets', '~> 3.7'
|
50
51
|
s.add_dependency 'sprockets-rails'
|
51
|
-
s.add_dependency 'mini_magick', '>= 4.9.4', '< 4.
|
52
|
+
s.add_dependency 'mini_magick', '>= 4.9.4', '< 4.12.0'
|
52
53
|
s.add_dependency 'image_processing', '~> 1.2'
|
54
|
+
s.add_dependency 'active_storage_validations', '~> 0.9'
|
53
55
|
|
54
56
|
s.add_development_dependency 'email_spec', '~> 2.2'
|
55
57
|
end
|