spree_core 4.2.0.rc3 → 4.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js +19 -0
  3. data/app/controllers/spree/base_controller.rb +2 -1
  4. data/app/controllers/spree/errors_controller.rb +11 -0
  5. data/app/finders/spree/orders/find_current.rb +1 -1
  6. data/app/finders/spree/products/find.rb +14 -3
  7. data/app/helpers/spree/base_helper.rb +2 -1
  8. data/app/helpers/spree/currency_helper.rb +34 -0
  9. data/app/helpers/spree/locale_helper.rb +31 -0
  10. data/app/helpers/spree/products_helper.rb +37 -12
  11. data/app/models/concerns/spree/product_scopes.rb +1 -1
  12. data/app/models/concerns/spree/user_payment_source.rb +1 -1
  13. data/app/models/spree/ability.rb +45 -30
  14. data/app/models/spree/app_configuration.rb +2 -2
  15. data/app/models/spree/app_dependencies.rb +3 -1
  16. data/app/models/spree/credit_card.rb +4 -0
  17. data/app/models/spree/image.rb +14 -14
  18. data/app/models/spree/line_item.rb +6 -9
  19. data/app/models/spree/price.rb +1 -1
  20. data/app/models/spree/product.rb +29 -15
  21. data/app/models/spree/promotion/rules/option_value.rb +1 -1
  22. data/app/models/spree/store.rb +38 -9
  23. data/app/models/spree/variant.rb +8 -8
  24. data/app/paginators/spree/shared/paginate.rb +8 -1
  25. data/app/presenters/spree/variant_presenter.rb +2 -5
  26. data/app/services/spree/build_localized_redirect_url.rb +101 -0
  27. data/app/services/spree/cart/estimate_shipping_rates.rb +1 -1
  28. data/app/views/spree/errors/forbidden.html.erb +0 -0
  29. data/app/views/spree/errors/unauthorized.html.erb +0 -0
  30. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +13 -2
  31. data/app/views/spree/shared/_purchased_items_table.html.erb +15 -6
  32. data/app/views/spree/shared/purchased_items_table/_adjustment.html.erb +2 -2
  33. data/app/views/spree/shared/purchased_items_table/_line_item.html.erb +2 -2
  34. data/config/locales/en.yml +8 -54
  35. data/config/routes.rb +2 -1
  36. data/db/default/spree/stores.rb +1 -0
  37. data/db/default/spree/zones.rb +4 -1
  38. data/db/migrate/20191017121054_add_supported_currencies_to_store.rb +1 -0
  39. data/db/migrate/20201012091259_add_filterable_column_to_spree_option_types.rb +6 -2
  40. data/db/migrate/20210120142527_ensure_default_locale_in_spree_stores.rb +5 -0
  41. data/db/migrate/20210205211040_add_supported_locales_to_spree_stores.rb +11 -0
  42. data/db/migrate/20210215202602_migrate_spree_i18n_globalize_config.rb +22 -0
  43. data/lib/generators/spree/install/install_generator.rb +9 -6
  44. data/lib/spree/core.rb +2 -1
  45. data/lib/spree/core/controller_helpers/auth.rb +3 -1
  46. data/lib/spree/core/controller_helpers/common.rb +6 -8
  47. data/lib/spree/core/controller_helpers/currency.rb +54 -0
  48. data/lib/spree/core/controller_helpers/locale.rb +58 -0
  49. data/lib/spree/core/controller_helpers/search.rb +1 -1
  50. data/lib/spree/core/controller_helpers/store.rb +4 -16
  51. data/lib/spree/core/version.rb +3 -1
  52. data/lib/spree/i18n.rb +12 -0
  53. data/lib/spree/permitted_attributes.rb +1 -1
  54. data/lib/spree/service_module.rb +2 -2
  55. data/lib/spree/testing_support/common_rake.rb +1 -1
  56. data/lib/spree/testing_support/controller_requests.rb +10 -10
  57. data/lib/spree/testing_support/factories/stock_location_factory.rb +2 -2
  58. data/lib/spree/testing_support/factories/store_factory.rb +1 -0
  59. data/lib/spree/testing_support/flatpickr_capybara.rb +101 -0
  60. data/lib/spree/testing_support/locale_helpers.rb +78 -0
  61. data/lib/spree/testing_support/next_instance_of.rb +38 -0
  62. data/spree_core.gemspec +1 -1
  63. metadata +20 -9
  64. data/lib/generators/spree/install/templates/config/initializers/spree_storefront.rb +0 -1
  65. data/lib/generators/spree/install/templates/config/spree_storefront.yml +0 -67
  66. data/lib/spree/core/controller_helpers/currency_helpers.rb +0 -15
