solidus_core 2.9.5 → 2.10.2

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 (221) hide show
  1. checksums.yaml +4 -4
  2. data/app/helpers/spree/base_helper.rb +4 -4
  3. data/app/helpers/spree/products_helper.rb +2 -1
  4. data/app/jobs/spree/promotion_code_batch_job.rb +2 -2
  5. data/app/models/concerns/spree/user_address_book.rb +2 -2
  6. data/app/models/concerns/spree/user_methods.rb +2 -2
  7. data/app/models/spree/address.rb +13 -17
  8. data/app/models/spree/adjustment.rb +20 -9
  9. data/app/models/spree/asset.rb +1 -1
  10. data/app/models/spree/base.rb +0 -2
  11. data/app/models/spree/calculator.rb +1 -1
  12. data/app/models/spree/calculator/price_sack.rb +1 -1
  13. data/app/models/spree/calculator/shipping/flexi_rate.rb +2 -2
  14. data/app/models/spree/calculator/tiered_flat_rate.rb +5 -5
  15. data/app/models/spree/calculator/tiered_percent.rb +6 -6
  16. data/app/models/spree/carton.rb +3 -3
  17. data/app/models/spree/classification.rb +2 -2
  18. data/app/models/spree/credit_card.rb +4 -4
  19. data/app/models/spree/customer_return.rb +1 -1
  20. data/app/models/spree/image/paperclip_attachment.rb +1 -1
  21. data/app/models/spree/inventory_unit.rb +5 -23
  22. data/app/models/spree/line_item.rb +4 -4
  23. data/app/models/spree/line_item_action.rb +2 -2
  24. data/app/models/spree/log_entry.rb +1 -1
  25. data/app/models/spree/option_value.rb +1 -1
  26. data/app/models/spree/option_values_variant.rb +2 -2
  27. data/app/models/spree/order.rb +11 -27
  28. data/app/models/spree/order/checkout.rb +1 -1
  29. data/app/models/spree/order/payments.rb +2 -2
  30. data/app/models/spree/order_cancellations.rb +1 -1
  31. data/app/models/spree/order_capturing.rb +2 -2
  32. data/app/models/spree/order_contents.rb +2 -2
  33. data/app/models/spree/order_mutex.rb +1 -1
  34. data/app/models/spree/order_promotion.rb +3 -3
  35. data/app/models/spree/order_shipping.rb +1 -1
  36. data/app/models/spree/order_taxation.rb +3 -3
  37. data/app/models/spree/payment.rb +8 -45
  38. data/app/models/spree/payment/processing.rb +3 -3
  39. data/app/models/spree/payment_capture_event.rb +1 -1
  40. data/app/models/spree/payment_method.rb +5 -2
  41. data/app/models/spree/payment_method/bogus_credit_card.rb +1 -1
  42. data/app/models/spree/payment_source.rb +1 -1
  43. data/app/models/spree/price.rb +2 -2
  44. data/app/models/spree/product.rb +5 -5
  45. data/app/models/spree/product/scopes.rb +218 -210
  46. data/app/models/spree/product_option_type.rb +2 -2
  47. data/app/models/spree/product_promotion_rule.rb +2 -2
  48. data/app/models/spree/product_property.rb +2 -2
  49. data/app/models/spree/promotion.rb +28 -13
  50. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +1 -1
  51. data/app/models/spree/promotion/actions/free_shipping.rb +1 -1
  52. data/app/models/spree/promotion/rules/option_value.rb +2 -2
  53. data/app/models/spree/promotion/rules/product.rb +3 -3
  54. data/app/models/spree/promotion_action.rb +2 -2
  55. data/app/models/spree/promotion_chooser.rb +2 -2
  56. data/app/models/spree/promotion_code.rb +11 -10
  57. data/app/models/spree/promotion_code/batch_builder.rb +3 -3
  58. data/app/models/spree/promotion_code_batch.rb +1 -1
  59. data/app/models/spree/promotion_rule.rb +2 -2
  60. data/app/models/spree/promotion_rule_role.rb +2 -2
  61. data/app/models/spree/promotion_rule_store.rb +2 -2
  62. data/app/models/spree/promotion_rule_taxon.rb +2 -2
  63. data/app/models/spree/promotion_rule_user.rb +2 -2
  64. data/app/models/spree/refund.rb +5 -5
  65. data/app/models/spree/reimbursement.rb +5 -13
  66. data/app/models/spree/reimbursement/credit.rb +2 -2
  67. data/app/models/spree/reimbursement/reimbursement_type_engine.rb +1 -1
  68. data/app/models/spree/reimbursement_tax_calculator.rb +1 -1
  69. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +2 -2
  70. data/app/models/spree/return_authorization.rb +4 -10
  71. data/app/models/spree/return_item.rb +13 -52
  72. data/app/models/spree/return_item/eligibility_validator/default.rb +1 -1
  73. data/app/models/spree/role_user.rb +2 -2
  74. data/app/models/spree/shipment.rb +7 -41
  75. data/app/models/spree/shipping_calculator.rb +0 -4
  76. data/app/models/spree/shipping_manifest.rb +3 -3
  77. data/app/models/spree/shipping_method.rb +2 -2
  78. data/app/models/spree/shipping_method_category.rb +2 -2
  79. data/app/models/spree/shipping_method_stock_location.rb +2 -2
  80. data/app/models/spree/shipping_method_zone.rb +2 -2
  81. data/app/models/spree/shipping_rate.rb +2 -2
  82. data/app/models/spree/shipping_rate_tax.rb +2 -2
  83. data/app/models/spree/state.rb +2 -2
  84. data/app/models/spree/state_change.rb +2 -2
  85. data/app/models/spree/stock/differentiator.rb +1 -1
  86. data/app/models/spree/stock/package.rb +1 -1
  87. data/app/models/spree/stock_item.rb +3 -3
  88. data/app/models/spree/stock_location.rb +2 -2
  89. data/app/models/spree/stock_movement.rb +2 -2
  90. data/app/models/spree/stock_quantities.rb +13 -12
  91. data/app/models/spree/store_credit.rb +8 -8
  92. data/app/models/spree/store_credit_event.rb +3 -3
  93. data/app/models/spree/store_payment_method.rb +2 -2
  94. data/app/models/spree/store_shipping_method.rb +2 -2
  95. data/app/models/spree/tax_calculator/default.rb +0 -4
  96. data/app/models/spree/tax_calculator/shipping_rate.rb +0 -3
  97. data/app/models/spree/tax_rate.rb +5 -1
  98. data/app/models/spree/tax_rate_tax_category.rb +2 -2
  99. data/app/models/spree/taxon/paperclip_attachment.rb +13 -0
  100. data/app/models/spree/unit_cancel.rb +5 -2
  101. data/app/models/spree/user_address.rb +2 -2
  102. data/app/models/spree/user_last_url_storer.rb +46 -0
  103. data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +36 -0
  104. data/app/models/spree/user_stock_location.rb +2 -2
  105. data/app/models/spree/variant.rb +10 -10
  106. data/app/models/spree/variant/scopes.rb +37 -29
  107. data/app/models/spree/variant_property_rule.rb +1 -1
  108. data/app/models/spree/variant_property_rule_condition.rb +2 -2
  109. data/app/models/spree/variant_property_rule_value.rb +2 -2
  110. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +1 -1
  111. data/app/models/spree/wallet_payment_source.rb +2 -2
  112. data/app/models/spree/zone.rb +1 -1
  113. data/app/models/spree/zone_member.rb +2 -2
  114. data/config/initializers/inflections.rb +5 -0
  115. data/config/initializers/money.rb +2 -0
  116. data/config/locales/en.yml +34 -3
  117. data/lib/generators/spree/dummy/dummy_generator.rb +2 -0
  118. data/lib/generators/spree/install/templates/config/initializers/spree.rb.tt +8 -0
  119. data/lib/spree/app_configuration.rb +18 -3
  120. data/lib/spree/core.rb +12 -0
  121. data/lib/spree/core/controller_helpers/auth.rb +1 -13
  122. data/lib/spree/core/controller_helpers/strong_parameters.rb +21 -7
  123. data/lib/spree/core/engine.rb +2 -2
  124. data/lib/spree/core/importer/order.rb +29 -28
  125. data/lib/spree/core/importer/product.rb +2 -2
  126. data/lib/spree/core/product_filters.rb +15 -15
  127. data/lib/spree/core/role_configuration.rb +2 -2
  128. data/lib/spree/core/search/variant.rb +1 -1
  129. data/lib/spree/core/state_machines.rb +78 -0
  130. data/lib/spree/core/state_machines/inventory_unit.rb +42 -0
  131. data/lib/spree/core/state_machines/payment.rb +61 -0
  132. data/lib/spree/core/state_machines/reimbursement.rb +33 -0
  133. data/lib/spree/core/state_machines/return_authorization.rb +32 -0
  134. data/lib/spree/core/state_machines/return_item/acceptance_status.rb +51 -0
  135. data/lib/spree/core/state_machines/return_item/reception_status.rb +42 -0
  136. data/lib/spree/core/state_machines/shipment.rb +58 -0
  137. data/lib/spree/core/stock_configuration.rb +1 -0
  138. data/lib/spree/core/validators/email.rb +1 -8
  139. data/lib/spree/core/version.rb +1 -1
  140. data/lib/spree/money.rb +2 -2
  141. data/lib/spree/permission_sets/default_customer.rb +1 -1
  142. data/lib/spree/permission_sets/user_management.rb +3 -0
  143. data/lib/spree/permitted_attributes.rb +78 -9
  144. data/lib/spree/preferences/static_model_preferences.rb +2 -2
  145. data/lib/spree/testing_support/dummy_app.rb +4 -1
  146. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +6 -2
  147. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +8 -1
  148. data/lib/spree/testing_support/factories/promotion_factory.rb +7 -0
  149. data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -1
  150. data/lib/spree/testing_support/factories/user_factory.rb +4 -1
  151. data/solidus_core.gemspec +6 -6
  152. data/spec/lib/search/base_spec.rb +5 -1
  153. data/spec/lib/search/variant_spec.rb +1 -1
  154. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +8 -1
  155. data/spec/lib/spree/core/stock_configuration_spec.rb +36 -0
  156. data/spec/lib/spree/core/validators/email_spec.rb +18 -18
  157. data/spec/lib/spree/event_spec.rb +15 -3
  158. data/spec/lib/spree/permitted_attributes_spec.rb +41 -0
  159. data/spec/models/spree/ability_spec.rb +1 -1
  160. data/spec/models/spree/address_spec.rb +23 -0
  161. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +1 -1
  162. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +1 -1
  163. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +1 -1
  164. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +2 -2
  165. data/spec/models/spree/calculator/shipping/per_item_spec.rb +1 -1
  166. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +24 -15
  167. data/spec/models/spree/carton_spec.rb +10 -2
  168. data/spec/models/spree/classification_spec.rb +21 -9
  169. data/spec/models/spree/concerns/user_address_book_spec.rb +4 -4
  170. data/spec/models/spree/concerns/user_methods_spec.rb +5 -4
  171. data/spec/models/spree/credit_card_spec.rb +2 -2
  172. data/spec/models/spree/customer_return_spec.rb +1 -1
  173. data/spec/models/spree/order/checkout_spec.rb +1 -1
  174. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +5 -5
  175. data/spec/models/spree/order/payment_spec.rb +1 -1
  176. data/spec/models/spree/order_contents_spec.rb +1 -1
  177. data/spec/models/spree/order_inventory_spec.rb +3 -3
  178. data/spec/models/spree/order_merger_spec.rb +3 -3
  179. data/spec/models/spree/order_shipping_spec.rb +1 -1
  180. data/spec/models/spree/order_spec.rb +14 -21
  181. data/spec/models/spree/order_updater_spec.rb +4 -3
  182. data/spec/models/spree/payment_create_spec.rb +6 -16
  183. data/spec/models/spree/payment_spec.rb +12 -12
  184. data/spec/models/spree/permission_sets/user_management_spec.rb +2 -0
  185. data/spec/models/spree/preference_spec.rb +4 -4
  186. data/spec/models/spree/preferences/preferable_spec.rb +3 -3
  187. data/spec/models/spree/preferences/statically_configurable_spec.rb +2 -2
  188. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +2 -2
  189. data/spec/models/spree/promotion/rules/nth_order_spec.rb +2 -2
  190. data/spec/models/spree/promotion/rules/taxon_spec.rb +1 -0
  191. data/spec/models/spree/promotion_rule_spec.rb +6 -6
  192. data/spec/models/spree/promotion_spec.rb +71 -54
  193. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +3 -3
  194. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +1 -1
  195. data/spec/models/spree/return_item_spec.rb +11 -11
  196. data/spec/models/spree/returns_calculator_spec.rb +2 -2
  197. data/spec/models/spree/shipment_spec.rb +6 -6
  198. data/spec/models/spree/shipping_calculator_spec.rb +1 -13
  199. data/spec/models/spree/shipping_method_spec.rb +32 -0
  200. data/spec/models/spree/stock/availability_validator_spec.rb +2 -2
  201. data/spec/models/spree/stock/differentiator_spec.rb +2 -2
  202. data/spec/models/spree/stock/estimator_spec.rb +3 -3
  203. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +4 -4
  204. data/spec/models/spree/stock/package_spec.rb +28 -28
  205. data/spec/models/spree/stock/quantifier_spec.rb +2 -2
  206. data/spec/models/spree/stock/simple_coordinator_spec.rb +11 -11
  207. data/spec/models/spree/stock/splitter/base_spec.rb +4 -4
  208. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +7 -7
  209. data/spec/models/spree/stock_quantities_spec.rb +1 -1
  210. data/spec/models/spree/store_credit_spec.rb +8 -8
  211. data/spec/models/spree/tax_category_spec.rb +1 -1
  212. data/spec/models/spree/tax_rate_spec.rb +1 -0
  213. data/spec/models/spree/taxon_spec.rb +2 -2
  214. data/spec/models/spree/taxons/paperclip_attachment_spec.rb +29 -0
  215. data/spec/models/spree/unit_cancel_spec.rb +5 -0
  216. data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +31 -0
  217. data/spec/models/spree/user_last_url_storer_spec.rb +60 -0
  218. data/spec/models/spree/user_spec.rb +3 -3
  219. metadata +46 -39
  220. data/spec/migrate/20190106184413_remove_code_from_spree_promotions_spec.rb +0 -148
  221. data/spec/models/spree/order/updating_spec.rb +0 -18
