spree_core 4.1.15 → 4.2.0.beta

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.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/spree/base_controller.rb +1 -0
  3. data/app/helpers/spree/base_helper.rb +23 -2
  4. data/app/helpers/spree/mail_helper.rb +24 -0
  5. data/app/mailers/spree/base_mailer.rb +17 -3
  6. data/app/mailers/spree/order_mailer.rb +11 -2
  7. data/app/mailers/spree/reimbursement_mailer.rb +4 -2
  8. data/app/mailers/spree/shipment_mailer.rb +4 -2
  9. data/app/models/concerns/spree/default_price.rb +2 -1
  10. data/app/models/concerns/spree/user_methods.rb +11 -5
  11. data/app/models/spree/app_configuration.rb +5 -0
  12. data/app/models/spree/app_dependencies.rb +1 -7
  13. data/app/models/spree/line_item.rb +11 -3
  14. data/app/models/spree/option_type.rb +5 -1
  15. data/app/models/spree/order/address_book.rb +20 -7
  16. data/app/models/spree/order/store_credit.rb +0 -8
  17. data/app/models/spree/order.rb +28 -12
  18. data/app/models/spree/price.rb +26 -2
  19. data/app/models/spree/product.rb +17 -7
  20. data/app/models/spree/promotion_handler/coupon.rb +3 -2
  21. data/app/models/spree/reimbursement.rb +2 -0
  22. data/app/models/spree/shipment.rb +2 -5
  23. data/app/models/spree/stock_location.rb +13 -2
  24. data/app/models/spree/store.rb +19 -2
  25. data/app/models/spree/variant.rb +15 -2
  26. data/app/presenters/spree/variant_presenter.rb +7 -0
  27. data/app/presenters/spree/variants/option_types_presenter.rb +1 -0
  28. data/app/services/spree/checkout/update.rb +2 -13
  29. data/app/views/layouts/spree/base_mailer.html.erb +45 -40
  30. data/app/views/spree/order_mailer/cancel_email.html.erb +19 -25
  31. data/app/views/spree/order_mailer/cancel_email.text.erb +24 -2
  32. data/app/views/spree/order_mailer/confirm_email.html.erb +18 -65
  33. data/app/views/spree/order_mailer/confirm_email.text.erb +2 -1
  34. data/app/views/spree/order_mailer/store_owner_notification_email.html.erb +23 -0
  35. data/app/views/spree/order_mailer/store_owner_notification_email.text.erb +38 -0
  36. data/app/views/spree/reimbursement_mailer/reimbursement_email.html.erb +53 -58
  37. data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +3 -1
  38. data/app/views/spree/shared/_base_mailer_footer.html.erb +6 -14
  39. data/app/views/spree/shared/_base_mailer_header.html.erb +12 -32
  40. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +293 -625
  41. data/app/views/spree/shared/_purchased_items_table.html.erb +60 -0
  42. data/app/views/spree/shared/purchased_items_table/_adjustment.html.erb +13 -0
  43. data/app/views/spree/shared/purchased_items_table/_line_item.html.erb +27 -0
  44. data/app/views/spree/shared/purchased_items_table/_subtotal.html.erb +13 -0
  45. data/app/views/spree/shared/purchased_items_table/_total.html.erb +13 -0
  46. data/app/views/spree/shipment_mailer/shipped_email.html.erb +31 -36
  47. data/app/views/spree/shipment_mailer/shipped_email.text.erb +2 -1
  48. data/config/initializers/assets.rb +1 -0
  49. data/config/locales/en.yml +113 -13
  50. data/db/default/spree/stores.rb +11 -10
  51. data/db/migrate/20140309033438_create_store_from_preferences.rb +1 -1
  52. data/db/migrate/20191016134113_add_deafult_value_for_store_default_currency.rb +1 -1
  53. data/db/migrate/20191017121054_add_supported_currencies_to_store.rb +10 -0
  54. data/db/migrate/20200102141311_add_social_to_spree_stores.rb +4 -1
  55. data/db/migrate/20200212144523_add_hide_from_nav_to_taxons.rb +1 -1
  56. data/db/migrate/20200308210757_add_default_locale_to_spree_store.rb +7 -0
  57. data/db/migrate/20200310145140_add_customer_support_email_to_spree_store.rb +7 -0
  58. data/db/migrate/20200421095017_add_compare_at_amount_to_spree_prices.rb +7 -0
  59. data/db/migrate/20200423123001_add_default_country_id_to_spree_store.rb +9 -0
  60. data/db/migrate/20200430072209_add_footer_fields_to_spree_stores.rb +8 -0
  61. data/db/migrate/20200513154939_add_show_property_to_spree_product_properties.rb +5 -0
  62. data/db/migrate/20200607161221_add_store_owner_order_notification_delivered_to_spree_orders.rb +7 -0
  63. data/db/migrate/20200607161222_add_new_order_notifications_email_to_spree_stores.rb +7 -0
  64. data/db/migrate/20200826075557_add_unique_index_on_taxon_id_and_product_id_to_spree_products_taxons.rb +5 -0
  65. data/lib/generators/spree/dummy/dummy_generator.rb +1 -0
  66. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -2
  67. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -2
  68. data/lib/generators/spree/mailers_preview/mailers_preview_generator.rb +23 -0
  69. data/lib/generators/spree/mailers_preview/templates/mailers/previews/order_preview.rb +13 -0
  70. data/lib/generators/spree/mailers_preview/templates/mailers/previews/reimbursement_preview.rb +5 -0
  71. data/lib/generators/spree/mailers_preview/templates/mailers/previews/shipment_preview.rb +5 -0
  72. data/lib/generators/spree/mailers_preview/templates/mailers/previews/user_preview.rb +11 -0
  73. data/lib/spree/core/controller_helpers/common.rb +1 -0
  74. data/lib/spree/core/controller_helpers/currency_helpers.rb +15 -0
  75. data/lib/spree/core/controller_helpers/store.rb +12 -1
  76. data/lib/spree/core/version.rb +1 -1
  77. data/lib/spree/core.rb +1 -0
  78. data/lib/spree/permitted_attributes.rb +7 -4
  79. data/lib/spree/testing_support/authorization_helpers.rb +7 -4
  80. data/lib/spree/testing_support/capybara_ext.rb +0 -7
  81. data/lib/spree/testing_support/factories/store_factory.rb +11 -8
  82. data/spree_core.gemspec +6 -6
  83. data/vendor/assets/javascripts/cleave.js +1669 -0
  84. metadata +44 -32
  85. data/app/finders/spree/addresses/find.rb +0 -17
  86. data/app/models/spree/order_contents.rb +0 -31
  87. data/app/services/spree/account/addresses/base.rb +0 -39
  88. data/app/services/spree/account/addresses/create.rb +0 -18
  89. data/app/services/spree/account/addresses/update.rb +0 -18
  90. data/app/views/spree/order_mailer/_adjustment.html.erb +0 -8
  91. data/app/views/spree/order_mailer/_subtotal.html.erb +0 -8
  92. data/app/views/spree/order_mailer/_total.html.erb +0 -8
