spree_core 4.2.0.rc2 → 4.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/spree.js +20 -0
- 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 +1 -12
- 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 +14 -3
- data/app/helpers/spree/base_helper.rb +3 -8
- data/app/helpers/spree/currency_helper.rb +34 -0
- data/app/helpers/spree/locale_helper.rb +31 -0
- data/app/helpers/spree/products_helper.rb +37 -12
- data/app/mailers/spree/base_mailer.rb +4 -4
- 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/product_scopes.rb +1 -1
- 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 +4 -0
- data/app/models/spree/app_configuration.rb +2 -2
- data/app/models/spree/app_dependencies.rb +6 -2
- data/app/models/spree/base.rb +5 -0
- data/app/models/spree/credit_card.rb +4 -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 +7 -15
- data/app/models/spree/order.rb +1 -0
- 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/price.rb +2 -7
- data/app/models/spree/product.rb +41 -17
- 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/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 +55 -2
- data/app/models/spree/store_credit.rb +1 -1
- data/app/models/spree/variant.rb +9 -16
- data/app/models/spree/zone.rb +13 -4
- data/app/paginators/spree/shared/paginate.rb +8 -1
- data/app/presenters/spree/variant_presenter.rb +2 -5
- data/app/services/spree/account/addresses/create.rb +6 -1
- data/app/services/spree/account/addresses/{base.rb → helper.rb} +1 -3
- data/app/services/spree/account/addresses/update.rb +6 -1
- data/app/services/spree/build_localized_redirect_url.rb +101 -0
- data/app/services/spree/cart/estimate_shipping_rates.rb +1 -1
- 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 +13 -2
- data/app/views/spree/shared/_purchased_items_table.html.erb +15 -6
- data/app/views/spree/shared/purchased_items_table/_adjustment.html.erb +2 -2
- data/app/views/spree/shared/purchased_items_table/_line_item.html.erb +2 -2
- data/config/initializers/inflections.rb +3 -0
- data/config/initializers/rails61_fixes.rb +3 -0
- data/config/locales/en.yml +31 -60
- data/config/routes.rb +2 -1
- data/db/default/spree/stores.rb +1 -0
- data/db/default/spree/zones.rb +4 -1
- data/db/migrate/20130326175857_add_stock_location_to_rma.rb +1 -1
- data/db/migrate/20191017121054_add_supported_currencies_to_store.rb +1 -0
- data/db/migrate/20201012091259_add_filterable_column_to_spree_option_types.rb +6 -2
- 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/db/migrate/20210205211040_add_supported_locales_to_spree_stores.rb +11 -0
- data/db/migrate/20210215202602_migrate_spree_i18n_globalize_config.rb +22 -0
- data/lib/generators/spree/install/install_generator.rb +9 -6
- data/lib/spree/core.rb +2 -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 +54 -0
- data/lib/spree/core/controller_helpers/locale.rb +58 -0
- data/lib/spree/core/controller_helpers/search.rb +1 -1
- data/lib/spree/core/controller_helpers/store.rb +4 -16
- data/lib/spree/core/product_filters.rb +3 -3
- data/lib/spree/core/version.rb +3 -1
- data/lib/spree/i18n.rb +17 -19
- data/lib/spree/permitted_attributes.rb +2 -2
- data/lib/spree/service_module.rb +8 -4
- data/lib/spree/testing_support/capybara_config.rb +1 -1
- data/lib/spree/testing_support/common_rake.rb +1 -1
- data/lib/spree/testing_support/controller_requests.rb +10 -10
- 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/store_factory.rb +1 -0
- data/lib/spree/testing_support/factories/zone_factory.rb +16 -13
- data/lib/spree/testing_support/flatpickr_capybara.rb +101 -0
- data/lib/spree/testing_support/locale_helpers.rb +78 -0
- data/lib/spree/testing_support/next_instance_of.rb +38 -0
- 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 +5 -4
- metadata +71 -26
- data/lib/generators/spree/install/templates/config/initializers/spree_storefront.rb +0 -1
- data/lib/generators/spree/install/templates/config/spree_storefront.yml +0 -67
- 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
@@ -15,7 +15,7 @@ namespace :common do
|
|
15
15
|
Rails.env = 'test'
|
16
16
|
|
17
17
|
Spree::DummyGenerator.start ["--lib_name=#{ENV['LIB_NAME']}", '--quiet']
|
18
|
-
Spree::InstallGenerator.start ["--lib_name=#{ENV['LIB_NAME']}", '--auto-accept', '--migrate=false', '--seed=false', '--sample=false', '--quiet', '--copy_storefront=false', "--user_class=#{args[:user_class]}"]
|
18
|
+
Spree::InstallGenerator.start ["--lib_name=#{ENV['LIB_NAME']}", '--auto-accept', '--migrate=false', '--seed=false', '--sample=false', '--quiet', '--copy_storefront=false', '--install_storefront=false', "--user_class=#{args[:user_class]}"]
|
19
19
|
|
20
20
|
puts 'Setting up dummy database...'
|
21
21
|
system("bundle exec rake db:drop db:create > #{File::NULL}")
|
@@ -9,7 +9,7 @@ module Spree
|
|
9
9
|
|
10
10
|
def spree_get(action, parameters = nil, session = nil, flash = nil)
|
11
11
|
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
12
|
-
ControllerRequests#spree_get is deprecated and will be removed in Spree
|
12
|
+
ControllerRequests#spree_get is deprecated and will be removed in Spree 5.0.
|
13
13
|
Please use get, params: {}
|
14
14
|
DEPRECATION
|
15
15
|
process_spree_action(action, parameters, session, flash, 'GET')
|
@@ -18,7 +18,7 @@ module Spree
|
|
18
18
|
# Executes a request simulating POST HTTP method and set/volley the response
|
19
19
|
def spree_post(action, parameters = nil, session = nil, flash = nil)
|
20
20
|
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
21
|
-
ControllerRequests#spree_post is deprecated and will be removed in Spree
|
21
|
+
ControllerRequests#spree_post is deprecated and will be removed in Spree 5.0.
|
22
22
|
Please use post, params: {}
|
23
23
|
DEPRECATION
|
24
24
|
process_spree_action(action, parameters, session, flash, 'POST')
|
@@ -27,7 +27,7 @@ module Spree
|
|
27
27
|
# Executes a request simulating PUT HTTP method and set/volley the response
|
28
28
|
def spree_put(action, parameters = nil, session = nil, flash = nil)
|
29
29
|
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
30
|
-
ControllerRequests#spree_put is deprecated and will be removed in Spree
|
30
|
+
ControllerRequests#spree_put is deprecated and will be removed in Spree 5.0.
|
31
31
|
Please use put, params: {}
|
32
32
|
DEPRECATION
|
33
33
|
process_spree_action(action, parameters, session, flash, 'PUT')
|
@@ -36,7 +36,7 @@ module Spree
|
|
36
36
|
# # Executes a request simulating PATCH HTTP method and set/volley the response
|
37
37
|
def spree_patch(action, parameters = nil, session = nil, flash = nil)
|
38
38
|
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
39
|
-
ControllerRequests#spree_patch is deprecated and will be removed in Spree
|
39
|
+
ControllerRequests#spree_patch is deprecated and will be removed in Spree 5.0.
|
40
40
|
Please use patch, params: {}
|
41
41
|
DEPRECATION
|
42
42
|
process_spree_action(action, parameters, session, flash, 'PATCH')
|
@@ -45,7 +45,7 @@ module Spree
|
|
45
45
|
# Executes a request simulating DELETE HTTP method and set/volley the response
|
46
46
|
def spree_delete(action, parameters = nil, session = nil, flash = nil)
|
47
47
|
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
48
|
-
ControllerRequests#spree_delete is deprecated and will be removed in Spree
|
48
|
+
ControllerRequests#spree_delete is deprecated and will be removed in Spree 5.0.
|
49
49
|
Please use delete, params: {}
|
50
50
|
DEPRECATION
|
51
51
|
process_spree_action(action, parameters, session, flash, 'DELETE')
|
@@ -53,35 +53,35 @@ module Spree
|
|
53
53
|
|
54
54
|
def spree_xhr_get(action, parameters = nil, session = nil, flash = nil)
|
55
55
|
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
56
|
-
ControllerRequests#spree_xhr_get is deprecated and will be removed in Spree
|
56
|
+
ControllerRequests#spree_xhr_get is deprecated and will be removed in Spree 5.0.
|
57
57
|
DEPRECATION
|
58
58
|
process_spree_xhr_action(action, parameters, session, flash, :get)
|
59
59
|
end
|
60
60
|
|
61
61
|
def spree_xhr_post(action, parameters = nil, session = nil, flash = nil)
|
62
62
|
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
63
|
-
ControllerRequests#spree_xhr_post is deprecated and will be removed in Spree
|
63
|
+
ControllerRequests#spree_xhr_post is deprecated and will be removed in Spree 5.0.
|
64
64
|
DEPRECATION
|
65
65
|
process_spree_xhr_action(action, parameters, session, flash, :post)
|
66
66
|
end
|
67
67
|
|
68
68
|
def spree_xhr_put(action, parameters = nil, session = nil, flash = nil)
|
69
69
|
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
70
|
-
ControllerRequests#spree_xhr_put is deprecated and will be removed in Spree
|
70
|
+
ControllerRequests#spree_xhr_put is deprecated and will be removed in Spree 5.0.
|
71
71
|
DEPRECATION
|
72
72
|
process_spree_xhr_action(action, parameters, session, flash, :put)
|
73
73
|
end
|
74
74
|
|
75
75
|
def spree_xhr_patch(action, parameters = nil, session = nil, flash = nil)
|
76
76
|
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
77
|
-
ControllerRequests#spree_xhr_patch is deprecated and will be removed in Spree
|
77
|
+
ControllerRequests#spree_xhr_patch is deprecated and will be removed in Spree 5.0.
|
78
78
|
DEPRECATION
|
79
79
|
process_spree_xhr_action(action, parameters, session, flash, :patch)
|
80
80
|
end
|
81
81
|
|
82
82
|
def spree_xhr_delete(action, parameters = nil, session = nil, flash = nil)
|
83
83
|
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
84
|
-
ControllerRequests#spree_xhr_delete is deprecated and will be removed in Spree
|
84
|
+
ControllerRequests#spree_xhr_delete is deprecated and will be removed in Spree 5.0.
|
85
85
|
DEPRECATION
|
86
86
|
process_spree_xhr_action(action, parameters, session, flash, :delete)
|
87
87
|
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
|
@@ -8,6 +8,7 @@ FactoryBot.define do
|
|
8
8
|
new_order_notifications_email { 'store-owner@example.com' }
|
9
9
|
default_currency { 'USD' }
|
10
10
|
supported_currencies { 'USD,EUR,GBP' }
|
11
|
+
default_locale { 'en' }
|
11
12
|
facebook { 'spreecommerce' }
|
12
13
|
twitter { 'spreecommerce' }
|
13
14
|
instagram { 'spreecommerce' }
|
@@ -1,24 +1,27 @@
|
|
1
1
|
FactoryBot.define do
|
2
|
-
factory :global_zone, class: Spree::Zone do
|
3
|
-
sequence(:name) { |n| "GlobalZone_#{n}" }
|
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
|
@@ -0,0 +1,101 @@
|
|
1
|
+
module Spree
|
2
|
+
module TestingSupport
|
3
|
+
module FlatpickrCapybara
|
4
|
+
def fill_in_date_manually(label_text, with:)
|
5
|
+
with_open_flatpickr(label_text) do |field|
|
6
|
+
fill_in field[:id], with: with
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def fill_in_date_picker(label_text, with:)
|
11
|
+
within_open_flatpickr(label_text) do
|
12
|
+
within_flatpickr_months do
|
13
|
+
fill_in_flatpickr_year(with.split('-')[0])
|
14
|
+
|
15
|
+
select_flatpickr_month(with.split('-')[1])
|
16
|
+
|
17
|
+
click_on_flatpickr_day(with.split('-')[2])
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def fill_in_date_time_picker(label_text, with:)
|
23
|
+
within_open_flatpickr(label_text) do
|
24
|
+
within_flatpickr_months do
|
25
|
+
fill_in_flatpickr_year(with.split('-')[0])
|
26
|
+
|
27
|
+
select_flatpickr_month(with.split('-')[1])
|
28
|
+
|
29
|
+
click_on_flatpickr_day(with.split('-')[2])
|
30
|
+
end
|
31
|
+
|
32
|
+
within_flatpickr_time do
|
33
|
+
select_flatpickr_hour(with.split('-')[3])
|
34
|
+
|
35
|
+
select_flatpickr_min(with.split('-')[4])
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def fill_in_date_with_js(label_text, with:)
|
41
|
+
date_field = find("input[id='#{label_text}']")
|
42
|
+
script = "document.querySelector('#{date_field}').flatpickr().setDate('#{with}');"
|
43
|
+
|
44
|
+
page.execute_script(script)
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def with_open_flatpickr(label_text)
|
50
|
+
field_label = find_field(id: label_text, type: :hidden)
|
51
|
+
|
52
|
+
date_field = field_label.sibling('.flatpickr-alt-input')
|
53
|
+
date_field.click # Open the widget
|
54
|
+
|
55
|
+
yield(date_field)
|
56
|
+
|
57
|
+
date_field.send_keys :tab # Close the date picker widget
|
58
|
+
end
|
59
|
+
|
60
|
+
def within_open_flatpickr(label_text)
|
61
|
+
with_open_flatpickr(label_text) do
|
62
|
+
within find(:xpath, "/html/body/div[contains(@class, 'flatpickr-calendar')]") { yield }
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def within_flatpickr_months
|
67
|
+
within find('.flatpickr-months .flatpickr-month .flatpickr-current-month') { yield }
|
68
|
+
end
|
69
|
+
|
70
|
+
def within_flatpickr_time
|
71
|
+
within find('.flatpickr-time') { yield }
|
72
|
+
end
|
73
|
+
|
74
|
+
def select_flatpickr_month(month)
|
75
|
+
find("select.flatpickr-monthDropdown-months > option:nth-child(#{month.to_i})").select_option
|
76
|
+
end
|
77
|
+
|
78
|
+
def fill_in_flatpickr_year(year)
|
79
|
+
find('input.cur-year').set(year)
|
80
|
+
end
|
81
|
+
|
82
|
+
def click_on_flatpickr_day(day)
|
83
|
+
within_flatpickr_days do
|
84
|
+
find('span', text: day).click
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def within_flatpickr_days
|
89
|
+
within find('.flatpickr-innerContainer > .flatpickr-rContainer > .flatpickr-days') { yield }
|
90
|
+
end
|
91
|
+
|
92
|
+
def select_flatpickr_hour(hour)
|
93
|
+
find('input.flatpickr-hour').set(hour)
|
94
|
+
end
|
95
|
+
|
96
|
+
def select_flatpickr_min(min)
|
97
|
+
find('input.flatpickr-minute').set(min)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
module Spree
|
2
|
+
module TestingSupport
|
3
|
+
module LocaleHelpers
|
4
|
+
# rubocop:disable Layout/ArgumentAlignment
|
5
|
+
def add_french_locales
|
6
|
+
I18n.backend.store_translations(:fr,
|
7
|
+
spree: {
|
8
|
+
added_to_cart: 'Ajouté au panier avec succès!',
|
9
|
+
continue_shopping: 'Continuer vos achats',
|
10
|
+
choose_currency: 'Choisir la devise',
|
11
|
+
internationalization: 'Internationalisation',
|
12
|
+
i18n: {
|
13
|
+
language: 'Langue',
|
14
|
+
this_file_language: 'Français (FR)'
|
15
|
+
},
|
16
|
+
cart_page: {
|
17
|
+
header: 'Votre panier',
|
18
|
+
empty_info: 'Votre panier est vide',
|
19
|
+
add_promo_code: 'AJOUTER UN CODE PROMOTIONNEL',
|
20
|
+
checkout: 'Passer la commande',
|
21
|
+
product: 'articles',
|
22
|
+
quantity: 'quantité',
|
23
|
+
title: 'Panier',
|
24
|
+
change_quantity: 'Changer la quantité',
|
25
|
+
remove_from_cart: 'Retirer du panier'
|
26
|
+
},
|
27
|
+
shopping_cart: 'Panier',
|
28
|
+
cart: 'Panier',
|
29
|
+
close: 'Fermer',
|
30
|
+
search: 'Rechercher',
|
31
|
+
home: 'Accueil',
|
32
|
+
nav_bar: {
|
33
|
+
admin_panel: "Panneau d'administration",
|
34
|
+
close_menu: 'Fermer le menu',
|
35
|
+
go_to_previous_menu: 'Vers le menu précédent',
|
36
|
+
show_menu: 'Afficher le menu',
|
37
|
+
show_search: 'Afficher la recherche',
|
38
|
+
show_user_menu: 'Afficher le menu utilisateur',
|
39
|
+
change_country: 'Changer de pays',
|
40
|
+
desktop: 'Navigation sur le bureau',
|
41
|
+
mobile: 'Navigation mobile'
|
42
|
+
},
|
43
|
+
login: 'Connexion',
|
44
|
+
logout: 'Se déconnecter',
|
45
|
+
sign_up: 'Enregistrer',
|
46
|
+
email: 'Courriel',
|
47
|
+
password: 'Mot de passe',
|
48
|
+
remember_me: 'Se souvenir de moi',
|
49
|
+
my_account: 'Mon compte',
|
50
|
+
my_orders: 'Mes commandes',
|
51
|
+
logged_in_succesfully: 'Connexion réussie'
|
52
|
+
})
|
53
|
+
end
|
54
|
+
# rubocop:enable Layout/ArgumentAlignment
|
55
|
+
|
56
|
+
def open_i18n_menu
|
57
|
+
find('#header #internationalization-button-desktop').click
|
58
|
+
expect(page).to have_selector('#internationalization-options-desktop')
|
59
|
+
end
|
60
|
+
|
61
|
+
def close_i18n_menu
|
62
|
+
find('#header #internationalization-button-desktop').click
|
63
|
+
expect(page).not_to have_selector('#internationalization-options-desktop')
|
64
|
+
end
|
65
|
+
|
66
|
+
def switch_to_currency(currency)
|
67
|
+
open_i18n_menu
|
68
|
+
select currency, from: 'switch_to_currency'
|
69
|
+
expect(page).to have_no_css '.turbolinks-progress-bar'
|
70
|
+
end
|
71
|
+
|
72
|
+
def switch_to_locale(locale)
|
73
|
+
open_i18n_menu
|
74
|
+
select locale, from: 'Language'
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Helper services with prepended ServiceModule
|
2
|
+
# https://gitlab.com/gitlab-org/gitlab-foss/-/issues/33587
|
3
|
+
#
|
4
|
+
# ex:
|
5
|
+
# expect_next_instance_of(service_class) do |instance|
|
6
|
+
# expect(instance).to receive(:call)
|
7
|
+
# end
|
8
|
+
|
9
|
+
module NextInstanceOf
|
10
|
+
def expect_next_instance_of(klass, *new_args)
|
11
|
+
stub_new(expect(klass), *new_args) do |expectation|
|
12
|
+
yield(expectation)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def allow_next_instance_of(klass, *new_args)
|
17
|
+
stub_new(allow(klass), *new_args) do |allowance|
|
18
|
+
yield(allowance)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def stub_new(target, *new_args)
|
25
|
+
receive_new = receive(:new)
|
26
|
+
receive_new.with(*new_args) if new_args.any?
|
27
|
+
|
28
|
+
target.to receive_new.and_wrap_original do |method, *original_args|
|
29
|
+
method.call(*original_args).tap do |instance|
|
30
|
+
yield(instance)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
RSpec.configure do |config|
|
37
|
+
config.include NextInstanceOf
|
38
|
+
end
|
@@ -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,9 +39,10 @@ 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'
|