spree_core 3.2.1 → 3.2.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 (207) hide show
  1. checksums.yaml +4 -4
  2. data/lib/spree/core/version.rb +1 -1
  3. data/spree_core.gemspec +1 -1
  4. metadata +3 -206
  5. data/spec/fixtures/microdata.html +0 -22
  6. data/spec/fixtures/microdata_itemref.html +0 -15
  7. data/spec/fixtures/microdata_no_itemscope.html +0 -20
  8. data/spec/fixtures/thinking-cat.jpg +0 -0
  9. data/spec/helpers/base_helper_spec.rb +0 -200
  10. data/spec/helpers/products_helper_spec.rb +0 -289
  11. data/spec/lib/calculated_adjustments_spec.rb +0 -7
  12. data/spec/lib/i18n_spec.rb +0 -123
  13. data/spec/lib/search/base_spec.rb +0 -86
  14. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -103
  15. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -110
  16. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -17
  17. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -72
  18. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -39
  19. data/spec/lib/spree/core/delegate_belongs_to_spec.rb +0 -22
  20. data/spec/lib/spree/core/importer/order_spec.rb +0 -605
  21. data/spec/lib/spree/core/number_generator_spec.rb +0 -175
  22. data/spec/lib/spree/core/token_generator_spec.rb +0 -24
  23. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  24. data/spec/lib/spree/core_spec.rb +0 -23
  25. data/spec/lib/spree/localized_number_spec.rb +0 -48
  26. data/spec/lib/spree/migrations_spec.rb +0 -36
  27. data/spec/lib/spree/money_spec.rb +0 -122
  28. data/spec/lib/tasks/exchanges_spec.rb +0 -136
  29. data/spec/mailers/order_mailer_spec.rb +0 -122
  30. data/spec/mailers/reimbursement_mailer_spec.rb +0 -47
  31. data/spec/mailers/shipment_mailer_spec.rb +0 -81
  32. data/spec/mailers/test_mailer_spec.rb +0 -38
  33. data/spec/models/option_type_prototype_spec.rb +0 -9
  34. data/spec/models/spree/ability_spec.rb +0 -251
  35. data/spec/models/spree/address_spec.rb +0 -402
  36. data/spec/models/spree/adjustable/adjuster/base_spec.rb +0 -10
  37. data/spec/models/spree/adjustable/adjuster/promotion_spec.rb +0 -211
  38. data/spec/models/spree/adjustable/adjuster/tax_spec.rb +0 -86
  39. data/spec/models/spree/adjustable/adjustments_updater_spec.rb +0 -26
  40. data/spec/models/spree/adjustment_spec.rb +0 -189
  41. data/spec/models/spree/app_configuration_spec.rb +0 -26
  42. data/spec/models/spree/asset_spec.rb +0 -28
  43. data/spec/models/spree/calculator/default_tax_spec.rb +0 -152
  44. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -25
  45. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -47
  46. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -41
  47. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -15
  48. data/spec/models/spree/calculator/price_sack_spec.rb +0 -30
  49. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -47
  50. data/spec/models/spree/calculator/shipping.rb +0 -8
  51. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -23
  52. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -13
  53. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -52
  54. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -20
  55. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -29
  56. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -40
  57. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -51
  58. data/spec/models/spree/calculator_spec.rb +0 -69
  59. data/spec/models/spree/classification_spec.rb +0 -93
  60. data/spec/models/spree/concerns/display_money_spec.rb +0 -43
  61. data/spec/models/spree/concerns/user_methods_spec.rb +0 -82
  62. data/spec/models/spree/concerns/vat_price_calculation_spec.rb +0 -66
  63. data/spec/models/spree/country_spec.rb +0 -55
  64. data/spec/models/spree/credit_card_spec.rb +0 -328
  65. data/spec/models/spree/customer_return_spec.rb +0 -240
  66. data/spec/models/spree/exchange_spec.rb +0 -75
  67. data/spec/models/spree/gateway/bogus_simple.rb +0 -20
  68. data/spec/models/spree/gateway/bogus_spec.rb +0 -13
  69. data/spec/models/spree/gateway_spec.rb +0 -61
  70. data/spec/models/spree/image_spec.rb +0 -8
  71. data/spec/models/spree/inventory_unit_spec.rb +0 -256
  72. data/spec/models/spree/line_item_spec.rb +0 -346
  73. data/spec/models/spree/option_type_spec.rb +0 -14
  74. data/spec/models/spree/option_value_spec.rb +0 -18
  75. data/spec/models/spree/order/address_spec.rb +0 -50
  76. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  77. data/spec/models/spree/order/callbacks_spec.rb +0 -42
  78. data/spec/models/spree/order/checkout_spec.rb +0 -770
  79. data/spec/models/spree/order/currency_updater_spec.rb +0 -32
  80. data/spec/models/spree/order/finalizing_spec.rb +0 -114
  81. data/spec/models/spree/order/helpers_spec.rb +0 -5
  82. data/spec/models/spree/order/payment_spec.rb +0 -214
  83. data/spec/models/spree/order/risk_assessment_spec.rb +0 -84
  84. data/spec/models/spree/order/shipments_spec.rb +0 -43
  85. data/spec/models/spree/order/state_machine_spec.rb +0 -212
  86. data/spec/models/spree/order/store_credit_spec.rb +0 -426
  87. data/spec/models/spree/order/tax_spec.rb +0 -84
  88. data/spec/models/spree/order/totals_spec.rb +0 -24
  89. data/spec/models/spree/order/updating_spec.rb +0 -18
  90. data/spec/models/spree/order/validations_spec.rb +0 -15
  91. data/spec/models/spree/order_contents_spec.rb +0 -297
  92. data/spec/models/spree/order_inventory_spec.rb +0 -239
  93. data/spec/models/spree/order_merger_spec.rb +0 -135
  94. data/spec/models/spree/order_spec.rb +0 -1046
  95. data/spec/models/spree/order_updater_spec.rb +0 -305
  96. data/spec/models/spree/payment/gateway_options_spec.rb +0 -127
  97. data/spec/models/spree/payment/store_credit_spec.rb +0 -60
  98. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -291
  99. data/spec/models/spree/payment_method_spec.rb +0 -103
  100. data/spec/models/spree/payment_spec.rb +0 -919
  101. data/spec/models/spree/preference_spec.rb +0 -80
  102. data/spec/models/spree/preferences/configuration_spec.rb +0 -30
  103. data/spec/models/spree/preferences/preferable_spec.rb +0 -344
  104. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -58
  105. data/spec/models/spree/preferences/store_spec.rb +0 -46
  106. data/spec/models/spree/price_spec.rb +0 -128
  107. data/spec/models/spree/product/scopes_spec.rb +0 -183
  108. data/spec/models/spree/product_duplicator_spec.rb +0 -103
  109. data/spec/models/spree/product_filter_spec.rb +0 -26
  110. data/spec/models/spree/product_option_type_spec.rb +0 -9
  111. data/spec/models/spree/product_promotion_rule_spec.rb +0 -9
  112. data/spec/models/spree/product_property_spec.rb +0 -26
  113. data/spec/models/spree/product_spec.rb +0 -629
  114. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -113
  115. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -148
  116. data/spec/models/spree/promotion/actions/create_line_items_spec.rb +0 -86
  117. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -36
  118. data/spec/models/spree/promotion/rules/country_spec.rb +0 -36
  119. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -75
  120. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -282
  121. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -42
  122. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -90
  123. data/spec/models/spree/promotion/rules/product_spec.rb +0 -143
  124. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -102
  125. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -27
  126. data/spec/models/spree/promotion/rules/user_spec.rb +0 -45
  127. data/spec/models/spree/promotion_action_spec.rb +0 -10
  128. data/spec/models/spree/promotion_category_spec.rb +0 -17
  129. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -102
  130. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -323
  131. data/spec/models/spree/promotion_handler/free_shipping_spec.rb +0 -48
  132. data/spec/models/spree/promotion_handler/page_spec.rb +0 -44
  133. data/spec/models/spree/promotion_rule_spec.rb +0 -29
  134. data/spec/models/spree/promotion_rule_taxon_spec.rb +0 -9
  135. data/spec/models/spree/promotion_rule_user_spec.rb +0 -9
  136. data/spec/models/spree/promotion_spec.rb +0 -679
  137. data/spec/models/spree/property_prototype_spec.rb +0 -9
  138. data/spec/models/spree/property_spec.rb +0 -5
  139. data/spec/models/spree/prototype_spec.rb +0 -5
  140. data/spec/models/spree/prototype_taxon_spec.rb +0 -9
  141. data/spec/models/spree/refund_reason_spec.rb +0 -20
  142. data/spec/models/spree/refund_spec.rb +0 -195
  143. data/spec/models/spree/reimbursement/credit_spec.rb +0 -36
  144. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -140
  145. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -83
  146. data/spec/models/spree/reimbursement_performer_spec.rb +0 -30
  147. data/spec/models/spree/reimbursement_spec.rb +0 -188
  148. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -63
  149. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -53
  150. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -46
  151. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -55
  152. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -101
  153. data/spec/models/spree/return_authorization_reason_spec.rb +0 -7
  154. data/spec/models/spree/return_authorization_spec.rb +0 -230
  155. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -77
  156. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -58
  157. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -61
  158. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -32
  159. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -29
  160. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -35
  161. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -65
  162. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  163. data/spec/models/spree/return_item_spec.rb +0 -731
  164. data/spec/models/spree/returns_calculator_spec.rb +0 -14
  165. data/spec/models/spree/role_spec.rb +0 -7
  166. data/spec/models/spree/shipment_spec.rb +0 -742
  167. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  168. data/spec/models/spree/shipping_category_spec.rb +0 -19
  169. data/spec/models/spree/shipping_method_spec.rb +0 -95
  170. data/spec/models/spree/shipping_rate_spec.rb +0 -140
  171. data/spec/models/spree/state_spec.rb +0 -29
  172. data/spec/models/spree/stock/availability_validator_spec.rb +0 -36
  173. data/spec/models/spree/stock/content_item_spec.rb +0 -31
  174. data/spec/models/spree/stock/coordinator_spec.rb +0 -61
  175. data/spec/models/spree/stock/differentiator_spec.rb +0 -39
  176. data/spec/models/spree/stock/estimator_spec.rb +0 -202
  177. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -38
  178. data/spec/models/spree/stock/package_spec.rb +0 -182
  179. data/spec/models/spree/stock/packer_spec.rb +0 -70
  180. data/spec/models/spree/stock/prioritizer_spec.rb +0 -125
  181. data/spec/models/spree/stock/quantifier_spec.rb +0 -126
  182. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -29
  183. data/spec/models/spree/stock/splitter/base_spec.rb +0 -21
  184. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -47
  185. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -32
  186. data/spec/models/spree/stock_item_spec.rb +0 -432
  187. data/spec/models/spree/stock_location_spec.rb +0 -243
  188. data/spec/models/spree/stock_movement_spec.rb +0 -120
  189. data/spec/models/spree/stock_transfer_spec.rb +0 -50
  190. data/spec/models/spree/store_credit_event_spec.rb +0 -101
  191. data/spec/models/spree/store_credit_spec.rb +0 -786
  192. data/spec/models/spree/store_spec.rb +0 -78
  193. data/spec/models/spree/tax_category_spec.rb +0 -32
  194. data/spec/models/spree/tax_rate_spec.rb +0 -561
  195. data/spec/models/spree/taxon_spec.rb +0 -85
  196. data/spec/models/spree/taxonomy_spec.rb +0 -18
  197. data/spec/models/spree/tracker_spec.rb +0 -21
  198. data/spec/models/spree/user_spec.rb +0 -203
  199. data/spec/models/spree/variant_spec.rb +0 -818
  200. data/spec/models/spree/zone_member_spec.rb +0 -38
  201. data/spec/models/spree/zone_spec.rb +0 -472
  202. data/spec/spec_helper.rb +0 -79
  203. data/spec/support/big_decimal.rb +0 -5
  204. data/spec/support/concerns/adjustment_source.rb +0 -23
  205. data/spec/support/concerns/default_price.rb +0 -37
  206. data/spec/support/rake.rb +0 -13
  207. data/spec/support/test_gateway.rb +0 -2