@@ -0,0 +1,23 @@
1
+ require 'rails/generators'
2
+ require 'spree/core'
3
+
4
+ module Spree
5
+ class MailersPreviewGenerator < Rails::Generators::Base
6
+ desc 'Generates mailers preview for development proposes'
7
+
8
+ def self.source_paths
9
+ [
10
+ File.expand_path('templates', __dir__)
11
+ ]
12
+ end
13
+
14
+ def copy_mailers_previews
15
+ preview_path = Rails.application.config.action_mailer.preview_path || 'test/mailers/previews'
16
+
17
+ template 'mailers/previews/order_preview.rb', "#{preview_path}/order_preview.rb"
18
+ template 'mailers/previews/shipment_preview.rb', "#{preview_path}/shipment_preview.rb"
19
+ template 'mailers/previews/reimbursement_preview.rb', "#{preview_path}/reimbursement_preview.rb"
20
+ template 'mailers/previews/user_preview.rb', "#{preview_path}/user_preview.rb"
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,13 @@
1
+ class OrderPreview < ActionMailer::Preview
2
+ def confirm_email
3
+ Spree::OrderMailer.confirm_email(Spree::Order.complete.first)
4
+ end
5
+
6
+ def cancel_email
7
+ Spree::OrderMailer.cancel_email(Spree::Order.complete.first)
8
+ end
9
+
10
+ def store_owner_notification_email
11
+ Spree::OrderMailer.store_owner_notification_email(Spree::Order.complete.first)
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ class ReimbursementPreview < ActionMailer::Preview
2
+ def reimbursement_email
3
+ Spree::ReimbursementMailer.reimbursement_email(Spree::Reimbursement.first)
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class ShipmentPreview < ActionMailer::Preview
2
+ def shipped_email
3
+ Spree::ShipmentMailer.shipped_email(Spree::Shipment.shipped.first)
4
+ end
5
+ end
@@ -0,0 +1,11 @@
1
+ class UserPreview < ActionMailer::Preview
2
+ def reset_password_instructions
3
+ Spree::UserMailer.reset_password_instructions(Spree.user_class.first, 'your_token', { current_store_id: Spree::Store.default.id })
4
+ end
5
+
6
+ if Spree::Auth::Config[:confirmable]
7
+ def confirmation_instructions
8
+ Spree::UserMailer.confirmation_instructions(Spree.user_class.first, 'your_token')
9
+ end
10
+ end
11
+ end
@@ -44,6 +44,7 @@ module Spree
44
44
 
