spree_core 4.0.7 → 4.1.0.rc1

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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js +0 -1
  3. data/app/finders/spree/products/find.rb +19 -6
  4. data/app/finders/spree/variants/option_types_finder.rb +21 -0
  5. data/app/finders/spree/variants/visible_finder.rb +22 -0
  6. data/app/helpers/spree/base_helper.rb +48 -18
  7. data/app/helpers/spree/products_helper.rb +76 -8
  8. data/app/models/concerns/spree/user_methods.rb +2 -2
  9. data/app/models/spree/app_dependencies.rb +1 -7
  10. data/app/models/spree/credit_card.rb +4 -5
  11. data/app/models/spree/image.rb +52 -3
  12. data/app/models/spree/image/configuration/active_storage.rb +9 -1
  13. data/app/models/spree/line_item.rb +1 -2
  14. data/app/models/spree/option_type.rb +4 -0
  15. data/app/models/spree/order.rb +12 -12
  16. data/app/models/spree/order/address_book.rb +20 -7
  17. data/app/models/spree/payment_method.rb +8 -0
  18. data/app/models/spree/preferences/preferable.rb +1 -1
  19. data/app/models/spree/product.rb +7 -6
  20. data/app/models/spree/promotion/actions/create_item_adjustments.rb +1 -1
  21. data/app/models/spree/promotion_handler/coupon.rb +2 -1
  22. data/app/models/spree/return_item/eligibility_validator/base_validator.rb +1 -1
  23. data/app/models/spree/store.rb +2 -1
  24. data/app/models/spree/taxon.rb +2 -6
  25. data/app/models/spree/variant.rb +2 -14
  26. data/app/models/spree/zone.rb +6 -3
  27. data/app/presenters/spree/product_summary_presenter.rb +26 -0
  28. data/app/presenters/spree/variant_presenter.rb +69 -0
  29. data/app/presenters/spree/variants/option_types_presenter.rb +74 -0
  30. data/app/presenters/spree/variants/options_presenter.rb +49 -0
  31. data/app/services/spree/checkout/get_shipping_rates.rb +10 -7
  32. data/app/services/spree/checkout/update.rb +2 -13
  33. data/config/locales/en.yml +156 -14
  34. data/db/default/spree/stores.rb +8 -3
  35. data/db/migrate/20140309033438_create_store_from_preferences.rb +8 -4
  36. data/db/migrate/20191005121504_add_store_id_to_payment_methods.rb +7 -0
  37. data/db/migrate/20191016134113_add_deafult_value_for_store_default_currency.rb +5 -0
  38. data/db/migrate/20200102141311_add_social_to_spree_stores.rb +7 -0
  39. data/lib/generators/spree/dummy/dummy_generator.rb +2 -1
  40. data/lib/generators/spree/dummy/templates/initializers/bullet.rb +5 -0
  41. data/lib/generators/spree/install/install_generator.rb +13 -5
  42. data/lib/generators/spree/install/templates/config/initializers/spree.rb +0 -1
  43. data/lib/generators/spree/install/templates/config/initializers/spree_storefront.rb +1 -0
  44. data/lib/generators/spree/install/templates/config/spree_storefront.yml +67 -0
  45. data/lib/spree/core.rb +0 -1
  46. data/lib/spree/core/controller_helpers/order.rb +12 -6
  47. data/lib/spree/core/controller_helpers/store.rb +2 -2
  48. data/lib/spree/core/search/base.rb +59 -22
  49. data/lib/spree/core/version.rb +1 -3
  50. data/lib/spree/money.rb +8 -1
  51. data/lib/spree/permitted_attributes.rb +3 -2
  52. data/lib/spree/testing_support/capybara_ext.rb +0 -45
  53. data/lib/spree/testing_support/common_rake.rb +1 -1
  54. data/lib/spree/testing_support/factories/store_factory.rb +3 -0
  55. data/lib/spree/testing_support/order_walkthrough.rb +7 -3
  56. data/spree_core.gemspec +8 -14
  57. metadata +45 -24
  58. data/app/finders/spree/addresses/find.rb +0 -17
  59. data/app/services/spree/account/addresses/base.rb +0 -39
  60. data/app/services/spree/account/addresses/create.rb +0 -18
  61. data/app/services/spree/account/addresses/update.rb +0 -18
  62. data/lib/spree/database_type_utilities.rb +0 -12
@@ -39,7 +39,7 @@ module Spree
39
39
  ]
40
40
 