@@ -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
 
@@ -16,7 +16,7 @@ RSpec.describe Spree::OrderInventory, type: :model do
16
16
  let(:new_quantity) { 3 }
17
17
 
18
18
  before do
19
- line_item.update_attributes!(quantity: old_quantity)
19
+ line_item.update!(quantity: old_quantity)
20
20
 
21
21
  line_item.update_column(:quantity, new_quantity)
22
22
  subject.line_item.reload
@@ -86,7 +86,7 @@ RSpec.describe Spree::OrderInventory, type: :model do
86
86
  end
87
87
 
88
88
  context "variant doesnt track inventory" do
89
- before { variant.update_attributes!(track_inventory: false) }
89
+ before { variant.update!(track_inventory: false) }
90
90
  let(:new_quantity) { 1 }
91
91
 
92
92
  it "creates on hand inventory units" do
@@ -164,7 +164,7 @@ RSpec.describe Spree::OrderInventory, type: :model do
164
164
  let(:new_quantity) { 2 }
165
165
 
166
166
  before do
167
- line_item.update_attributes!(quantity: old_quantity)
167
+ line_item.update!(quantity: old_quantity)
168
168
 
169
169
  line_item.update_column(:quantity, new_quantity)
170
170
  subject.line_item.reload
@@ -77,13 +77,13 @@ module Spree
77
77
 