@@ -5,7 +5,7 @@ module Spree
5
5
  def build_searcher(params)
6
6
  Spree::Config.searcher_class.new(params).tap do |searcher|
7
7
  searcher.current_user = try_spree_current_user
8
- searcher.current_currency = current_currency
8
+ searcher.current_currency = current_currency&.upcase
9
9
  end
10
10
  end
11
11
  end
@@ -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+
@@ -1,5 +1,7 @@
1
1
  module Spree
2
+ VERSION = '4.2.2'.freeze
3
+
2
4
  def self.version
3
- '4.2.0.rc3'
5
+ VERSION
4
6
  end
5
7
  end
data/lib/spree/i18n.rb CHANGED
@@ -16,6 +16,18 @@ module Spree
16
16
  TranslationHelperWrapper.new.translate(key, **options)
17
17
  end
18
18
 
19
+ def available_locales
20
+ locales_from_i18n = I18n.available_locales
21
+ locales =
22
+ if defined?(SpreeI18n)
23
+ (SpreeI18n::Locale.all << :en).map(&:to_s)
24
+ else
25
+ [Rails.application.config.i18n.default_locale, I18n.locale, :en]
26
+ end
27
+
28
+ (locales + locales_from_i18n).uniq.compact
29
+ end
30
+
19
31
  alias t translate
20
32
  end
21
33
  end
@@ -99,7 +99,7 @@ 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, :contact_phone,
102
+ :description, :address, :contact_phone, :supported_locales,
103
103
  :default_locale, :default_country_id, :supported_currencies,
104
104
  :new_order_notifications_email, :mailer_logo, :checkout_zone_id, :seo_robots]
105
105
 
@@ -1,8 +1,8 @@
1
1
  module Spree
2
2
  module ServiceModule
3
3
  module Callable
4
- def call(*args)
5
- new.call(*args).tap do |result|
4
+ def call(*args, **kwargs)
5
+ new.call(*args, **kwargs).tap do |result|
6
6
  return yield(result) if block_given?
7
7
  end
8
8
  end
@@ -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 4.1.
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 4.1.
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 4.1.
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 4.1.
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 4.1.
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 4.1.
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 4.1.
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 4.1.
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 4.1.
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 4.1.
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
@@ -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.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)
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' }
@@ -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
data/spree_core.gemspec CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |s|
30
30
  s.add_dependency 'acts_as_list', '~> 0.8'
31
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.0'
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.0.rc3
4
+ version: 4.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-01-18 00:00:00.000000000 Z
12
+ date: 2021-04-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activemerchant
@@ -85,14 +85,14 @@ dependencies:
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '3.0'
88
+ version: '3.2'
89
89
  type: :runtime
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '3.0'
95
+ version: '3.2'
96
96
  - !ruby/object:Gem::Dependency
97
97
  name: ffaker
98
98
  requirement: !ruby/object:Gem::Requirement
@@ -447,6 +447,7 @@ files:
447
447
  - app/assets/images/noimage/small.png
448
448
  - app/assets/javascripts/spree.js
449
449
  - app/controllers/spree/base_controller.rb
450
+ - app/controllers/spree/errors_controller.rb
450
451
  - app/finders/spree/addresses/find.rb
451
452
  - app/finders/spree/base_finder.rb
452
453
  - app/finders/spree/countries/find.rb
@@ -459,6 +460,8 @@ files:
459
460
  - app/finders/spree/variants/option_types_finder.rb
460
461
  - app/finders/spree/variants/visible_finder.rb
461
462
  - app/helpers/spree/base_helper.rb
463
+ - app/helpers/spree/currency_helper.rb
464
+ - app/helpers/spree/locale_helper.rb
462
465
  - app/helpers/spree/mail_helper.rb
463
466
  - app/helpers/spree/products_helper.rb
464
467
  - app/mailers/spree/base_mailer.rb
@@ -665,6 +668,7 @@ files:
665
668
  - app/services/spree/account/addresses/create.rb
666
669
  - app/services/spree/account/addresses/helper.rb
667
670
  - app/services/spree/account/addresses/update.rb
671
+ - app/services/spree/build_localized_redirect_url.rb
668
672
  - app/services/spree/cart/add_item.rb
669
673
  - app/services/spree/cart/create.rb
670
674
  - app/services/spree/cart/estimate_shipping_rates.rb