45
45
  def set_user_language
46
46
  locale = session[:locale]
47
+ locale = store_locale if respond_to?(:store_locale, true) && locale.blank?
47
48
  locale = config_locale if respond_to?(:config_locale, true) && locale.blank?
48
49
  locale = Rails.application.config.i18n.default_locale if locale.blank?
49
50
  locale = I18n.default_locale unless I18n.available_locales.map(&:to_s).include?(locale.to_s)
@@ -0,0 +1,15 @@
1
+ module Spree
2
+ module Core
3
+ module ControllerHelpers
4
+ module CurrencyHelpers
5
+ def self.included(receiver)
6
+ receiver.send :helper_method, :supported_currencies
7
+ end
8
+
9
+ def supported_currencies
10
+ current_store.supported_currencies_list
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -5,13 +5,24 @@ module Spree
5
5
  extend ActiveSupport::Concern
6
6
 
7
7
  included do
8
+ helper_method :supported_currencies
8
9
  helper_method :current_currency
9
10
  helper_method :current_store
10
11
  helper_method :current_price_options
11
12
  end
12
13
 
13
14
  def current_currency
14
- current_store.default_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
15
26
  end
16
27
 
17
28
  def current_store
@@ -1,5 +1,5 @@
1
1
  module Spree
2
2
  def self.version
3
- '4.1.15'
3
+ '4.2.0.beta'
4
4
  end
5
5
  end
data/lib/spree/core.rb CHANGED
@@ -104,3 +104,4 @@ require 'spree/core/controller_helpers/order'
104
104
  require 'spree/core/controller_helpers/search'
105
105
  require 'spree/core/controller_helpers/store'
106
106
  require 'spree/core/controller_helpers/strong_parameters'
107
+ require 'spree/core/controller_helpers/currency_helpers'
@@ -64,7 +64,7 @@ module Spree
64
64
  :meta_keywords, :price, :sku, :deleted_at, :prototype_id,
65
65
  :option_values_hash, :weight, :height, :width, :depth,
66
66
  :shipping_category_id, :tax_category_id,
67
- :cost_currency, :cost_price,
67
+ :cost_currency, :cost_price, :compare_at_price,
68
68
  option_type_ids: [], taxon_ids: []
69
69
  ]
70
70
 
@@ -96,9 +96,12 @@ module Spree
96
96
  :quantity, :stock_item, :stock_item_id, :originator, :action
97
97
  ]
98
98
 
99
- @@store_attributes = [:name, :url, :seo_title, :code, :meta_keywords,
99
+ @@store_attributes = [:name, :url, :seo_title, :code, :meta_keywords, :logo,
100
100
  :meta_description, :default_currency, :mail_from_address,
101
- :facebook, :twitter, :instagram]
101
+ :customer_support_email, :facebook, :twitter, :instagram,
102
+ :description, :address, :contact_email, :contact_phone,
103
+ :default_locale, :default_country_id, :supported_currencies,
104
+ :new_order_notifications_email]
102
105
 
103
106
  @@store_credit_attributes = %i[amount currency category_id memo]
104
107
 
@@ -115,7 +118,7 @@ module Spree
115
118
  @@variant_attributes = [
116
119
  :name, :presentation, :cost_price, :discontinue_on, :lock_version,
117
120
  :position, :track_inventory,
118
- :product_id, :product, :option_values_attributes, :price,
121
+ :product_id, :product, :option_values_attributes, :price, :compare_at_price,
119
122
  :weight, :height, :width, :depth, :sku, :cost_currency,
120
123
  options: [:name, :value], option_value_ids: []
121
124
  ]
@@ -27,13 +27,14 @@ module Spree
27
27
 
28
28
  def stub_authorization!
29
29
  ability = build_ability
30
+ ability_class = Spree::Dependencies.ability_class.constantize
30
31
 
31
32
  after(:all) do
32
- Spree::Ability.remove_ability(ability)
33
+ ability_class.remove_ability(ability)
33
34
  end
34
35
 
35
36
  before(:all) do
36
- Spree::Ability.register_ability(ability)
37
+ ability_class.register_ability(ability)
37
38
  end
38
39
 
39
40
  before do
@@ -45,11 +46,13 @@ module Spree
45
46
 