78
78
  context "2 equal line items" do
79
79
  before do
80
- @line_item_1 = order_1.contents.add(variant, 1, foos: {})
81
- @line_item_2 = order_2.contents.add(variant, 1, foos: {})
80
+ @line_item_one = order_1.contents.add(variant, 1, foos: {})
81
+ @line_item_two = order_2.contents.add(variant, 1, foos: {})
82
82
  end
83
83
 
84
84
  specify do
85
85
  without_partial_double_verification do
86
- expect(order_1).to receive(:foos_match).with(@line_item_1, kind_of(Hash)).and_return(true)
86
+ expect(order_1).to receive(:foos_match).with(@line_item_one, kind_of(Hash)).and_return(true)
87
87
  end
88
88
  subject.merge!(order_2)
89
89
  expect(order_1.line_items.count).to eq(1)
@@ -181,7 +181,7 @@ RSpec.describe Spree::OrderShipping do
181
181
  # OrderShipping#ship rather than vice versa
182
182
  context "when the tracking number is already on the shipment" do
183
183
  before do
184
- shipment.update_attributes!(tracking: 'tracking-number')
184
+ shipment.update!(tracking: 'tracking-number')
185
185
  end
186
186
 
187
187
  it "sets the tracking-number" do
@@ -366,26 +366,19 @@ RSpec.describe Spree::Order, type: :model do
366
366
  end
