solidus_core 2.9.6 → 2.10.0.beta1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of solidus_core might be problematic. Click here for more details.

Files changed (131) hide show
  1. checksums.yaml +4 -4
  2. data/app/models/concerns/spree/user_address_book.rb +2 -2
  3. data/app/models/spree/address.rb +2 -2
  4. data/app/models/spree/adjustment.rb +9 -9
  5. data/app/models/spree/asset.rb +1 -1
  6. data/app/models/spree/base.rb +0 -2
  7. data/app/models/spree/calculator.rb +1 -1
  8. data/app/models/spree/carton.rb +3 -3
  9. data/app/models/spree/classification.rb +2 -2
  10. data/app/models/spree/credit_card.rb +2 -2
  11. data/app/models/spree/customer_return.rb +1 -1
  12. data/app/models/spree/image/paperclip_attachment.rb +1 -1
  13. data/app/models/spree/inventory_unit.rb +4 -4
  14. data/app/models/spree/line_item.rb +3 -3
  15. data/app/models/spree/line_item_action.rb +2 -2
  16. data/app/models/spree/log_entry.rb +1 -1
  17. data/app/models/spree/option_value.rb +1 -1
  18. data/app/models/spree/option_values_variant.rb +2 -2
  19. data/app/models/spree/order.rb +8 -25
  20. data/app/models/spree/order_cancellations.rb +1 -1
  21. data/app/models/spree/order_contents.rb +2 -2
  22. data/app/models/spree/order_mutex.rb +1 -1
  23. data/app/models/spree/order_promotion.rb +3 -3
  24. data/app/models/spree/order_shipping.rb +1 -1
  25. data/app/models/spree/order_taxation.rb +1 -1
  26. data/app/models/spree/payment/processing.rb +1 -1
  27. data/app/models/spree/payment.rb +4 -4
  28. data/app/models/spree/payment_capture_event.rb +1 -1
  29. data/app/models/spree/payment_method/bogus_credit_card.rb +1 -1
  30. data/app/models/spree/payment_method.rb +3 -0
  31. data/app/models/spree/payment_source.rb +1 -1
  32. data/app/models/spree/price.rb +2 -2
  33. data/app/models/spree/product/scopes.rb +217 -210
  34. data/app/models/spree/product.rb +2 -2
  35. data/app/models/spree/product_option_type.rb +2 -2
  36. data/app/models/spree/product_promotion_rule.rb +2 -2
  37. data/app/models/spree/product_property.rb +2 -2
  38. data/app/models/spree/promotion.rb +1 -1
  39. data/app/models/spree/promotion_action.rb +1 -1
  40. data/app/models/spree/promotion_code.rb +2 -2
  41. data/app/models/spree/promotion_code_batch.rb +1 -1
  42. data/app/models/spree/promotion_rule.rb +1 -1
  43. data/app/models/spree/promotion_rule_role.rb +2 -2
  44. data/app/models/spree/promotion_rule_store.rb +2 -2
  45. data/app/models/spree/promotion_rule_taxon.rb +2 -2
  46. data/app/models/spree/promotion_rule_user.rb +2 -2
  47. data/app/models/spree/refund.rb +3 -3
  48. data/app/models/spree/reimbursement/credit.rb +2 -2
  49. data/app/models/spree/reimbursement.rb +2 -2
  50. data/app/models/spree/reimbursement_tax_calculator.rb +1 -1
  51. data/app/models/spree/return_authorization.rb +3 -3
  52. data/app/models/spree/return_item.rb +10 -10
  53. data/app/models/spree/role_user.rb +2 -2
  54. data/app/models/spree/shipment.rb +3 -3
  55. data/app/models/spree/shipping_manifest.rb +3 -3
  56. data/app/models/spree/shipping_method.rb +1 -1
  57. data/app/models/spree/shipping_method_category.rb +2 -2
  58. data/app/models/spree/shipping_method_stock_location.rb +2 -2
  59. data/app/models/spree/shipping_method_zone.rb +2 -2
  60. data/app/models/spree/shipping_rate.rb +2 -2
  61. data/app/models/spree/shipping_rate_tax.rb +2 -2
  62. data/app/models/spree/state.rb +1 -1
  63. data/app/models/spree/state_change.rb +2 -2
  64. data/app/models/spree/stock_item.rb +2 -2
  65. data/app/models/spree/stock_location.rb +2 -2
  66. data/app/models/spree/stock_movement.rb +2 -2
  67. data/app/models/spree/store_credit.rb +8 -8
  68. data/app/models/spree/store_credit_event.rb +3 -3
  69. data/app/models/spree/store_payment_method.rb +2 -2
  70. data/app/models/spree/store_shipping_method.rb +2 -2
  71. data/app/models/spree/tax_rate.rb +1 -1
  72. data/app/models/spree/tax_rate_tax_category.rb +2 -2
  73. data/app/models/spree/unit_cancel.rb +5 -2
  74. data/app/models/spree/user_address.rb +2 -2
  75. data/app/models/spree/user_stock_location.rb +2 -2
  76. data/app/models/spree/variant/scopes.rb +37 -29
  77. data/app/models/spree/variant.rb +1 -1
  78. data/app/models/spree/variant_property_rule.rb +1 -1
  79. data/app/models/spree/variant_property_rule_condition.rb +2 -2
  80. data/app/models/spree/variant_property_rule_value.rb +2 -2
  81. data/app/models/spree/wallet_payment_source.rb +2 -2
  82. data/app/models/spree/zone_member.rb +2 -2
  83. data/config/initializers/inflections.rb +5 -0
  84. data/config/locales/en.yml +22 -3
  85. data/lib/generators/spree/dummy/dummy_generator.rb +2 -0
  86. data/lib/generators/spree/install/install_generator.rb +0 -3
  87. data/lib/spree/core/controller_helpers/strong_parameters.rb +7 -21
  88. data/lib/spree/core/environment_extension.rb +0 -9
  89. data/lib/spree/core/importer/order.rb +3 -4
  90. data/lib/spree/core/importer/product.rb +2 -2
  91. data/lib/spree/core/version.rb +1 -1
  92. data/lib/spree/permission_sets/default_customer.rb +1 -1
  93. data/lib/spree/permitted_attributes.rb +6 -75
  94. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +6 -2
  95. data/solidus_core.gemspec +4 -4
  96. data/spec/lib/search/base_spec.rb +5 -1
  97. data/spec/lib/search/variant_spec.rb +1 -1
  98. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +1 -8
  99. data/spec/lib/spree/core/environment_extension_spec.rb +1 -12
  100. data/spec/lib/spree/event_spec.rb +15 -3
  101. data/spec/migrate/20190106184413_remove_code_from_spree_promotions_spec.rb +18 -4
  102. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +1 -1
  103. data/spec/models/spree/carton_spec.rb +2 -2
  104. data/spec/models/spree/concerns/user_methods_spec.rb +3 -3
  105. data/spec/models/spree/credit_card_spec.rb +2 -2
  106. data/spec/models/spree/customer_return_spec.rb +1 -1
  107. data/spec/models/spree/order/checkout_spec.rb +1 -1
  108. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +5 -5
  109. data/spec/models/spree/order/payment_spec.rb +1 -1
  110. data/spec/models/spree/order_contents_spec.rb +1 -1
  111. data/spec/models/spree/order_inventory_spec.rb +3 -3
  112. data/spec/models/spree/order_shipping_spec.rb +1 -1
  113. data/spec/models/spree/order_spec.rb +6 -6
  114. data/spec/models/spree/payment_create_spec.rb +2 -2
  115. data/spec/models/spree/payment_spec.rb +12 -12
  116. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +2 -2
  117. data/spec/models/spree/promotion/rules/nth_order_spec.rb +2 -2
  118. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -1
  119. data/spec/models/spree/promotion_spec.rb +0 -4
  120. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +2 -2
  121. data/spec/models/spree/return_item_spec.rb +11 -11
  122. data/spec/models/spree/shipment_spec.rb +6 -6
  123. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +4 -4
  124. data/spec/models/spree/stock/quantifier_spec.rb +2 -2
  125. data/spec/models/spree/store_credit_spec.rb +7 -7
  126. data/spec/models/spree/tax_category_spec.rb +1 -1
  127. data/spec/models/spree/taxon_spec.rb +2 -2
  128. data/spec/models/spree/unit_cancel_spec.rb +5 -0
  129. data/spec/models/spree/user_spec.rb +3 -3
  130. metadata +32 -32
  131. data/spec/lib/spree/permitted_attributes_spec.rb +0 -41