@@ -1,32 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Order, type: :model do
4
- context 'CurrencyUpdater' do
5
- context "when changing order currency" do
6
- let!(:line_item) { create(:line_item) }
7
- let!(:euro_price) { create(:price, variant: line_item.variant, amount: 8, currency: 'EUR') }
8
-
9
- context "#homogenize_line_item_currencies" do
10
- it "succeeds without error" do
11
- expect { line_item.order.update_attributes!(currency: 'EUR') }.not_to raise_error
12
- end
13
-
14
- it "changes the line_item currencies" do
15
- expect { line_item.order.update_attributes!(currency: 'EUR') }.to change{ line_item.reload.currency }.from('USD').to('EUR')
16
- end
17
-
18
- it "changes the line_item amounts" do
19
- expect { line_item.order.update_attributes!(currency: 'EUR') }.to change{ line_item.reload.amount }.to(8)
20
- end
21
-
22
- it "fails to change the order currency when no prices are available in that currency" do
23
- expect { line_item.order.update_attributes!(currency: 'GBP') }.to raise_error("no GBP price found for #{line_item.product.name} (#{line_item.variant.sku})")
24
- end
25
-
26
- it "calculates the item total in the order.currency" do
27
- expect { line_item.order.update_attributes!(currency: 'EUR') }.to change{ line_item.order.item_total }.to(8)
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,114 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Order, type: :model do
4
- let(:order) { stub_model("Spree::Order") }
5
-
6
- before { create(:store) }
7
-
8
- context "#finalize!" do
9
- let(:order) { Spree::Order.create(email: 'test@example.com') }
10
-
11
- before do
12
- order.update_column :state, 'complete'
13
- end
14
-
15
- it "should set completed_at" do
16
- expect(order).to receive(:touch).with(:completed_at)
17
- order.finalize!
18
- end
19
-
20
- it "should sell inventory units" do
21
- order.shipments.each do |shipment|
22
- expect(shipment).to receive(:update!)
23
- expect(shipment).to receive(:finalize!)
24
- end
25
- order.finalize!
26
- end
27
-
28
- it "should decrease the stock for each variant in the shipment" do
29
- order.shipments.each do |shipment|
30
- expect(shipment.stock_location).to receive(:decrease_stock_for_variant)
31
- end
32
- order.finalize!
33
- end
34
-
35
- it "should change the shipment state to ready if order is paid" do
36
- Spree::Shipment.create(order: order, stock_location: create(:stock_location))
37
- order.shipments.reload
38
-
39
- allow(order).to receive_messages(paid?: true, complete?: true)
40
- order.finalize!
41
- order.reload # reload so we're sure the changes are persisted
42
- expect(order.shipment_state).to eq('ready')
43
- end
44
-
45
- after { Spree::Config.set track_inventory_levels: true }
46
- it "should not sell inventory units if track_inventory_levels is false" do
47
- Spree::Config.set track_inventory_levels: false
48
- expect(Spree::InventoryUnit).not_to receive(:sell_units)
49
- order.finalize!
50
- end
51
-
52
- it "should send an order confirmation email" do
53
- mail_message = double "Mail::Message"
54
- expect(Spree::OrderMailer).to receive(:confirm_email).with(order.id).and_return mail_message
55
- expect(mail_message).to receive :deliver_later
56
- order.finalize!
57
- end
58
-
59
- it "sets confirmation delivered when finalizing" do
60
- expect(order.confirmation_delivered?).to be false
61
- order.finalize!
62
- expect(order.confirmation_delivered?).to be true
63
- end
64
-
65
- it "should not send duplicate confirmation emails" do
66
- allow(order).to receive_messages(confirmation_delivered?: true)
67
- expect(Spree::OrderMailer).not_to receive(:confirm_email)
68
- order.finalize!
69
- end
70
-
71
- it "should freeze all adjustments" do
72
- allow(Spree::OrderMailer).to receive_message_chain :confirm_email, :deliver_later
73
- adjustments = [double]
74
- expect(order).to receive(:all_adjustments).and_return(adjustments)
75
- adjustments.each do |adj|
76
- expect(adj).to receive(:close)
77
- end
78
- order.finalize!
79
- end
80
-
81
- context "order is considered risky" do
82
- before do
83
- allow(order).to receive_messages is_risky?: true
84
- end
85
-
86
- it "should change state to risky" do
87
- expect(order).to receive(:considered_risky!)
88
- order.finalize!
89
- end
90
-
91
- context "and order is approved" do
92
- before do
93
- allow(order).to receive_messages approved?: true
94
- end
95
-
96
- it "should leave order in complete state" do
97
- order.finalize!
98
- expect(order.state).to eq 'complete'
99
- end
100
- end
101
- end
102
-
103
- context "order is not considered risky" do
104
- before do
105
- allow(order).to receive_messages is_risky?: false
106
- end
107
-
108
- it "should set completed_at" do
109
- order.finalize!
110
- expect(order.completed_at).to be_present
111
- end
112
- end
113
- end
114
- end
@@ -1,5 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Order, type: :model do
4
- let(:order) { stub_model(Spree::Order) }
5
- end
@@ -1,214 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spree
4
- describe Spree::Order, type: :model do
5
- let(:order) { stub_model(Spree::Order) }
6
- let(:updater) { Spree::OrderUpdater.new(order) }
7
-
8
- context "processing payments" do
9
- before do
10
- # So that Payment#purchase! is called during processing
11
- Spree::Config[:auto_capture] = true
12
-
13
- allow(order).to receive_message_chain(:line_items, :empty?).and_return(false)
14
- allow(order).to receive_messages total: 100
15
- end
16
-
17
- it 'processes all checkout payments' do
18
- payment_1 = create(:payment, amount: 50)
19
- payment_2 = create(:payment, amount: 50)
20
- allow(order).to receive(:unprocessed_payments).and_return([payment_1, payment_2])
21
-
22
- order.process_payments!
23
- updater.update_payment_state
24
- expect(order.payment_state).to eq('paid')
25
-
26
- expect(payment_1).to be_completed
27
- expect(payment_2).to be_completed
28
- end
29
-
30
- it 'does not go over total for order' do
31
- payment_1 = create(:payment, amount: 50)
32
- payment_2 = create(:payment, amount: 50)
33
- payment_3 = create(:payment, amount: 50)
34
- allow(order).to receive(:unprocessed_payments).and_return([payment_1, payment_2, payment_3])
35
-
36
- order.process_payments!
37
- updater.update_payment_state
38
- expect(order.payment_state).to eq('paid')
39
-
40
- expect(payment_1).to be_completed
41
- expect(payment_2).to be_completed
42
- expect(payment_3).to be_checkout
43
- end
44
-
45
- it "does not use failed payments" do
46
- payment_1 = create(:payment, amount: 50)
47
- payment_2 = create(:payment, amount: 50, state: 'failed')
48
- allow(order).to receive(:pending_payments).and_return([payment_1])
49
-
50
- expect(payment_2).not_to receive(:process!)
51
-
52
- order.process_payments!
53
- end
54
- end
55
-
56
- context "ensure source attributes stick around" do
57
- # For the reason of this test, please see spree/spree_gateway#132
58
- it "does not have inverse_of defined" do
59
- expect(Spree::Order.reflections['payments'].options[:inverse_of]).to be_nil
60
- end
61
-
62
- it "keeps source attributes after updating" do
63
- persisted_order = Spree::Order.create
64
- credit_card_payment_method = create(:credit_card_payment_method)
65
- attributes = {
66
- payments_attributes: [
67
- {
68
- payment_method_id: credit_card_payment_method.id,
69
- source_attributes: {
70
- name: "Ryan Bigg",
71
- number: "41111111111111111111",
72
- expiry: "01 / 15",
73
- verification_value: "123"
74
- }
75
- }
76
- ]
77
- }
78
-
79
- persisted_order.update_attributes(attributes)
80
- expect(persisted_order.unprocessed_payments.last.source.number).to be_present
81
- end
82
- end
83
-
84
- context "checking if order is paid" do
85
- context "payment_state is paid" do
86
- before { allow(order).to receive_messages payment_state: 'paid' }
87
- it { expect(order).to be_paid }
88
- end
89
-
90
- context "payment_state is credit_owned" do
91
- before { allow(order).to receive_messages payment_state: 'credit_owed' }
92
- it { expect(order).to be_paid }
93
- end
94
- end
95
-
96
- context "#process_payments!" do
97
- let(:payment) { stub_model(Spree::Payment) }
98
- before { allow(order).to receive_messages unprocessed_payments: [payment], total: 10 }
99
-
100
- it "should process the payments" do
101
- expect(payment).to receive(:process!)
102
- expect(order.process_payments!).to be_truthy
103
- end
104
-
105
- # Regression spec for https://github.com/spree/spree/issues/5436
106
- it 'should raise an error if there are no payments to process' do
107
- allow(order).to receive_messages unprocessed_payments: []
108
- expect(payment).to_not receive(:process!)
109
- expect(order.process_payments!).to be_falsey
110
- end
111
-
112
- context "when a payment raises a GatewayError" do
113
- before { expect(payment).to receive(:process!).and_raise(Spree::Core::GatewayError) }
114
-
115
- it "should return true when configured to allow checkout on gateway failures" do
116
- Spree::Config.set allow_checkout_on_gateway_error: true
117
- expect(order.process_payments!).to be true
118
- end
119
-
120
- it "should return false when not configured to allow checkout on gateway failures" do
121
- Spree::Config.set allow_checkout_on_gateway_error: false
122
- expect(order.process_payments!).to be false
123
- end
124
- end
125
- end
126
-
127
- context "#authorize_payments!" do
128
- let(:payment) { stub_model(Spree::Payment) }
129
- before { allow(order).to receive_messages unprocessed_payments: [payment], total: 10 }
130
- subject { order.authorize_payments! }
131
-
132
- it "processes payments with attempt_authorization!" do
133
- expect(payment).to receive(:authorize!)
134
- subject
135
- end
136
-
137
- it { is_expected.to be_truthy }
138
- end
139
-
140
- context "#capture_payments!" do
141
- let(:payment) { stub_model(Spree::Payment) }
142
- before { allow(order).to receive_messages unprocessed_payments: [payment], total: 10 }
143
- subject { order.capture_payments! }
144
-
145
- it "processes payments with attempt_authorization!" do
146
- expect(payment).to receive(:purchase!)
147
- subject
148
- end
149
-
150
- it { is_expected.to be_truthy }
151
- end
152
-
153
- context "#outstanding_balance" do
154
- it "should return positive amount when payment_total is less than total" do
155
- order.payment_total = 20.20
156
- order.total = 30.30
157
- expect(order.outstanding_balance).to eq(10.10)
158
- end
159
- it "should return negative amount when payment_total is greater than total" do
160
- order.total = 8.20
161
- order.payment_total = 10.20
162
- expect(order.outstanding_balance).to be_within(0.001).of(-2.00)
163
- end
164
- it 'should incorporate refund reimbursements' do
165
- # Creates an order w/total 10
166
- reimbursement = create :reimbursement
167
- # Set the payment amount to actually be the order total of 10
168
- reimbursement.order.payments.first.update_column :amount, 10
169
- # Creates a refund of 10
170
- create :refund, amount: 10,
171
- payment: reimbursement.order.payments.first,
172
- reimbursement: reimbursement
173
- order = reimbursement.order.reload
174
- # Update the order totals so payment_total goes to 0 reflecting the refund..
175
- order.update_with_updater!
176
- # Order Total - (Payment Total + Reimbursed)
177
- # 10 - (0 + 10) = 0
178
- expect(order.outstanding_balance).to eq 0
179
- end
180
- end
181
-
182
- context "#outstanding_balance?" do
183
- it "should be true when total greater than payment_total" do
184
- order.total = 10.10
185
- order.payment_total = 9.50
186
- expect(order.outstanding_balance?).to be true
187
- end
188
-
189
- it "should be true when total less than payment_total" do
190
- order.total = 8.25
191
- order.payment_total = 10.44
192
- expect(order.outstanding_balance?).to be true
193
- end
194
-
195
- it "should be false when total equals payment_total" do
196
- order.total = 10.10
197
- order.payment_total = 10.10
198
- expect(order.outstanding_balance?).to be false
199
- end
200
- end
201
-
202
- context "payment required?" do
203
- context "total is zero" do
204
- before { allow(order).to receive_messages(total: 0) }
205
- it { expect(order.payment_required?).to be false }
206
- end
207
-
208
- context "total > zero" do
209
- before { allow(order).to receive_messages(total: 1) }
210
- it { expect(order.payment_required?).to be true }
211
- end
212
- end
213
- end
214
- end
@@ -1,84 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Order, type: :model do
4
- let(:order) { stub_model('Spree::Order') }
5
-
6
- describe ".is_risky?" do
7
- context "Not risky order" do
8
- let(:order) { FactoryGirl.create(:order, payments: [payment]) }
9
- context "with avs_response == D" do
10
- let(:payment) { FactoryGirl.create(:payment, avs_response: "D") }
11
- it "is not considered risky" do
12
- expect(order.is_risky?).to eq(false)
13
- end
14
- end
15
-
16
- context "with avs_response == M" do
17
- let(:payment) { FactoryGirl.create(:payment, avs_response: "M") }
18
- it "is not considered risky" do
19
- expect(order.is_risky?).to eq(false)
20
- end
21
- end
22
-
23
- context "with avs_response == ''" do
24
- let(:payment) { FactoryGirl.create(:payment, avs_response: "") }
25
- it "is not considered risky" do
26
- expect(order.is_risky?).to eq(false)
27
- end
28
- end
29
-
30
- context "with cvv_response_code == M" do
31
- let(:payment) { FactoryGirl.create(:payment, cvv_response_code: "M") }
32
- it "is not considered risky" do
33
- expect(order.is_risky?).to eq(false)
34
- end
35
- end
36
-
37
- context "with cvv_response_message == ''" do
38
- let(:payment) { FactoryGirl.create(:payment, cvv_response_message: "") }
39
- it "is not considered risky" do
40
- expect(order.is_risky?).to eq(false)
41
- end
42
- end
43
- end
44
-
45
- context "Risky order" do
46
- context "AVS response message" do
47
- let(:order) { FactoryGirl.create(:order, payments: [FactoryGirl.create(:payment, avs_response: "A")]) }
48
- it "returns true if the order has an avs_response" do
49
- expect(order.is_risky?).to eq(true)
50
- end
51
- end
52
-
53
- context "CVV response code" do
54
- let(:order) { FactoryGirl.create(:order, payments: [FactoryGirl.create(:payment, cvv_response_code: "N")]) }
55
- it "returns true if the order has an cvv_response_code" do
56
- expect(order.is_risky?).to eq(true)
57
- end
58
- end
59
-
60
- context "state == 'failed'" do
61
- let(:order) { FactoryGirl.create(:order, payments: [FactoryGirl.create(:payment, state: 'failed')]) }
62
- it "returns true if the order has state == 'failed'" do
63
- expect(order.is_risky?).to eq(true)
64
- end
65
- end
66
- end
67
- end
68
-
69
- context "is considered risky" do
70
- let(:order) do
71
- order = FactoryGirl.create(:completed_order_with_pending_payment)
72
- order.considered_risky!
73
- order
74
- end
75
-
76
- it "can be approved by a user" do
77
- expect(order).to receive(:approve!)
78
- order.approved_by(stub_model(Spree::LegacyUser, id: 1))
79
- expect(order.approver_id).to eq(1)
80
- expect(order.approved_at).to be_present
81
- expect(order.approved?).to be true
82
- end
83
- end
84
- end