367
367
  end
368
368
 
369
- context "add_update_hook", partial_double_verification: false do
370
- before do
371
- Spree::Order.class_eval do
372
- register_update_hook :add_awesome_sauce
373
- end
374
- end
369
+ context ".register_update_hook", partial_double_verification: false do
370
+ let(:order) { create(:order) }
375
371
 
376
- after do
377
- Spree::Order.update_hooks = Set.new
378
- end
372
+ before { Spree::Order.register_update_hook :foo }
373
+ after { Spree::Order.update_hooks.clear }
379
374
 
380
- it "calls hook during update" do
381
- order = create(:order)
382
- expect(order).to receive(:add_awesome_sauce)
375
+ it "calls hooks during #recalculate" do
376
+ expect(order).to receive :foo
383
377
  order.recalculate
384
378
  end
385
379
 
386
- it "calls hook during finalize" do
387
- order = create(:order)
388
- expect(order).to receive(:add_awesome_sauce)
380
+ it "calls hook during #finalize!" do
381
+ expect(order).to receive :foo
389
382
  order.finalize!
390
383
  end
391
384
  end
@@ -678,7 +671,7 @@ RSpec.describe Spree::Order, type: :model do
678
671
  let!(:payment_method_without_store) { create(:payment_method) }
679
672
 