41
41
  @@checkout_attributes = [
42
- :coupon_code, :email, :shipping_method_id, :special_instructions, :use_billing,
42
+ :coupon_code, :email, :shipping_method_id, :special_instructions, :use_billing,
43
43
  :user_id, :bill_address_id, :ship_address_id
44
44
  ]
45
45
 
@@ -97,7 +97,8 @@ module Spree
97
97
  ]
98
98
 
99
99
  @@store_attributes = [:name, :url, :seo_title, :code, :meta_keywords,
100
- :meta_description, :default_currency, :mail_from_address]
100
+ :meta_description, :default_currency, :mail_from_address,
101
+ :facebook, :twitter, :instagram]
101
102
 
102
103
  @@store_credit_attributes = %i[amount currency category_id memo]
103
104
 
@@ -32,51 +32,6 @@ module CapybaraExt
32
32
  end
33
33
  end
34
34
 
35
- def select2_search(value, options)
36
- options[:from] = select2_from_label(options[:from])
37
- targetted_select2_search(value, options)
38
- end
39
-
40
- def targetted_select2_search(value, options)
41
- select2_el = find(:css, options[:from])
42
- select2_el.click
43
- page.document.find('.select2-search input.select2-input,
44
- .select2-search-field input.select2-input.select2-focused').send_keys(value)
45
- select_select2_result(value)
46
- end
47
-
48
- def select2(value, options)
49
- options[:from] = select2_from_label(options[:from])
50
- targetted_select2(value, options)
51
- end
52
-
53
- def select2_from_label(from)
54
- label = find(:label, from, class: '!select2-offscreen')
55
- within label.first(:xpath, './/..') do
56
- "##{find('.select2-container')['id']}"
57
- end
58
- end
59
-
60
- def select2_no_label(value, options = {})
61
- raise "Must pass a hash containing 'from'" if !options.is_a?(Hash) || !options.key?(:from)
62
-
63
- placeholder = options[:from]
64
- click_link placeholder
65
-
66
- select_select2_result(value)
67
- end
68
-
69
- def targetted_select2(value, options)
70
- # find select2 element and click it
71
- find(options[:from]).find('a').click
72
- select_select2_result(value)
73
- end
74
-
75
- def select_select2_result(value)
76
- # results are in a div appended to the end of the document
77
- page.document.find('div.select2-result-label', match: :first, text: %r{#{Regexp.escape(value)}}i).click
78
- end
79
-
80
35
  # arg delay in seconds
81
36
  def wait_for_ajax(delay = Capybara.default_max_wait_time)
82
37
  Timeout.timeout(delay) do
@@ -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_views=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', "--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}")
@@ -5,5 +5,8 @@ FactoryBot.define do
5
5
  url { 'www.example.com' }
6
6
  mail_from_address { 'spree@example.org' }
7
7
  default_currency { 'USD' }
8
+ facebook { 'spreecommerce' }
9
+ twitter { 'spreecommerce' }
10
+ instagram { 'spreecommerce' }
8
11
  end
9
12
  end
@@ -1,7 +1,7 @@
1
1
  class OrderWalkthrough
2
2
  def self.up_to(state)
3
3
  # A default store must exist to provide store settings
4
- FactoryBot.create(:store) unless Spree::Store.exists?
4
+ store = Spree::Store.default || FactoryBot.create(:store, default: true)
5
5
 
6
6
  # A payment method must exist for an order to proceed through the Address state
7
7
  unless Spree::PaymentMethod.exists?
@@ -18,7 +18,7 @@ class OrderWalkthrough
18
18
  unless Spree::ShippingMethod.exists?
19
19
  FactoryBot.create(:shipping_method).tap do |sm|
20
20
  sm.calculator.preferred_amount = 10
21
- sm.calculator.preferred_currency = Spree::Config[:currency]
21
+ sm.calculator.preferred_currency = store.default_currency
22
22
  sm.calculator.save
23
23
  end
24
24
  end
@@ -53,7 +53,11 @@ class OrderWalkthrough
53
53
  end
54
54
 
55
55
  def self.payment(order)
56
- order.payments.create!(payment_method: Spree::PaymentMethod.first, amount: order.total)
56
+ FactoryBot.create :payment,
57
+ order: order,
58
+ payment_method: Spree::PaymentMethod.first,
59
+ amount: order.total
60
+
57
61
  # TODO: maybe look at some way of making this payment_state change automatic
58
62
  order.payment_state = 'paid'
59
63
  order.next!
data/spree_core.gemspec CHANGED
@@ -6,23 +6,17 @@ 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'
11
9
  s.summary = 'The bare bones necessary for Spree.'
12
10
  s.description = 'The bare bones necessary for Spree.'
13
- s.homepage = 'http://spreecommerce.org'
14
- s.license = 'BSD-3-Clause'
15
-
16
- s.metadata = {
17
- "bug_tracker_uri" => "https://github.com/spree/spree/issues",
18
- "changelog_uri" => "https://github.com/spree/spree/releases/tag/v#{s.version}",
19
- "documentation_uri" => "https://guides.spreecommerce.org/",
20
- "source_code_uri" => "https://github.com/spree/spree/tree/v#{s.version}",
21
- }
22
11
 
23
12
  s.required_ruby_version = '>= 2.5.0'
24
13
  s.required_rubygems_version = '>= 1.8.23'
25
14
 
15
+ s.author = 'Sean Schofield'
16
+ s.email = 'sean@spreecommerce.com'
17
+ s.homepage = 'http://spreecommerce.org'
18
+ s.license = 'BSD-3-Clause'
19
+
26
20
  s.files = `git ls-files`.split("\n").reject { |f| f.match(/^spec/) && !f.match(/^spec\/fixtures/) }
27
21
  s.require_path = 'lib'
28
22
 
@@ -34,7 +28,7 @@ Gem::Specification.new do |s|
34
28
  s.add_dependency 'ffaker', '~> 2.9'
35
29
  s.add_dependency 'friendly_id', '>= 5.2.1', '< 5.4.0'
36
30
  s.add_dependency 'highline', '~> 2.0.0' # Necessary for the install generator
37
- s.add_dependency 'kaminari', '~> 1.2.1'
31
+ s.add_dependency 'kaminari', '>= 1.0.1', '< 1.2.0'
38
32
  s.add_dependency 'money', '~> 6.13'
39
33
  s.add_dependency 'monetize', '~> 1.9'
40
34
  s.add_dependency 'paranoia', '~> 2.4.2'
@@ -45,10 +39,10 @@ Gem::Specification.new do |s|
45
39
  s.add_dependency 'state_machines-activerecord', '~> 0.6'
46
40
  s.add_dependency 'state_machines-activemodel', '~> 0.7'
47
41
  s.add_dependency 'stringex'
48
- s.add_dependency 'twitter_cldr', '~> 4.3'
42
+ s.add_dependency 'twitter_cldr', '>= 4.3', '< 6.0'
49
43
  s.add_dependency 'sprockets', '~> 3.7'
50
44
  s.add_dependency 'sprockets-rails'
51
- s.add_dependency 'mini_magick', '~> 4.9.4'
45
+ s.add_dependency 'mini_magick', '>= 4.9.4', '< 4.11.0'
52
46
  s.add_dependency 'image_processing', '~> 1.2'
53
47
 
54
48
  s.add_development_dependency 'email_spec', '~> 2.2'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.7
4
+ version: 4.1.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-05 00:00:00.000000000 Z
11
+ date: 2020-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemerchant
@@ -144,16 +144,22 @@ dependencies:
144
144
  name: kaminari
145
145
  requirement: !ruby/object:Gem::Requirement
146
146
  requirements:
147
- - - "~>"
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: 1.0.1
150
+ - - "<"
148
151
  - !ruby/object:Gem::Version
149
- version: 1.2.1
152
+ version: 1.2.0
150
153
  type: :runtime
151
154
  prerelease: false
152
155
  version_requirements: !ruby/object:Gem::Requirement
153
156
  requirements:
154
- - - "~>"
157
+ - - ">="
155
158
  - !ruby/object:Gem::Version
156
- version: 1.2.1
159
+ version: 1.0.1
160
+ - - "<"
161
+ - !ruby/object:Gem::Version
162
+ version: 1.2.0
157
163
  - !ruby/object:Gem::Dependency
158
164
  name: money
159
165
  requirement: !ruby/object:Gem::Requirement
@@ -298,16 +304,22 @@ dependencies:
298
304
  name: twitter_cldr
299
305
  requirement: !ruby/object:Gem::Requirement
300
306
  requirements:
301
- - - "~>"
307
+ - - ">="
302
308
  - !ruby/object:Gem::Version
303
309
  version: '4.3'
310
+ - - "<"
311
+ - !ruby/object:Gem::Version
312
+ version: '6.0'
304
313
  type: :runtime
305
314
  prerelease: false
306
315
  version_requirements: !ruby/object:Gem::Requirement
307
316
  requirements:
308
- - - "~>"
317
+ - - ">="
309
318
  - !ruby/object:Gem::Version
310
319
  version: '4.3'
320
+ - - "<"
321
+ - !ruby/object:Gem::Version
322
+ version: '6.0'
311
323
  - !ruby/object:Gem::Dependency
312
324
  name: sprockets
313
325
  requirement: !ruby/object:Gem::Requirement
@@ -340,16 +352,22 @@ dependencies:
340
352
  name: mini_magick
341
353
  requirement: !ruby/object:Gem::Requirement
342
354
  requirements:
343
- - - "~>"
355
+ - - ">="
344
356
  - !ruby/object:Gem::Version
345
357
  version: 4.9.4
358
+ - - "<"
359
+ - !ruby/object:Gem::Version
360
+ version: 4.11.0
346
361
  type: :runtime
347
362
  prerelease: false
348
363
  version_requirements: !ruby/object:Gem::Requirement
349
364
  requirements:
350
- - - "~>"
365
+ - - ">="
351
366
  - !ruby/object:Gem::Version
352
367
  version: 4.9.4
368
+ - - "<"
369
+ - !ruby/object:Gem::Version
370
+ version: 4.11.0
353
371
  - !ruby/object:Gem::Dependency
354
372
  name: image_processing
355
373
  requirement: !ruby/object:Gem::Requirement
@@ -394,7 +412,6 @@ files:
394
412
  - app/assets/images/noimage/small.png
395
413
  - app/assets/javascripts/spree.js
396
414
  - app/controllers/spree/base_controller.rb
397
- - app/finders/spree/addresses/find.rb
398
415
  - app/finders/spree/countries/find.rb
399
416
  - app/finders/spree/credit_cards/find.rb
400
417
  - app/finders/spree/line_items/find_by_variant.rb
@@ -402,6 +419,8 @@ files:
402
419
  - app/finders/spree/orders/find_current.rb
403
420
  - app/finders/spree/products/find.rb
404
421
  - app/finders/spree/taxons/find.rb
422
+ - app/finders/spree/variants/option_types_finder.rb
423
+ - app/finders/spree/variants/visible_finder.rb
405
424
  - app/helpers/spree/base_helper.rb
406
425
  - app/helpers/spree/products_helper.rb
407
426
  - app/mailers/spree/base_mailer.rb
@@ -601,9 +620,10 @@ files:
601
620
  - app/models/spree/zone.rb
602
621
  - app/models/spree/zone_member.rb
603
622
  - app/paginators/spree/shared/paginate.rb
604
- - app/services/spree/account/addresses/base.rb
605
- - app/services/spree/account/addresses/create.rb
606
- - app/services/spree/account/addresses/update.rb
623
+ - app/presenters/spree/product_summary_presenter.rb
624
+ - app/presenters/spree/variant_presenter.rb
625
+ - app/presenters/spree/variants/option_types_presenter.rb
626
+ - app/presenters/spree/variants/options_presenter.rb
607
627
  - app/services/spree/cart/add_item.rb
608
628
  - app/services/spree/cart/create.rb
609
629
  - app/services/spree/cart/estimate_shipping_rates.rb
@@ -922,6 +942,9 @@ files:
922
942
  - db/migrate/20181024100754_add_deleted_at_to_spree_credit_cards.rb
923
943
  - db/migrate/20190305121659_add_iso_and_iso3_validation_on_presence_and_uniqueness.rb
924
944
  - db/migrate/20190523092729_add_user_id_and_deleted_at_to_spree_addresses.rb
945
+ - db/migrate/20191005121504_add_store_id_to_payment_methods.rb
946
+ - db/migrate/20191016134113_add_deafult_value_for_store_default_currency.rb
947
+ - db/migrate/20200102141311_add_social_to_spree_stores.rb
925
948
  - db/seeds.rb
926
949
  - lib/friendly_id/slug_rails5_patch.rb
927
950
  - lib/generators/spree/custom_user/custom_user_generator.rb
@@ -929,6 +952,7 @@ files:
929
952
  - lib/generators/spree/custom_user/templates/initializer.rb.tt
930
953
  - lib/generators/spree/custom_user/templates/migration.rb.tt
931
954
  - lib/generators/spree/dummy/dummy_generator.rb
955
+ - lib/generators/spree/dummy/templates/initializers/bullet.rb
932
956
  - lib/generators/spree/dummy/templates/initializers/devise.rb
933
957
  - lib/generators/spree/dummy/templates/rails/application.rb
934
958
  - lib/generators/spree/dummy/templates/rails/boot.rb
@@ -941,6 +965,8 @@ files:
941
965
  - lib/generators/spree/dummy_model/templates/model.rb.tt
942
966
  - lib/generators/spree/install/install_generator.rb
943
967
  - lib/generators/spree/install/templates/config/initializers/spree.rb
968
+ - lib/generators/spree/install/templates/config/initializers/spree_storefront.rb
969
+ - lib/generators/spree/install/templates/config/spree_storefront.yml
944
970
  - lib/generators/spree/install/templates/vendor/assets/javascripts/spree/backend/all.js
945
971
  - lib/generators/spree/install/templates/vendor/assets/javascripts/spree/frontend/all.js
946
972
  - lib/generators/spree/install/templates/vendor/assets/stylesheets/spree/backend/all.css
@@ -969,7 +995,6 @@ files:
969
995
  - lib/spree/core/search/base.rb
970
996
  - lib/spree/core/token_generator.rb
971
997
  - lib/spree/core/version.rb
972
- - lib/spree/database_type_utilities.rb
973
998
  - lib/spree/dependencies_helper.rb
974
999
  - lib/spree/i18n.rb
975
1000
  - lib/spree/i18n/base.rb
@@ -1061,12 +1086,8 @@ files:
1061
1086
  homepage: http://spreecommerce.org
1062
1087
  licenses:
1063
1088
  - BSD-3-Clause
1064
- metadata:
1065
- bug_tracker_uri: https://github.com/spree/spree/issues
1066
- changelog_uri: https://github.com/spree/spree/releases/tag/v4.0.7
1067
- documentation_uri: https://guides.spreecommerce.org/
1068
- source_code_uri: https://github.com/spree/spree/tree/v4.0.7
1069
- post_install_message:
1089
+ metadata: {}
1090
+ post_install_message:
1070
1091
  rdoc_options: []
1071
1092
  require_paths:
1072
1093
  - lib
@@ -1081,8 +1102,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1081
1102
  - !ruby/object:Gem::Version
1082
1103
  version: 1.8.23
1083
1104
  requirements: []
1084
- rubygems_version: 3.2.3
1085
- signing_key:
1105
+ rubygems_version: 3.0.3
1106
+ signing_key:
1086
1107
  specification_version: 4
1087
1108
  summary: The bare bones necessary for Spree.
1088
1109
  test_files: []
@@ -1,17 +0,0 @@
1
- module Spree
2
- module Addresses
3
- class Find
4
- def initialize(scope:, params:)
5
- @scope = scope
6
- end
7
-
8
- def execute
9
- scope
10
- end
11
-
12
- private
13
-
14
- attr_reader :scope
15
- end
16
- end
17
- end
@@ -1,39 +0,0 @@
1
- module Spree
2
- module Account
3
- module Addresses
4
- class Base
5
- prepend Spree::ServiceModule::Base
6
-
7
- private
8
-
9
- attr_accessor :country
10
-
11
- def fill_country_and_state_ids(params)
12
- replace_country_iso_with_id(params)
13
- fill_state_id(params)
14
- end
15
-
16
- def replace_country_iso_with_id(params)
17
- iso = params[:country_iso]
18
- return params unless iso.present?
19
-
20
- country = Spree::Country.by_iso(iso)
21
- params[:country_id] = country&.id
22
- params.delete(:country_iso)
23
- params
24
- end
25
-
26
- def fill_state_id(params)
27
- state_name = params[:state_name]
28
- return params unless state_name.present?
29
-
30
- country ||= Spree::Country.find(params[:country_id]) if params[:country_id].present?
31
- return params unless country
32
-
33
- params[:state_id] = country.states.find_by(name: state_name)&.id
34
- params
35
- end
36
- end
37
- end
38
- end
39
- end
@@ -1,18 +0,0 @@
1
- module Spree
2
- module Account
3
- module Addresses
4
- class Create < ::Spree::Account::Addresses::Base
5
- def call(user:, address_params:)
6
- fill_country_and_state_ids(address_params)
7
-
8
- address = user.addresses.new(address_params)
9
- if address.save
10
- success(address)
11
- else
12
- failure(address)
13
- end
14
- end
15
- end
16
- end
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- module Spree
2
- module Account
3
- module Addresses
4
- class Update < ::Spree::Account::Addresses::Base
5
- def call(address:, address_params:)
6
- address_params[:country_id] ||= address.country_id
7
- fill_country_and_state_ids(address_params)
8
-
9
- if address.update(address_params)
10
- success(address)
11
- else
12
- failure(address)
13
- end
14
- end
15
- end
16
- end
17
- end
18
- end