@@ -163,8 +163,11 @@ en:
163
163
  type: Type
164
164
  spree/price:
165
165
  amount: Price
166
+ country: Country
166
167
  currency: Currency
167
168
  is_default: Currently Valid
169
+ price: Price
170
+ variant: Variant
168
171
  spree/product:
169
172
  available_on: Available On
170
173
  cost_currency: Cost Currency
@@ -200,6 +203,7 @@ en:
200
203
  starts_at: Start
201
204
  status: Status
202
205
  usage_limit: Usage Limit
206
+ uses: Uses
203
207
  spree/promotion/actions/create_adjustment:
204
208
  description: Creates a promotion credit adjustment on the order
205
209
  spree/promotion/actions/create_item_adjustments:
@@ -238,7 +242,17 @@ en:
238
242
  spree/promotion/rules/user_role:
239
243
  description: Order includes User with specified Role(s)
240
244
  spree/promotion_category:
245
+ code: Code
241
246
  name: Name
247
+ spree/promotion_code:
248
+ value: Value
249
+ spree/promotion_code_batch:
250
+ base_code: Base code
251
+ email: Email
252
+ join_characters: Join characters
253
+ number_of_codes: Number of codes
254
+ status: Status
255
+ total_codes: Total codes
242
256
  spree/property:
243
257
  name: Name
244
258
  presentation: Presentation
@@ -250,6 +264,7 @@ en:
250
264
  active: Active
251
265
  code: Code
252
266
  name: Name
267
+ state: State
253
268
  spree/reimbursement:
254
269
  created_at: Date/Time
255
270
  number: Number
@@ -294,6 +309,7 @@ en:
294
309
  name: Name
295
310
  spree/shipping_method:
296
311
  admin_name: Internal Name
312
+ available_to_users: Available to users
297
313
  carrier: Carrier
298
314
  code: Code
299
315
  display_on: Display
@@ -326,6 +342,7 @@ en:
326
342
  phone: Phone
327
343
  propagate_all_variants: Propagate All Variants
328
344
  restock_inventory: Restock Inventory
345
+ state: State
329
346
  state_id: State
330
347
  zipcode: Zip
331
348
  spree/stock_movement:
@@ -358,6 +375,9 @@ en:
358
375
  action: Action
359
376
  amount_remaining: Total Unused
360
377
  user_total_amount: Total Amount
378
+ spree/store_credit_reason:
379
+ name: Name
380
+ state: State
361
381
  spree/store_credit_update_reason:
362
382
  name: Name
363
383
  spree/tax_category:
@@ -372,6 +392,7 @@ en:
372
392
  name: Name
373
393
  show_rate_in_label: Show Rate in Label
374
394
  starts_at: Start Date
395
+ tax_categories: Tax Categories
375
396
  spree/taxon:
376
397
  description: Description
377
398
  icon: Icon
@@ -1923,7 +1944,6 @@ en:
1923
1944
  select: Select
1924
1945
  select_a_reason: Select a reason
1925
1946
  select_a_stock_location: Select a stock location
1926
- select_stock: Select stock
1927
1947
  selected_quantity_not_available: selected of %{item} is not available.
1928
1948
  send_copy_of_all_mails_to: Send Copy of All Mails To
1929
1949
  send_mailer: Send Mailer
@@ -2202,8 +2222,7 @@ en:
2202
2222
  you_cannot_undo_action: You will not be able to undo this action
2203
2223
  you_have_no_orders_yet: You have no orders yet
2204
2224
  your_cart_is_empty: Your cart is empty
2205
- your_order_is_empty_add_product: Your order is empty, please search for and add
2206
- a product above
2225
+ your_order_is_empty_add_product: Your order is empty. Please add products first.
2207
2226
  zip: Zip
2208
2227
  zipcode: Zip Code
2209
2228
  zone: Zone
@@ -42,6 +42,8 @@ module Spree
42
42
  opts[:skip_spring] = true
43
43
  opts[:skip_test] = true
44
44
  opts[:skip_yarn] = true
45
+ opts[:skip_bootsnap] = true
46
+ opts[:skip_webpack_install] = true
45
47
 
46
48
  puts "Generating dummy Rails application..."
47
49
  invoke Rails::Generators::AppGenerator,
@@ -58,9 +58,6 @@ module Spree
58
58
 
59
59
  def setup_assets
60
60
  @lib_name = 'spree'
61
-
62
- empty_directory 'app/assets/images'
63
-
64
61
  %w{javascripts stylesheets images}.each do |path|
65
62
  empty_directory "vendor/assets/#{path}/spree/frontend" if defined? Spree::Frontend || Rails.env.test?
66
63
  empty_directory "vendor/assets/#{path}/spree/backend" if defined? Spree::Backend || Rails.env.test?
@@ -31,30 +31,16 @@ module Spree
31
31
  end
32
32
 
33
33
  def permitted_checkout_attributes
34
- permitted_attributes.checkout_attributes
35
- end
36
-
37
- def permitted_checkout_address_attributes
38
- permitted_attributes.checkout_address_attributes
39
- end
40
-
41
- def permitted_checkout_delivery_attributes
42
- permitted_attributes.checkout_delivery_attributes
43
- end
44
-
45
- def permitted_checkout_payment_attributes
46
- permitted_attributes.checkout_payment_attributes
47
- end
48
-
49
- def permitted_checkout_confirm_attributes
50
- permitted_attributes.checkout_confirm_attributes
34
+ permitted_attributes.checkout_attributes + [
35
+ bill_address_attributes: permitted_address_attributes,
36
+ ship_address_attributes: permitted_address_attributes,
37
+ payments_attributes: permitted_payment_attributes,
38
+ shipments_attributes: permitted_shipment_attributes
39
+ ]
51
40
  end
