spree_core 4.0.7 → 4.1.0.rc1

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