@@ -688,6 +692,8 @@ files:
688
692
  - app/validators/db_maximum_length_validator.rb
689
693
  - app/validators/email_validator.rb
690
694
  - app/views/layouts/spree/base_mailer.html.erb
695
+ - app/views/spree/errors/forbidden.html.erb
696
+ - app/views/spree/errors/unauthorized.html.erb
691
697
  - app/views/spree/order_mailer/cancel_email.html.erb
692
698
  - app/views/spree/order_mailer/cancel_email.text.erb
693
699
  - app/views/spree/order_mailer/confirm_email.html.erb
@@ -1014,6 +1020,9 @@ files:
1014
1020
  - db/migrate/20210114182625_create_spree_payment_methods_stores.rb
1015
1021
  - db/migrate/20210114220232_migrate_data_payment_methods_stores.rb
1016
1022
  - db/migrate/20210117112551_remove_store_id_from_spree_payment_methods.rb
1023
+ - db/migrate/20210120142527_ensure_default_locale_in_spree_stores.rb
1024
+ - db/migrate/20210205211040_add_supported_locales_to_spree_stores.rb
1025
+ - db/migrate/20210215202602_migrate_spree_i18n_globalize_config.rb
1017
1026
  - db/seeds.rb
1018
1027
  - lib/friendly_id/slug_rails5_patch.rb
1019
1028
  - lib/generators/spree/custom_user/custom_user_generator.rb
@@ -1034,8 +1043,6 @@ files:
1034
1043
  - lib/generators/spree/dummy_model/templates/model.rb.tt
1035
1044
  - lib/generators/spree/install/install_generator.rb
1036
1045
  - lib/generators/spree/install/templates/config/initializers/spree.rb
1037
- - lib/generators/spree/install/templates/config/initializers/spree_storefront.rb
1038
- - lib/generators/spree/install/templates/config/spree_storefront.yml
1039
1046
  - lib/generators/spree/install/templates/vendor/assets/javascripts/spree/backend/all.js
1040
1047
  - lib/generators/spree/install/templates/vendor/assets/javascripts/spree/frontend/all.js
1041
1048
  - lib/generators/spree/install/templates/vendor/assets/stylesheets/spree/backend/all.css
@@ -1049,7 +1056,8 @@ files:
1049
1056
  - lib/spree/core/components.rb
1050
1057
  - lib/spree/core/controller_helpers/auth.rb
1051
1058
  - lib/spree/core/controller_helpers/common.rb
1052
- - lib/spree/core/controller_helpers/currency_helpers.rb
1059
+ - lib/spree/core/controller_helpers/currency.rb
1060
+ - lib/spree/core/controller_helpers/locale.rb
1053
1061
  - lib/spree/core/controller_helpers/order.rb
1054
1062
  - lib/spree/core/controller_helpers/search.rb
1055
1063
  - lib/spree/core/controller_helpers/store.rb
@@ -1139,9 +1147,12 @@ files:
1139
1147
  - lib/spree/testing_support/factories/zone_factory.rb
1140
1148
  - lib/spree/testing_support/factories/zone_member_factory.rb
1141
1149
  - lib/spree/testing_support/flash.rb
1150
+ - lib/spree/testing_support/flatpickr_capybara.rb
1142
1151
  - lib/spree/testing_support/i18n.rb
1143
1152
  - lib/spree/testing_support/image_helpers.rb
1144
1153
  - lib/spree/testing_support/kernel.rb
1154
+ - lib/spree/testing_support/locale_helpers.rb
1155
+ - lib/spree/testing_support/next_instance_of.rb
1145
1156
  - lib/spree/testing_support/order_walkthrough.rb
1146
1157
  - lib/spree/testing_support/preferences.rb
1147
1158
  - lib/spree/testing_support/rspec_retry_config.rb
@@ -1164,9 +1175,9 @@ licenses:
1164
1175
  - BSD-3-Clause
1165
1176
  metadata:
1166
1177
  bug_tracker_uri: https://github.com/spree/spree/issues
1167
- changelog_uri: https://github.com/spree/spree/releases/tag/v4.2.0.rc3
1178
+ changelog_uri: https://github.com/spree/spree/releases/tag/v4.2.2
1168
1179
  documentation_uri: https://guides.spreecommerce.org/
1169
- source_code_uri: https://github.com/spree/spree/tree/v4.2.0.rc3
1180
+ source_code_uri: https://github.com/spree/spree/tree/v4.2.2
1170
1181
  post_install_message:
1171
1182
  rdoc_options: []
1172
1183
  require_paths: