spree_core 4.1.15 → 4.2.0.beta

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