52
41
 
53
42
  def permitted_order_attributes
54
- permitted_checkout_address_attributes +
55
- permitted_checkout_delivery_attributes +
56
- permitted_checkout_payment_attributes +
57
- permitted_checkout_confirm_attributes + [
43
+ permitted_checkout_attributes + [
58
44
  line_items_attributes: permitted_line_item_attributes
59
45
  ]
60
46
  end
@@ -22,15 +22,6 @@ module Spree
22
22
  end
23
23
  end
24
24
  end
25
-
26
- def add_class(name)
27
- Spree::Deprecation.warn(
28
- 'This method is deprecated. ' \
29
- "Please use `#{self.class}.add_class_set(#{name.inspect})` instead.",
30
- caller,
31
- )
32
- singleton_class.send(:add_class_set, name)
33
- end
34
25
  end
35
26
  end
36
27
  end
@@ -29,7 +29,7 @@ module Spree
29
29
 
30
30
  completed_at = params.delete(:completed_at)
31
31
 
32
- order.update_attributes!(params)
32
+ order.update!(params)
33
33
 
34
34
  order.create_proposed_shipments unless shipments_attrs.present?
35
35
 
@@ -104,7 +104,7 @@ module Spree
104
104
  line_item = order.contents.add(Spree::Variant.find(line_item[:variant_id]), line_item[:quantity])
105
105
  # Raise any errors with saving to prevent import succeeding with line items failing silently.
106
106
  if extra_params.present?
107
- line_item.update_attributes!(extra_params)
107
+ line_item.update!(extra_params)
108
108
  else
109
109
  line_item.save!
110
110
  end
@@ -133,8 +133,7 @@ module Spree
133
133
  # spree_wombat serializes payment state as status so imported orders should fall back to status field.
134
134
  payment.state = p[:state] || p[:status] || 'completed'
135
135
  payment.payment_method = Spree::PaymentMethod.find_by!(name: p[:payment_method])
136
- source_attributes = p[:source] || p[:source_attributes]
137
- payment.source = create_source_payment_from_params(source_attributes, payment) if source_attributes
136
+ payment.source = create_source_payment_from_params(p[:source], payment) if p[:source]
138
137
  payment.save!
139
138
  end
140
139
  end
@@ -28,11 +28,11 @@ module Spree
28
28
  end
29
29
 
30
30
  def update
31
- if product.update_attributes(product_attrs)
31
+ if product.update(product_attrs)
32
32
  variants_attrs.each do |variant_attribute|
33
33
  # update the variant if the id is present in the payload
34
34
  if variant_attribute['id'].present?
35
- product.variants.find(variant_attribute['id'].to_i).update_attributes(variant_attribute)
35
+ product.variants.find(variant_attribute['id'].to_i).update(variant_attribute)
36
36
  else
37
37
  # make sure the product is assigned before the options=
38
38
  product.variants.create({ product: product }.merge(variant_attribute))
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Spree
4
- VERSION = "2.9.6"
4
+ VERSION = "2.10.0.beta1"
5
5
 
6
6
  def self.solidus_version
7
7
  VERSION
@@ -8,7 +8,7 @@ module Spree
8
8
  can :display, OptionType
9
9
  can :display, OptionValue
10
10
  can :create, Order
11
- can [:read, :update], Order do |order, token|
11
+ can [:read, :update], Order, Order.where(user: user) do |order, token|
12
12
  order.user == user || (order.guest_token.present? && token == order.guest_token)
13
13
  end
14
14
  cannot :update, Order do |order|
@@ -8,10 +8,7 @@ module Spree
8
8
  ATTRIBUTES = [
9
9
  :address_attributes,
10
10
  :address_book_attributes,
11
- :checkout_address_attributes,
12
- :checkout_delivery_attributes,
13
- :checkout_payment_attributes,
14
- :checkout_confirm_attributes,
11
+ :checkout_attributes,
15
12
  :credit_card_update_attributes,
16
13
  :customer_return_attributes,
17
14
  :image_attributes,
@@ -48,6 +45,10 @@ module Spree
48
45
 
49
46
  @@address_book_attributes = address_attributes + [:default]
50
47
 
48
+ @@checkout_attributes = [
49
+ :coupon_code, :email, :special_instructions, :use_billing
50
+ ]
51
+
51
52
  @@credit_card_update_attributes = [
52
53
  :month, :year, :expiry, :first_name, :last_name, :name
53
54
  ]
@@ -90,7 +91,7 @@ module Spree
90
91
  :number, :month, :year, :expiry, :verification_value,
91
92
  :first_name, :last_name, :cc_type, :gateway_customer_profile_id,
92
93
  :gateway_payment_profile_id, :last_digits, :name, :encrypted_data,
93
- :existing_card_id, :wallet_payment_source_id, address_attributes: address_attributes
94
+ :existing_card_id, :wallet_payment_source_id
94
95
  ]
95
96
 
96
97
  @@stock_item_attributes = [:variant, :stock_location, :backorderable, :variant_id]
@@ -128,75 +129,5 @@ module Spree
128
129
  :product_id, :product, :option_values_attributes, :price,
129
130
  :weight, :height, :width, :depth, :sku, :cost_currency, option_value_ids: [], options: [:name, :value]
130
131
  ]
