spree_core 4.2.0.rc2 → 4.2.1
Sign up to get free protection for your applications and to get access to all the features.
- 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'
|