46
47
  def custom_authorization!(&block)
47
48
  ability = build_ability(&block)
49
+ ability_class = Spree::Dependencies.ability_class.constantize
50
+
48
51
  after(:all) do
49
- Spree::Ability.remove_ability(ability)
52
+ ability_class.remove_ability(ability)
50
53
  end
51
54
  before(:all) do
52
- Spree::Ability.register_ability(ability)
55
+ ability_class.register_ability(ability)
53
56
  end
54
57
  end
55
58
  end
@@ -63,13 +63,6 @@ rescue Selenium::WebDriver::Error::TimeOutError
63
63
  default_options[:error].nil? ? false : raise(default_options[:error])
64
64
  end
65
65
 
66
- # Usage examples:
67
- # fill_in_with_force 'CVC', with: 123
68
- def fill_in_with_force(locator, with:)
69
- field_id = find_field(locator)[:id]
70
- page.execute_script "document.getElementById('#{field_id}').value = '#{with}';"
71
- end
72
-
73
66
  Capybara.configure do |config|
74
67
  config.match = :smart
75
68
  config.ignore_hidden_elements = true
@@ -1,12 +1,15 @@
1
1
  FactoryBot.define do
2
2
  factory :store, class: Spree::Store do
3
- sequence(:code) { |i| "spree_#{i}" }
4
- name { 'Spree Test Store' }
5
- url { 'www.example.com' }
6
- mail_from_address { 'spree@example.org' }
7
- default_currency { 'USD' }
8
- facebook { 'spreecommerce' }
9
- twitter { 'spreecommerce' }
10
- instagram { 'spreecommerce' }
3
+ sequence(:code) { |i| "spree_#{i}" }
4
+ name { 'Spree Test Store' }
5
+ url { 'www.example.com' }
6
+ mail_from_address { 'no-reply@example.com' }
7
+ customer_support_email { 'support@example.com' }
8
+ new_order_notifications_email { 'store-owner@example.com' }
9
+ default_currency { 'USD' }
10
+ supported_currencies { 'USD,EUR,GBP' }
11
+ facebook { 'spreecommerce' }
12
+ twitter { 'spreecommerce' }
13
+ instagram { 'spreecommerce' }
11
14
  end
12
15
  end
data/spree_core.gemspec CHANGED
@@ -6,11 +6,11 @@ Gem::Specification.new do |s|
6
6
  s.platform = Gem::Platform::RUBY
7
7
  s.name = 'spree_core'
8
8
  s.version = Spree.version
9
- s.author = 'Sean Schofield'
10
- s.email = 'sean@spreecommerce.com'
9
+ s.authors = ['Sean Schofield', 'Spark Solutions']
10
+ s.email = 'hello@spreecommerce.org'
11
11
  s.summary = 'The bare bones necessary for Spree.'
12
12
  s.description = 'The bare bones necessary for Spree.'
13
- s.homepage = 'http://spreecommerce.org'
13
+ s.homepage = 'https://spreecommerce.org'
14
14
  s.license = 'BSD-3-Clause'
15
15
 
16
16
  s.metadata = {
@@ -32,14 +32,14 @@ Gem::Specification.new do |s|
32
32
  s.add_dependency 'carmen', '>= 1.0', '< 1.2'
33
33
  s.add_dependency 'cancancan', '~> 3.0'
34
34
  s.add_dependency 'ffaker', '~> 2.9'
35
- s.add_dependency 'friendly_id', '>= 5.2.1', '< 5.4.0'
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
37
37
  s.add_dependency 'kaminari', '~> 1.2.1'
38
38
  s.add_dependency 'money', '~> 6.13'
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', '>= 5.2', '< 6.1'
42
+ s.add_dependency 'rails', '~> 6.0.0'
43
43
  s.add_dependency 'ransack', '~> 2.3.0'
44
44
  s.add_dependency 'responders'
45
45
  s.add_dependency 'state_machines-activerecord', '~> 0.6'
@@ -48,7 +48,7 @@ Gem::Specification.new do |s|
48
48
  s.add_dependency 'twitter_cldr', '>= 4.3', '< 7.0'
49
49
  s.add_dependency 'sprockets', '~> 3.7'
50
50
  s.add_dependency 'sprockets-rails'
51
- s.add_dependency 'mini_magick', '>= 4.9.4', '< 4.12.0'
51
+ s.add_dependency 'mini_magick', '>= 4.9.4', '< 4.11.0'
52
52
  s.add_dependency 'image_processing', '~> 1.2'
53
53
 
54
54
  s.add_development_dependency 'email_spec', '~> 2.2'