131
-
132
- @@checkout_address_attributes = [
133
- :use_billing,
134
- :email,
135
- bill_address_attributes: address_attributes,
136
- ship_address_attributes: address_attributes
137
- ]
138
-
139
- @@checkout_delivery_attributes = [
140
- :special_instructions,
141
- shipments_attributes: shipment_attributes
142
- ]
143
-
144
- @@checkout_payment_attributes = [
145
- :coupon_code,
146
- payments_attributes: payment_attributes + [
147
- source_attributes: source_attributes
148
- ]
149
- ]
150
-
151
- @@checkout_confirm_attributes = []
152
-
153
- def self.checkout_attributes
154
- Spree::Deprecation.warn <<-WARN.squish, caller
155
- checkout_attributes is deprecated, please use the permitted
156
- attributes set for the specific step that needs to be updated.
157
-
158
- E.g. permitted_checkout_address_attributes
159
- WARN
160
-
161
- CheckoutAdditionalAttributes.new(
162
- checkout_address_attributes +
163
- checkout_delivery_attributes +
164
- checkout_payment_attributes +
165
- checkout_confirm_attributes
166
- )
167
- end
168
- end
169
-
170
- class CheckoutAdditionalAttributes < Array
171
- def <<(*attributes)
172
- super
173
-
174
- inject_attributes_to_all_steps(attributes, :<<)
175
- end
176
-
177
- def push(*attributes)
178
- super
179
-
180
- inject_attributes_to_all_steps(attributes, :push)
181
- end
182
- alias append push
183
-
184
- def prepend(*attributes)
185
- super
186
-
187
- inject_attributes_to_all_steps(attributes, :prepend)
188
- end
189
- alias unshift prepend
190
-
191
- private
192
-
193
- def inject_attributes_to_all_steps(attributes, method)
194
- attributes.each do |attribute|
195
- PermittedAttributes.checkout_address_attributes.send(method, attribute)
196
- PermittedAttributes.checkout_delivery_attributes.send(method, attribute)
197
- PermittedAttributes.checkout_payment_attributes.send(method, attribute)
198
- PermittedAttributes.checkout_confirm_attributes.send(method, attribute)
199
- end
200
- end
201
132
  end
202
133
  end
@@ -38,8 +38,12 @@ namespace :db do
38
38
  # railties:install:migrations and then db:migrate.
39
39
  # Migrations should be run one directory at a time
40
40
  ActiveRecord::Migrator.migrations_paths.each do |path|
41
- if defined?(ActiveRecord::MigrationContext)
42
- # Rails >= 5.2
41
+ if Rails.gem_version >= Gem::Version.new('6.0.0')
42
+ ActiveRecord::MigrationContext.new(
43
+ [path],
44
+ ActiveRecord::SchemaMigration
45
+ ).migrate
46
+ elsif Rails.gem_version >= Gem::Version.new('5.2.0')
43
47
  ActiveRecord::MigrationContext.new([path]).migrate
44
48
  else
45
49
  ActiveRecord::Migrator.migrate(path)
data/solidus_core.gemspec CHANGED
@@ -24,13 +24,13 @@ Gem::Specification.new do |s|
24
24
  actionmailer actionpack actionview activejob activemodel activerecord
25
25
  activesupport railties
26
26
  ].each do |rails_dep|
27
- s.add_dependency rails_dep, ['>= 5.1', '< 5.3.x']
27
+ s.add_dependency rails_dep, ['>= 5.1', '< 7.0.x']
28
28
  end
29
29
 
30
30
  s.add_dependency 'activemerchant', '~> 1.66'
31
31
  s.add_dependency 'acts_as_list', '~> 0.3'