680
673
  context 'when the store has payment methods' do
681
- before { order.update_attributes!(store: store_with_payment_methods) }
674
+ before { order.update!(store: store_with_payment_methods) }
682
675
 
683
676
  it 'returns only the matching payment methods for that store' do
684
677
  expect(order.available_payment_methods).to match_array(
@@ -706,7 +699,7 @@ RSpec.describe Spree::Order, type: :model do
706
699
  end
707
700
 
708
701
  context 'when the store does not have payment methods' do
709
- before { order.update_attributes!(store: store_without_payment_methods) }
702
+ before { order.update!(store: store_without_payment_methods) }
710
703
 
711
704
  it 'returns all matching payment methods regardless of store' do
712
705
  expect(order.available_payment_methods).to match_array(
@@ -1443,12 +1436,12 @@ RSpec.describe Spree::Order, type: :model do
1443
1436
 
1444
1437
  describe "#total_applicable_store_credit" do
1445
1438
  context "order is in the confirm state" do
1446
- before { order.update_attributes(state: 'confirm') }
1439
+ before { order.update(state: 'confirm') }
1447
1440
  include_examples "check total store credit from payments"
1448
1441
  end
1449
1442
 
1450
1443
  context "order is completed" do
1451
- before { order.update_attributes(state: 'complete') }
1444
+ before { order.update(state: 'complete') }
1452
1445
  include_examples "check total store credit from payments"
1453
1446
  end
1454
1447
 
@@ -1462,7 +1455,7 @@ RSpec.describe Spree::Order, type: :model do
1462
1455
  context "the store credit is more than the order total" do
1463
1456
  let(:order_total) { store_credit.amount - 1 }
1464
1457
 
1465
- before { order.update_attributes(total: order_total) }
1458
+ before { order.update(total: order_total) }
1466
1459
 
1467
1460
  it "returns the order total" do
1468
1461
  expect(subject.total_applicable_store_credit).to eq order_total
@@ -1472,7 +1465,7 @@ RSpec.describe Spree::Order, type: :model do
1472
1465
  context "the store credit is less than the order total" do
1473
1466
  let(:order_total) { store_credit.amount * 10 }
1474
1467
 
1475
- before { order.update_attributes(total: order_total) }
1468
+ before { order.update(total: order_total) }
1476
1469
 
1477
1470
  it "returns the store credit amount" do
1478
1471
  expect(subject.total_applicable_store_credit).to eq store_credit.amount
@@ -158,7 +158,8 @@ module Spree
158
158
  amount: -500,
159
159
  finalized: true,
160
160
  label: 'Some other credit')
161
- line_item.adjustments.each { |a| a.update_column(:eligible, true) }
161
+
162
+ line_item.adjustments.each { |item| item.update_column(:eligible, true) }
162
163
 
163
164
  order.recalculate
164
165
 
@@ -172,7 +173,7 @@ module Spree
172
173
  create_adjustment('Promotion A', -200)
173
174
  create_adjustment('Promotion B', -200)
174
175
  end
175
- line_item.adjustments.each { |a| a.update_column(:eligible, true) }
176
+ line_item.adjustments.each { |item| item.update_column(:eligible, true) }
176
177
 
177
178
  order.recalculate
178
179
 
@@ -186,7 +187,7 @@ module Spree
186
187
  create_adjustment('Promotion A', -200)
187
188
  create_adjustment('Promotion B', -200)
188
189
  end
189
- line_item.adjustments.each { |a| a.update_column(:eligible, true) }
190
+ line_item.adjustments.each { |item| item.update_column(:eligible, true) }
190
191
 
191
192
  order.recalculate
192
193
 
@@ -122,7 +122,7 @@ module Spree
122
122
  end
123
123
 
124
124
  context 'the order has no user' do
125
- before { order.update_attributes!(user_id: nil) }
125
+ before { order.update!(user_id: nil) }
126
126
  it 'errors' do
127
127
  expect { new_payment }.to raise_error(ActiveRecord::RecordNotFound)
128
128
  end
@@ -130,7 +130,7 @@ module Spree
130
130
 
131
131
  context 'the order and the credit card have no user' do
132
132
  before do
133
- order.update_attributes!(user_id: nil)
133
+ order.update!(user_id: nil)
134
134
  credit_card.update!(user_id: nil)
135
135
  end
136
136
  it 'errors' do
@@ -156,20 +156,10 @@ module Spree
156
156
  context "unpermitted" do
157
157
  let(:attributes) { ActionController::Parameters.new(valid_attributes) }
158
158
 
159
- if Rails.gem_version < Gem::Version.new('5.1')
160
- it "ignores all attributes" do
161
- expect(new_payment).to have_attributes(
162
- amount: 0,
163
- payment_method: nil,
164
- source: nil
165
- )
166
- end
167
- else
168
- it "raises an exception" do
169
- expect {
170
- new_payment
171
- }.to raise_exception(ActionController::UnfilteredParameters)
172
- end
159
+ it "raises an exception" do
160
+ expect {
161
+ new_payment
162
+ }.to raise_exception(ActionController::UnfilteredParameters)
173
163
  end
174
164
  end
175
165
 
@@ -134,7 +134,7 @@ RSpec.describe Spree::Payment, type: :model do
134
134
  describe "#process!" do
135
135
  context 'with autocapture' do
136
136
  before do
137
- payment.payment_method.update_attributes!(auto_capture: true)
137
+ payment.payment_method.update!(auto_capture: true)
138
138
  end
139
139
 
140
140
  it "should purchase" do
@@ -145,11 +145,11 @@ RSpec.describe Spree::Payment, type: :model do
145
145
 
146
146
  context 'without autocapture' do
147
147
  before do
148
- payment.payment_method.update_attributes!(auto_capture: false)
148
+ payment.payment_method.update!(auto_capture: false)
149
149
  end
150
150
 
151
151
  context 'when in the checkout state' do
152
- before { payment.update_attributes!(state: 'checkout') }
152
+ before { payment.update!(state: 'checkout') }
153
153
 
154
154
  it "authorizes" do
155
155
  payment.process!
@@ -158,7 +158,7 @@ RSpec.describe Spree::Payment, type: :model do
158
158
  end
159
159
 
160
160
  context 'when in the processing state' do
161
- before { payment.update_attributes!(state: 'processing') }
161
+ before { payment.update!(state: 'processing') }
162
162
 
163
163
  it "does not authorize" do
164
164
  payment.process!
@@ -167,7 +167,7 @@ RSpec.describe Spree::Payment, type: :model do
167
167
  end
168
168
 
169
169
  context 'when in the pending state' do
170
- before { payment.update_attributes!(state: 'pending') }
170
+ before { payment.update!(state: 'pending') }
171
171
 
172
172
  it "does not re-authorize" do
173
173
  expect(payment).to_not receive(:authorize!)
@@ -177,7 +177,7 @@ RSpec.describe Spree::Payment, type: :model do
177
177
  end
178
178
 
179
179
  context 'when in a failed state' do
180
- before { payment.update_attributes!(state: 'failed') }
180
+ before { payment.update!(state: 'failed') }
181
181
 
182
182
  it "raises an exception" do
183
183
  expect {
@@ -187,7 +187,7 @@ RSpec.describe Spree::Payment, type: :model do
187
187
  end
188
188
 
189
189
  context 'when in the completed state' do
190
- before { payment.update_attributes!(state: 'completed') }
190
+ before { payment.update!(state: 'completed') }
191
191
 
192
192
  it "authorizes" do
193
193
  payment.process!
@@ -253,7 +253,7 @@ RSpec.describe Spree::Payment, type: :model do
253
253
 
254
254
  context 'when the source is a credit card without an address' do
255
255
  let(:card) { create(:credit_card, address: nil) }
256
- before { order.update_attributes!(bill_address: address) }
256
+ before { order.update!(bill_address: address) }
257
257
  let(:address) { create(:address) }
258
258
 
259
259
  it 'send the order bill address' do
@@ -278,7 +278,7 @@ RSpec.describe Spree::Payment, type: :model do
278
278
 
279
279
  let(:store_credit_payment) { create(:store_credit_payment) }
280
280
  let(:store_credit_payment_method) { create(:store_credit_payment_method) }
281
- before { order.update_attributes!(bill_address: address) }
281
+ before { order.update!(bill_address: address) }
282
282
  let(:address) { create(:address) }
283
283
 
284
284
  it 'send the order bill address' do
@@ -932,7 +932,7 @@ RSpec.describe Spree::Payment, type: :model do
932
932
  end
933
933
 
934
934
  context 'the order has no user' do
935
- before { order.update_attributes!(user_id: nil) }
935
+ before { order.update!(user_id: nil) }
936
936
  it 'errors' do
937
937
  expect { subject }.to raise_error(ActiveRecord::RecordNotFound)
938
938
  end
@@ -940,7 +940,7 @@ RSpec.describe Spree::Payment, type: :model do
940
940
 
941
941
  context 'the order and the credit card have no user' do
942
942
  before do
943
- order.update_attributes!(user_id: nil)
943
+ order.update!(user_id: nil)
944
944
  credit_card.update!(user_id: nil)
945
945
  end
946
946
  it 'errors' do
@@ -976,7 +976,7 @@ RSpec.describe Spree::Payment, type: :model do
976
976
  # Sets the payment's order to a different Ruby object entirely
977
977
  payment.order = Spree::Order.find(payment.order_id)
978
978
  email = 'foo@example.com'
979
- order.update_attributes(email: email)
979
+ order.update(email: email)
980
980
  expect(payment.gateway_options[:email]).to eq(email)
981
981
  end
982
982
  end
@@ -25,11 +25,13 @@ RSpec.describe Spree::PermissionSets::UserManagement do
25
25
  context 'when the user does not have a role' do
26
26
  let(:user) { create(:user) }
27
27
  it { is_expected.to be_able_to(:update_email, user) }
28
+ it { is_expected.to be_able_to(:update_password, user) }
28
29
  end
29
30
 
30
31
  context 'when the user has a role' do
31
32
  let(:user) { create(:user, spree_roles: [create(:role)]) }
32
33
  it { is_expected.not_to be_able_to(:update_email, user) }
34
+ it { is_expected.not_to be_able_to(:update_password, user) }
33
35
  end
34
36
 
35
37
  it { is_expected.not_to be_able_to(:delete, Spree.user_class) }
@@ -12,10 +12,10 @@ RSpec.describe Spree::Preference, type: :model do
12
12
 
13
13
  describe "type coversion for values" do
14
14
  def round_trip_preference(key, value)
15
- p = Spree::Preference.new
16
- p.value = value
17
- p.key = key
18
- p.save
15
+ element = Spree::Preference.new
16
+ element.value = value
17
+ element.key = key
18
+ element.save
19
19
 
20
20
  Spree::Preference.find_by(key: key)
21
21
  end
@@ -272,9 +272,9 @@ RSpec.describe Spree::Preferences::Preferable, type: :model do
272
272
  before(:all) do
273
273
  class CreatePrefTest < ActiveRecord::Migration[4.2]
274
274
  def self.up
275
- create_table :pref_tests do |t|
276
- t.string :col
277
- t.text :preferences
275
+ create_table :pref_tests do |item|
276
+ item.string :col
277
+ item.text :preferences
278
278
  end
279
279
  end
280
280
 
@@ -30,8 +30,8 @@ module Spree
30
30
  end
31
31
 
32
32
  subject do
33
- klass.new.tap do |o|
34
- o.preference_source = preference_source
33
+ klass.new.tap do |item|
34
+ item.preference_source = preference_source
35
35
  end
36
36
  end
37
37
 
@@ -42,10 +42,10 @@ RSpec.describe Spree::Promotion::Rules::FirstRepeatPurchaseSince do
42
42
  let(:order_completion_date_2) { 1.day.ago }
43
43
  before do
44
44
  old_order_1 = create :completed_order_with_totals, user: user
45
- old_order_1.update_attributes(completed_at: order_completion_date_1)
45
+ old_order_1.update(completed_at: order_completion_date_1)
46
46
 
47
47
  old_order_2 = create :completed_order_with_totals, user: user
48
- old_order_2.update_attributes(completed_at: order_completion_date_2)
48
+ old_order_2.update(completed_at: order_completion_date_2)
49
49
  end
50
50
 
51
51
  context "the last completed order was greater than the preferred days ago" do
@@ -40,7 +40,7 @@ RSpec.describe Spree::Promotion::Rules::NthOrder do
40
40
  context "when the user has completed orders" do
41
41
  before do
42
42
  old_order = create :completed_order_with_totals, user: user
43
- old_order.update_attributes(completed_at: 1.day.ago)
43
+ old_order.update(completed_at: 1.day.ago)
44
44
  end
45
45
 
46
46
  context "when this order will be the 'nth' order" do
@@ -49,7 +49,7 @@ RSpec.describe Spree::Promotion::Rules::NthOrder do
49
49
 
50
50
  context "when this order is completed and is still the 'nth' order" do
51
51
  before do
52
- order.update_attributes(completed_at: Time.current)
52
+ order.update(completed_at: Time.current)
53
53
  end
54
54
 
55
55
  it { is_expected.to be true }