32
- s.add_dependency 'awesome_nested_set', '~> 3.0', '>= 3.0.1'
33
- s.add_dependency 'cancancan', '~> 2.2'
32
+ s.add_dependency 'awesome_nested_set', '~> 3.2'
33
+ s.add_dependency 'cancancan', ['>= 2.2', '< 4.0']
34
34
  s.add_dependency 'carmen', '~> 1.1.0'
35
35
  s.add_dependency 'discard', '~> 1.0'
36
36
  s.add_dependency 'friendly_id', '~> 5.0'
@@ -39,5 +39,5 @@ Gem::Specification.new do |s|
39
39
  s.add_dependency 'paperclip', ['>= 4.2', '< 6']
40
40
  s.add_dependency 'paranoia', '~> 2.4'
41
41
  s.add_dependency 'ransack', '~> 2.0'
42
- s.add_dependency 'state_machines-activerecord', '~> 0.4'
42
+ s.add_dependency 'state_machines-activerecord', '~> 0.6'
43
43
  end
@@ -60,7 +60,11 @@ RSpec.describe Spree::Core::Search::Base do
60
60
  search: { "price_range_any" => ["Under $10.00", "$10.00 - $15.00"] } }
61
61
  searcher = Spree::Core::Search::Base.new(params)
62
62
  expect(searcher.send(:get_base_scope).to_sql).to match /<= 10/
63
- expect(searcher.send(:get_base_scope).to_sql).to match /between 10 and 15/i
63
+ if Rails.gem_version >= Gem::Version.new('6.0.0')
64
+ expect(searcher.send(:get_base_scope).to_sql).to match /between 10\.0 and 15\.0/i
65
+ else
66
+ expect(searcher.send(:get_base_scope).to_sql).to match /between 10 and 15/i
67
+ end
64
68
  expect(searcher.retrieve_products.count).to eq(2)
65
69
  end
66
70
 
@@ -85,7 +85,7 @@ module Spree
85
85
  example.run
86
86
  described_class.search_terms = search_terms
87
87
  end
88
- before { variant.update_attributes!(weight: 5000) }
88
+ before { variant.update!(weight: 5000) }
89
89
 
90
90
  it { assert_found("5000", variant) }
91
91
  end
@@ -23,14 +23,7 @@ RSpec.describe Spree::Core::ControllerHelpers::StrongParameters, type: :controll
23
23
 
24
24
  describe '#permitted_checkout_attributes' do
25
25
  it 'returns Array class' do
26
- Spree::Deprecation.silence do
27
- expect(controller.permitted_checkout_attributes.class).to eq Spree::CheckoutAdditionalAttributes
28
- end
29
- end
30
-
31
- it 'is deprecated' do
32
- expect(Spree::Deprecation).to receive(:warn)
33
- controller.permitted_checkout_attributes
26
+ expect(controller.permitted_checkout_attributes.class).to eq Array
34
27
  end
35
28
  end
36
29
 
@@ -4,7 +4,7 @@ require 'spec_helper'
4
4
  require 'spree/core/environment_extension'
5
5
 
6
6
  RSpec.describe Spree::Core::EnvironmentExtension do
7
- let(:base) { Class.new { def self.to_s; 'ExampleClass'; end } }
7
+ let(:base) { Class.new }
8
8
  subject! { base.include(described_class).new }
9
9
 
10
10
  describe '.add_class_set' do
@@ -32,15 +32,4 @@ RSpec.describe Spree::Core::EnvironmentExtension do
32
32
  end
33
33
  end
34
34
  end
35
-
36
- describe '#add_class' do
37
- it 'is deprecated' do
38
- expect(Spree::Deprecation).to receive(:warn) do |message, _caller|
39
- expect(message).to include('ExampleClass.add_class_set(:foo)')
40
- end
41
- expect(base).to receive(:add_class_set).with(:foo)
42
-
43
- base.new.add_class(:foo)
44
- end
45
- end
46
35
  end
@@ -18,14 +18,26 @@ RSpec.describe Spree::Event do
18
18
  before do
19
19
  # ActiveSupport::Notifications does not provide an interface to clean all
20
20
  # subscribers at once, so some low level brittle code is required
21
- @old_subscribers = notifier.instance_variable_get('@subscribers').dup
21
+ if Rails.gem_version >= Gem::Version.new('6.0.0')
22
+ @old_string_subscribers = notifier.instance_variable_get('@string_subscribers').dup
23
+ @old_other_subscribers = notifier.instance_variable_get('@other_subscribers').dup
24
+ notifier.instance_variable_get('@string_subscribers').clear
25
+ notifier.instance_variable_get('@other_subscribers').clear
26
+ else
27
+ @old_subscribers = notifier.instance_variable_get('@subscribers').dup
28
+ notifier.instance_variable_get('@subscribers').clear
29
+ end
22
30
  @old_listeners = notifier.instance_variable_get('@listeners_for').dup
23
- notifier.instance_variable_get('@subscribers').clear
24
31
  notifier.instance_variable_get('@listeners_for').clear
25
32
  end
26
33
 
27
34
  after do
28
- notifier.instance_variable_set '@subscribers', @old_subscribers
35
+ if Rails.gem_version >= Gem::Version.new('6.0.0')
36
+ notifier.instance_variable_set '@string_subscribers', @old_string_subscribers
37
+ notifier.instance_variable_set '@other_subscribers', @old_other_subscribers
38
+ else
39
+ notifier.instance_variable_set '@subscribers', @old_subscribers
40
+ end
29
41
  notifier.instance_variable_set '@listeners_for', @old_listeners
30
42
  end
31
43
 
@@ -6,8 +6,12 @@ require Spree::Core::Engine.root.join('db/migrate/20190106184413_remove_code_fro
6
6
  RSpec.describe RemoveCodeFromSpreePromotions do
7
7
  let(:migrations_paths) { ActiveRecord::Migrator.migrations_paths }
8
8
  let(:migrations) do
9
- if ActiveRecord::Base.connection.respond_to?(:migration_context)
10
- # Rails >= 5.2
9
+ if Rails.gem_version >= Gem::Version.new('6.0.0')
10
+ ActiveRecord::MigrationContext.new(
11
+ migrations_paths,
12
+ ActiveRecord::SchemaMigration
13
+ ).migrations
14
+ elsif Rails.gem_version >= Gem::Version.new('5.2.0')
11
15
  ActiveRecord::MigrationContext.new(migrations_paths).migrations
12
16
  else
13
17
  ActiveRecord::Migrator.migrations(migrations_paths)
@@ -16,7 +20,13 @@ RSpec.describe RemoveCodeFromSpreePromotions do
16
20
  let(:previous_version) { 20180710170104 }
17
21
  let(:current_version) { 20190106184413 }
18
22
 
19
- subject { ActiveRecord::Migrator.new(:up, migrations, current_version).migrate }
23
+ subject do
24
+ if Rails.gem_version >= Gem::Version.new('6.0.0')
25
+ ActiveRecord::Migrator.new(:up, migrations, ActiveRecord::SchemaMigration, current_version).migrate
26
+ else
27
+ ActiveRecord::Migrator.new(:up, migrations, current_version).migrate
28
+ end
29
+ end
20
30
 
21
31
  # This is needed for MySQL since it is not able to rollback to the previous
22
32
  # state when database schema changes within that transaction.
@@ -28,7 +38,11 @@ RSpec.describe RemoveCodeFromSpreePromotions do
28
38
  # Silence migrations output in specs report.
29
39
  ActiveRecord::Migration.suppress_messages do
30
40
  # Migrate back to the previous version
31
- ActiveRecord::Migrator.new(:down, migrations, previous_version).migrate
41
+ if Rails.gem_version >= Gem::Version.new('6.0.0')
42
+ ActiveRecord::Migrator.new(:down, migrations, ActiveRecord::SchemaMigration, previous_version).migrate
43
+ else
44
+ ActiveRecord::Migrator.new(:down, migrations, previous_version).migrate
45
+ end
32
46
  # If other tests using Spree::Promotion ran before this one, Rails has
33
47
  # stored information about table's columns and we need to reset those
34
48
  # since the migration changed the database structure.
@@ -36,7 +36,7 @@ RSpec.describe Spree::Calculator::Returns::DefaultRefundAmount, type: :model do
36
36
  source_type: 'Spree::Order'
37
37
  )
38
38
 
39
- order.adjustments.first.update_attributes(amount: adjustment_amount)
39
+ order.adjustments.first.update(amount: adjustment_amount)
40
40
  end
41
41
 
42
42
  it 'will return the line item amount deducted of refund' do
@@ -73,8 +73,8 @@ RSpec.describe Spree::Carton do
73
73
  let(:email) { 'something@something.com' }
74
74
 
75
75
  before do
76
- first_order.update_attributes!(email: email)
77
- second_order.update_attributes!(email: email)
76
+ first_order.update!(email: email)
77
+ second_order.update!(email: email)
78
78
  end
79
79
 
80
80
  it "returns a unique list of the order emails it is associated to" do
@@ -76,19 +76,19 @@ RSpec.describe Spree::UserMethods do
76
76
  it { is_expected.to eq(100 + 200) }
77
77
 
78
78
  context 'when some has been used' do
79
- before { credit_1.update_attributes!(amount_used: 35) }
79
+ before { credit_1.update!(amount_used: 35) }
80
80
 
81
81
  it { is_expected.to eq(100 + 200 - 35) }
82
82
 
83
83
  context 'when some has been authorized' do
84
- before { credit_1.update_attributes!(amount_authorized: 10) }
84
+ before { credit_1.update!(amount_authorized: 10) }
85
85
 
86
86
  it { is_expected.to eq(100 + 200 - 35 - 10) }
87
87
  end
88
88
  end
89
89
 
90
90
  context 'when some has been authorized' do
91
- before { credit_1.update_attributes!(amount_authorized: 10) }
91
+ before { credit_1.update!(amount_authorized: 10) }
92
92
 
93
93
  it { is_expected.to eq(100 + 200 - 10) }
94
94
  end
@@ -109,10 +109,10 @@ RSpec.describe Spree::CreditCard, type: :model do
109
109
  end
110
110
 
111
111
  it "should save and update addresses through nested attributes" do
112
- persisted_card.update_attributes({ address_attributes: valid_address_attributes })
112
+ persisted_card.update({ address_attributes: valid_address_attributes })
113
113
  persisted_card.save!
114
114
  updated_attributes = { id: persisted_card.address.id, address1: "123 Main St." }
115
- persisted_card.update_attributes({ address_attributes: updated_attributes })
115
+ persisted_card.update({ address_attributes: updated_attributes })
116
116
  expect(persisted_card.address.address1).to eq "123 Main St."
117
117
  end
118
118
  end
@@ -233,7 +233,7 @@ RSpec.describe Spree::CustomerReturn, type: :model do
233
233
 
234
234
  context "it was not received" do
235
235
  before do
236
- return_item.update_attributes!(reception_status: "lost_in_transit")
236
+ return_item.update!(reception_status: "lost_in_transit")
237
237
  end
238
238
 
239
239
  it 'should not updated inventory unit to returned' do
@@ -456,7 +456,7 @@ RSpec.describe Spree::Order, type: :model do
456
456
  order.line_items << FactoryBot.create(:line_item)
457
457
  order.line_items.first.variant.stock_items.each do |si|
458
458
  si.set_count_on_hand(0)
459
- si.update_attributes(backorderable: false)
459
+ si.update(backorderable: false)
460
460
  end
461
461
 
462
462
  Spree::OrderUpdater.new(order).update
@@ -16,7 +16,7 @@ RSpec.describe "Outstanding balance integration tests" do
16
16
  let!(:order) { create(:order_with_line_items, line_items_count: 2, line_items_price: 3, shipment_cost: 13) }
17
17
  let(:item_1) { order.line_items[0] }
18
18
  let(:item_2) { order.line_items[1] }
19
- before { order.update_attributes!(state: 'complete', completed_at: Time.now) }
19
+ before { order.update!(state: 'complete', completed_at: Time.now) }
20
20
 
21
21
  subject do
22
22
  order.reload
@@ -44,11 +44,11 @@ RSpec.describe "Outstanding balance integration tests" do
44
44
  end
45
45
 
46
46
  context 'when the order is cancelled' do
47
- before { order.update_attributes!(state: "canceled") }
47
+ before { order.update!(state: "canceled") }
48
48
  it { should eq(-19) }
49
49
 
50
50
  context 'and the payment is voided' do
51
- before { payment.update_attributes!(state: "void") }
51
+ before { payment.update!(state: "void") }
52
52
  it { should eq 0 }
53
53
  end
54
54
 
@@ -116,11 +116,11 @@ RSpec.describe "Outstanding balance integration tests" do
116
116
  end
117
117
 
118
118
  context 'when the order is cancelled' do
119
- before { order.update_attributes!(state: "canceled") }
119
+ before { order.update!(state: "canceled") }
120
120
  it { should eq(-10) }
121
121
 
122
122
  context 'and the payment is voided' do
123
- before { payment.update_attributes!(state: "void") }
123
+ before { payment.update!(state: "void") }
124
124
  it { should eq 0 }
125
125
  end
126
126
 
@@ -213,7 +213,7 @@ module Spree
213
213
  end
214
214
 
215
215
  context "for canceled orders" do
216
- before { order.update_attributes(state: 'canceled') }
216
+ before { order.update(state: 'canceled') }
217
217
 
218
218
  it "it should be zero" do
219
219
  expect(order.total).to eq(110)
@@ -134,7 +134,7 @@ RSpec.describe Spree::OrderContents, type: :model do
134
134
 
135
135
  context 'when the order does not have a taxable address' do
136
136
  before do
137
- order.update_attributes!(ship_address: nil, bill_address: nil)
137
+ order.update!(ship_address: nil, bill_address: nil)
138
138
  expect(order.tax_address.country_id).to be_nil
139
139
  end
140
140