spree_core 3.3.0.rc1 → 3.3.0.rc2

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 (220) hide show
  1. checksums.yaml +4 -4
  2. data/app/helpers/spree/base_helper.rb +1 -1
  3. data/app/mailers/spree/base_mailer.rb +5 -0
  4. data/app/models/spree/ability.rb +4 -1
  5. data/app/models/spree/image.rb +6 -2
  6. data/app/models/spree/order.rb +10 -9
  7. data/app/models/spree/order/payments.rb +1 -1
  8. data/app/models/spree/payment_method/store_credit.rb +4 -0
  9. data/app/models/spree/shipment.rb +2 -0
  10. data/app/views/spree/shared/_base_mailer_header.html.erb +5 -1
  11. data/app/views/spree/shared/_mailer_line_item.html.erb +5 -1
  12. data/config/routes.rb +0 -3
  13. data/lib/spree/core/components.rb +17 -0
  14. data/lib/spree/core/controller_helpers/auth.rb +3 -1
  15. data/lib/spree/core/engine.rb +1 -0
  16. data/lib/spree/core/validators/email.rb +1 -5
  17. data/lib/spree/core/version.rb +1 -1
  18. data/spree_core.gemspec +1 -1
  19. metadata +4 -204
  20. data/lib/spree/testing_support/shoulda_matcher_configuration.rb +0 -6
  21. data/spec/fixtures/thinking-cat.jpg +0 -0
  22. data/spec/helpers/base_helper_spec.rb +0 -200
  23. data/spec/helpers/products_helper_spec.rb +0 -289
  24. data/spec/lib/calculated_adjustments_spec.rb +0 -7
  25. data/spec/lib/i18n_spec.rb +0 -123
  26. data/spec/lib/search/base_spec.rb +0 -86
  27. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -103
  28. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -110
  29. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -17
  30. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -72
  31. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -39
  32. data/spec/lib/spree/core/delegate_belongs_to_spec.rb +0 -22
  33. data/spec/lib/spree/core/importer/order_spec.rb +0 -607
  34. data/spec/lib/spree/core/number_generator_spec.rb +0 -139
  35. data/spec/lib/spree/core/token_generator_spec.rb +0 -24
  36. data/spec/lib/spree/core/validators/email_spec.rb +0 -54
  37. data/spec/lib/spree/core_spec.rb +0 -23
  38. data/spec/lib/spree/localized_number_spec.rb +0 -54
  39. data/spec/lib/spree/migrations_spec.rb +0 -36
  40. data/spec/lib/spree/money_spec.rb +0 -122
  41. data/spec/lib/tasks/exchanges_spec.rb +0 -136
  42. data/spec/mailers/order_mailer_spec.rb +0 -122
  43. data/spec/mailers/reimbursement_mailer_spec.rb +0 -52
  44. data/spec/mailers/shipment_mailer_spec.rb +0 -81
  45. data/spec/mailers/test_mailer_spec.rb +0 -38
  46. data/spec/models/spree/ability_spec.rb +0 -251
  47. data/spec/models/spree/address_spec.rb +0 -402
  48. data/spec/models/spree/adjustable/adjuster/base_spec.rb +0 -10
  49. data/spec/models/spree/adjustable/adjuster/promotion_spec.rb +0 -211
  50. data/spec/models/spree/adjustable/adjuster/tax_spec.rb +0 -86
  51. data/spec/models/spree/adjustable/adjustments_updater_spec.rb +0 -26
  52. data/spec/models/spree/adjustment_spec.rb +0 -189
  53. data/spec/models/spree/app_configuration_spec.rb +0 -26
  54. data/spec/models/spree/asset_spec.rb +0 -28
  55. data/spec/models/spree/calculator/default_tax_spec.rb +0 -152
  56. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -25
  57. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -47
  58. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -41
  59. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -15
  60. data/spec/models/spree/calculator/price_sack_spec.rb +0 -30
  61. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -47
  62. data/spec/models/spree/calculator/shipping.rb +0 -8
  63. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -23
  64. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -13
  65. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -52
  66. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -20
  67. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -29
  68. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -40
  69. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -51
  70. data/spec/models/spree/calculator_spec.rb +0 -69
  71. data/spec/models/spree/classification_spec.rb +0 -93
  72. data/spec/models/spree/concerns/display_money_spec.rb +0 -43
  73. data/spec/models/spree/concerns/user_methods_spec.rb +0 -82
  74. data/spec/models/spree/concerns/vat_price_calculation_spec.rb +0 -66
  75. data/spec/models/spree/country_spec.rb +0 -55
  76. data/spec/models/spree/credit_card_spec.rb +0 -328
  77. data/spec/models/spree/customer_return_spec.rb +0 -240
  78. data/spec/models/spree/exchange_spec.rb +0 -75
  79. data/spec/models/spree/gateway/bogus_simple.rb +0 -20
  80. data/spec/models/spree/gateway/bogus_spec.rb +0 -13
  81. data/spec/models/spree/gateway_spec.rb +0 -61
  82. data/spec/models/spree/image_spec.rb +0 -8
  83. data/spec/models/spree/inventory_unit_spec.rb +0 -256
  84. data/spec/models/spree/line_item_spec.rb +0 -348
  85. data/spec/models/spree/option_type_prototype_spec.rb +0 -9
  86. data/spec/models/spree/option_type_spec.rb +0 -14
  87. data/spec/models/spree/option_value_spec.rb +0 -18
  88. data/spec/models/spree/order/address_spec.rb +0 -50
  89. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  90. data/spec/models/spree/order/callbacks_spec.rb +0 -42
  91. data/spec/models/spree/order/checkout_spec.rb +0 -770
  92. data/spec/models/spree/order/currency_updater_spec.rb +0 -32
  93. data/spec/models/spree/order/finalizing_spec.rb +0 -114
  94. data/spec/models/spree/order/helpers_spec.rb +0 -5
  95. data/spec/models/spree/order/payment_spec.rb +0 -214
  96. data/spec/models/spree/order/risk_assessment_spec.rb +0 -84
  97. data/spec/models/spree/order/shipments_spec.rb +0 -43
  98. data/spec/models/spree/order/state_machine_spec.rb +0 -212
  99. data/spec/models/spree/order/store_credit_spec.rb +0 -457
  100. data/spec/models/spree/order/tax_spec.rb +0 -84
  101. data/spec/models/spree/order/totals_spec.rb +0 -24
  102. data/spec/models/spree/order/updating_spec.rb +0 -18
  103. data/spec/models/spree/order/validations_spec.rb +0 -15
  104. data/spec/models/spree/order_contents_spec.rb +0 -332
  105. data/spec/models/spree/order_inventory_spec.rb +0 -247
  106. data/spec/models/spree/order_merger_spec.rb +0 -135
  107. data/spec/models/spree/order_spec.rb +0 -1067
  108. data/spec/models/spree/order_updater_spec.rb +0 -305
  109. data/spec/models/spree/payment/gateway_options_spec.rb +0 -127
  110. data/spec/models/spree/payment/store_credit_spec.rb +0 -60
  111. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -291
  112. data/spec/models/spree/payment_method_spec.rb +0 -108
  113. data/spec/models/spree/payment_spec.rb +0 -922
  114. data/spec/models/spree/preference_spec.rb +0 -80
  115. data/spec/models/spree/preferences/configuration_spec.rb +0 -30
  116. data/spec/models/spree/preferences/preferable_spec.rb +0 -344
  117. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -58
  118. data/spec/models/spree/preferences/store_spec.rb +0 -46
  119. data/spec/models/spree/price_spec.rb +0 -128
  120. data/spec/models/spree/product/scopes_spec.rb +0 -174
  121. data/spec/models/spree/product_duplicator_spec.rb +0 -102
  122. data/spec/models/spree/product_filter_spec.rb +0 -26
  123. data/spec/models/spree/product_option_type_spec.rb +0 -9
  124. data/spec/models/spree/product_promotion_rule_spec.rb +0 -9
  125. data/spec/models/spree/product_property_spec.rb +0 -26
  126. data/spec/models/spree/product_spec.rb +0 -626
  127. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -113
  128. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -148
  129. data/spec/models/spree/promotion/actions/create_line_items_spec.rb +0 -86
  130. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -36
  131. data/spec/models/spree/promotion/rules/country_spec.rb +0 -36
  132. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -75
  133. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -282
  134. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -42
  135. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -90
  136. data/spec/models/spree/promotion/rules/product_spec.rb +0 -143
  137. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -102
  138. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -27
  139. data/spec/models/spree/promotion/rules/user_spec.rb +0 -45
  140. data/spec/models/spree/promotion_action_spec.rb +0 -10
  141. data/spec/models/spree/promotion_category_spec.rb +0 -17
  142. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -102
  143. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -323
  144. data/spec/models/spree/promotion_handler/free_shipping_spec.rb +0 -48
  145. data/spec/models/spree/promotion_handler/page_spec.rb +0 -44
  146. data/spec/models/spree/promotion_rule_spec.rb +0 -29
  147. data/spec/models/spree/promotion_rule_taxon_spec.rb +0 -9
  148. data/spec/models/spree/promotion_rule_user_spec.rb +0 -9
  149. data/spec/models/spree/promotion_spec.rb +0 -674
  150. data/spec/models/spree/property_prototype_spec.rb +0 -9
  151. data/spec/models/spree/property_spec.rb +0 -5
  152. data/spec/models/spree/prototype_spec.rb +0 -5
  153. data/spec/models/spree/prototype_taxon_spec.rb +0 -9
  154. data/spec/models/spree/refund_reason_spec.rb +0 -20
  155. data/spec/models/spree/refund_spec.rb +0 -195
  156. data/spec/models/spree/reimbursement/credit_spec.rb +0 -36
  157. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -140
  158. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -83
  159. data/spec/models/spree/reimbursement_performer_spec.rb +0 -30
  160. data/spec/models/spree/reimbursement_spec.rb +0 -188
  161. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -63
  162. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -53
  163. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -46
  164. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -55
  165. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -101
  166. data/spec/models/spree/return_authorization_reason_spec.rb +0 -7
  167. data/spec/models/spree/return_authorization_spec.rb +0 -230
  168. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -77
  169. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -58
  170. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -61
  171. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -32
  172. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -29
  173. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -35
  174. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -65
  175. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  176. data/spec/models/spree/return_item_spec.rb +0 -734
  177. data/spec/models/spree/returns_calculator_spec.rb +0 -14
  178. data/spec/models/spree/role_spec.rb +0 -7
  179. data/spec/models/spree/shipment_spec.rb +0 -744
  180. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  181. data/spec/models/spree/shipping_category_spec.rb +0 -19
  182. data/spec/models/spree/shipping_method_spec.rb +0 -125
  183. data/spec/models/spree/shipping_rate_spec.rb +0 -140
  184. data/spec/models/spree/state_spec.rb +0 -29
  185. data/spec/models/spree/stock/availability_validator_spec.rb +0 -42
  186. data/spec/models/spree/stock/content_item_spec.rb +0 -31
  187. data/spec/models/spree/stock/coordinator_spec.rb +0 -61
  188. data/spec/models/spree/stock/differentiator_spec.rb +0 -39
  189. data/spec/models/spree/stock/estimator_spec.rb +0 -202
  190. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -37
  191. data/spec/models/spree/stock/package_spec.rb +0 -182
  192. data/spec/models/spree/stock/packer_spec.rb +0 -70
  193. data/spec/models/spree/stock/prioritizer_spec.rb +0 -125
  194. data/spec/models/spree/stock/quantifier_spec.rb +0 -126
  195. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -29
  196. data/spec/models/spree/stock/splitter/base_spec.rb +0 -21
  197. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -47
  198. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -32
  199. data/spec/models/spree/stock_item_spec.rb +0 -465
  200. data/spec/models/spree/stock_location_spec.rb +0 -243
  201. data/spec/models/spree/stock_movement_spec.rb +0 -120
  202. data/spec/models/spree/stock_transfer_spec.rb +0 -50
  203. data/spec/models/spree/store_credit_event_spec.rb +0 -101
  204. data/spec/models/spree/store_credit_spec.rb +0 -798
  205. data/spec/models/spree/store_spec.rb +0 -78
  206. data/spec/models/spree/tax_category_spec.rb +0 -32
  207. data/spec/models/spree/tax_rate_spec.rb +0 -561
  208. data/spec/models/spree/taxon_spec.rb +0 -93
  209. data/spec/models/spree/taxonomy_spec.rb +0 -18
  210. data/spec/models/spree/tracker_spec.rb +0 -21
  211. data/spec/models/spree/user_spec.rb +0 -203
  212. data/spec/models/spree/variant_spec.rb +0 -818
  213. data/spec/models/spree/zone_member_spec.rb +0 -38
  214. data/spec/models/spree/zone_spec.rb +0 -472
  215. data/spec/spec_helper.rb +0 -82
  216. data/spec/support/big_decimal.rb +0 -5
  217. data/spec/support/concerns/adjustment_source.rb +0 -23
  218. data/spec/support/concerns/default_price.rb +0 -37
  219. data/spec/support/rake.rb +0 -13
  220. data/spec/support/test_gateway.rb +0 -2
@@ -1,305 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spree
4
- describe OrderUpdater, type: :model do
5
- let(:order) { Spree::Order.create }
6
- let(:updater) { Spree::OrderUpdater.new(order) }
7
-
8
- context "order totals" do
9
- before do
10
- 2.times do
11
- create(:line_item, order: order, price: 10)
12
- end
13
- end
14
-
15
- it "updates payment totals" do
16
- create(:payment_with_refund, order: order)
17
- Spree::OrderUpdater.new(order).update_payment_total
18
- expect(order.payment_total).to eq(40.75)
19
- end
20
-
21
- it "update item total" do
22
- updater.update_item_total
23
- expect(order.item_total).to eq(20)
24
- end
25
-
26
- it "update shipment total" do
27
- create(:shipment, order: order, cost: 10)
28
- updater.update_shipment_total
29
- expect(order.shipment_total).to eq(10)
30
- end
31
-
32
- context 'with order promotion followed by line item addition' do
33
- let(:promotion) { Spree::Promotion.create!(name: "10% off") }
34
- let(:calculator) { Calculator::FlatPercentItemTotal.new(preferred_flat_percent: 10) }
35
-
36
- let(:promotion_action) do
37
- Promotion::Actions::CreateAdjustment.create!({
38
- calculator: calculator,
39
- promotion: promotion,
40
- })
41
- end
42
-
43
- before do
44
- updater.update
45
- create(:adjustment, source: promotion_action, adjustable: order, order: order)
46
- create(:line_item, order: order, price: 10) # in addition to the two already created
47
- updater.update
48
- end
49
-
50
- it "updates promotion total" do
51
- expect(order.promo_total).to eq(-3)
52
- end
53
- end
54
-
55
- it "update order adjustments" do
56
- # A line item will not have both additional and included tax,
57
- # so please just humour me for now.
58
- order.line_items.first.update_columns({
59
- adjustment_total: 10.05,
60
- additional_tax_total: 0.05,
61
- included_tax_total: 0.05,
62
- })
63
- updater.update_adjustment_total
64
- expect(order.adjustment_total).to eq(10.05)
65
- expect(order.additional_tax_total).to eq(0.05)
66
- expect(order.included_tax_total).to eq(0.05)
67
- end
68
- end
69
-
70
- describe "#update_with_updater!" do
71
- it "updates item count" do
72
- create(:line_item, order: order)
73
- create(:line_item, order: order)
74
-
75
- order.update_with_updater!
76
-
77
- expect(order.item_count).to eq(2)
78
- end
79
- end
80
-
81
- context "updating shipment state" do
82
- before do
83
- allow(order).to receive_messages backordered?: false
84
- allow(order).to receive_message_chain(:shipments, :shipped, :count).and_return(0)
85
- allow(order).to receive_message_chain(:shipments, :ready, :count).and_return(0)
86
- allow(order).to receive_message_chain(:shipments, :pending, :count).and_return(0)
87
- end
88
-
89
- it "is backordered" do
90
- allow(order).to receive_messages backordered?: true
91
- updater.update_shipment_state
92
-
93
- expect(order.shipment_state).to eq('backorder')
94
- end
95
-
96
- it "is nil" do
97
- allow(order).to receive_message_chain(:shipments, :states).and_return([])
98
- allow(order).to receive_message_chain(:shipments, :count).and_return(0)
99
-
100
- updater.update_shipment_state
101
- expect(order.shipment_state).to be_nil
102
- end
103
-
104
-
105
- ["shipped", "ready", "pending"].each do |state|
106
- it "is #{state}" do
107
- allow(order).to receive_message_chain(:shipments, :states).and_return([state])
108
- updater.update_shipment_state
109
- expect(order.shipment_state).to eq(state.to_s)
110
- end
111
- end
112
-
113
- it "is partial" do
114
- allow(order).to receive_message_chain(:shipments, :states).and_return(["pending", "ready"])
115
- updater.update_shipment_state
116
- expect(order.shipment_state).to eq('partial')
117
- end
118
- end
119
-
120
- context "updating payment state" do
121
- let(:order) { Order.new }
122
- let(:updater) { order.updater }
123
-
124
- it "is failed if no valid payments" do
125
- allow(order).to receive_message_chain(:payments, :valid, :size).and_return(0)
126
-
127
- updater.update_payment_state
128
- expect(order.payment_state).to eq('failed')
129
- end
130
-
131
- context "payment total is greater than order total" do
132
- it "is credit_owed" do
133
- order.payment_total = 2
134
- order.total = 1
135
-
136
- expect {
137
- updater.update_payment_state
138
- }.to change { order.payment_state }.to 'credit_owed'
139
- end
140
- end
141
-
142
- context "order total is greater than payment total" do
143
- it "is balance_due" do
144
- order.payment_total = 1
145
- order.total = 2
146
-
147
- expect {
148
- updater.update_payment_state
149
- }.to change { order.payment_state }.to 'balance_due'
150
- end
151
- end
152
-
153
- context "order total equals payment total" do
154
- it "is paid" do
155
- order.payment_total = 30
156
- order.total = 30
157
-
158
- expect {
159
- updater.update_payment_state
160
- }.to change { order.payment_state }.to 'paid'
161
- end
162
- end
163
-
164
- context "order is canceled" do
165
-
166
- before do
167
- order.state = 'canceled'
168
- end
169
-
170
- context "and is still unpaid" do
171
- it "is void" do
172
- order.payment_total = 0
173
- order.total = 30
174
- expect {
175
- updater.update_payment_state
176
- }.to change { order.payment_state }.to 'void'
177
- end
178
- end
179
-
180
- context "and is paid" do
181
-
182
- it "is credit_owed" do
183
- order.payment_total = 30
184
- order.total = 30
185
- allow(order).to receive_message_chain(:payments, :valid, :size).and_return(1)
186
- allow(order).to receive_message_chain(:payments, :completed, :size).and_return(1)
187
- expect {
188
- updater.update_payment_state
189
- }.to change { order.payment_state }.to 'credit_owed'
190
- end
191
-
192
- end
193
-
194
- context "and payment is refunded" do
195
- it "is void" do
196
- order.payment_total = 0
197
- order.total = 30
198
- expect {
199
- updater.update_payment_state
200
- }.to change { order.payment_state }.to 'void'
201
- end
202
- end
203
- end
204
-
205
- end
206
-
207
- it "state change" do
208
- order.shipment_state = 'shipped'
209
- state_changes = double
210
- allow(order).to receive_messages state_changes: state_changes
211
- expect(state_changes).to receive(:create).with(
212
- previous_state: nil,
213
- next_state: 'shipped',
214
- name: 'shipment',
215
- user_id: nil
216
- )
217
-
218
- order.state_changed('shipment')
219
- end
220
-
221
- context "completed order" do
222
- before { allow(order).to receive_messages completed?: true }
223
-
224
- describe "#update" do
225
- it "updates payment state" do
226
- expect(updater).to receive(:update_payment_state)
227
- updater.update
228
- end
229
-
230
- it "updates shipment state" do
231
- expect(updater).to receive(:update_shipment_state)
232
- updater.update
233
- end
234
-
235
- it "updates shipments total again after updating shipments" do
236
- expect(updater).to receive(:update_shipment_total).ordered
237
- expect(updater).to receive(:update_shipments).ordered
238
- expect(updater).to receive(:update_shipment_total).ordered
239
- updater.update
240
- end
241
- end
242
-
243
- describe "#update_shipments" do
244
- it "updates each shipment" do
245
- shipment = stub_model(Spree::Shipment, order: order)
246
- shipments = [shipment]
247
- allow(order).to receive_messages shipments: shipments
248
- allow(shipments).to receive_messages states: []
249
- allow(shipments).to receive_messages ready: []
250
- allow(shipments).to receive_messages pending: []
251
- allow(shipments).to receive_messages shipped: []
252
-
253
- expect(shipment).to receive(:update!).with(order)
254
- updater.update_shipments
255
- end
256
-
257
- it "refreshes shipment rates" do
258
- shipment = stub_model(Spree::Shipment, order: order)
259
- shipments = [shipment]
260
- allow(order).to receive_messages shipments: shipments
261
-
262
- expect(shipment).to receive(:refresh_rates)
263
- updater.update_shipments
264
- end
265
-
266
- it "updates the shipment amount" do
267
- shipment = stub_model(Spree::Shipment, order: order)
268
- shipments = [shipment]
269
- allow(order).to receive_messages shipments: shipments
270
-
271
- expect(shipment).to receive(:update_amounts)
272
- updater.update_shipments
273
- end
274
- end
275
- end
276
-
277
- context "incompleted order" do
278
- before { allow(order).to receive_messages completed?: false }
279
-
280
- it "doesnt update payment state" do
281
- expect(updater).not_to receive(:update_payment_state)
282
- updater.update
283
- end
284
-
285
- it "doesnt update shipment state" do
286
- expect(updater).not_to receive(:update_shipment_state)
287
- updater.update
288
- end
289
-
290
- it "doesnt update each shipment" do
291
- shipment = stub_model(Spree::Shipment)
292
- shipments = [shipment]
293
- allow(order).to receive_messages shipments: shipments
294
- allow(shipments).to receive_messages states: []
295
- allow(shipments).to receive_messages ready: []
296
- allow(shipments).to receive_messages pending: []
297
- allow(shipments).to receive_messages shipped: []
298
-
299
- allow(updater).to receive(:update_totals) # Otherwise this gets called and causes a scene
300
- expect(updater).not_to receive(:update_shipments).with(order)
301
- updater.update
302
- end
303
- end
304
- end
305
- end
@@ -1,127 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe Spree::Payment::GatewayOptions, type: :model do
4
- let(:options) { Spree::Payment::GatewayOptions.new(payment) }
5
-
6
- let(:payment) do
7
- double(
8
- Spree::Payment,
9
- order: order,
10
- number: "P1566",
11
- currency: "EUR",
12
- payment_method: payment_method
13
- )
14
- end
15
-
16
- let(:payment_method) do
17
- double(
18
- Spree::Gateway::Bogus,
19
- exchange_multiplier: Spree::Gateway::FROM_DOLLAR_TO_CENT_RATE
20
- )
21
- end
22
-
23
- let(:order) do
24
- double(
25
- Spree::Order,
26
- email: "test@email.com",
27
- user_id: 144,
28
- last_ip_address: "0.0.0.0",
29
- number: "R1444",
30
- ship_total: "12.44".to_d,
31
- additional_tax_total: "1.53".to_d,
32
- item_total: "15.11".to_d,
33
- promo_total: "2.57".to_d,
34
- bill_address: bill_address,
35
- ship_address: ship_address
36
- )
37
- end
38
-
39
- let(:bill_address) do
40
- double Spree::Address, active_merchant_hash: { bill: :address }
41
- end
42
-
43
- let(:ship_address) do
44
- double Spree::Address, active_merchant_hash: { ship: :address }
45
- end
46
-
47
- describe "#email" do
48
- subject { options.email }
49
- it { should == "test@email.com" }
50
- end
51
-
52
- describe "#customer" do
53
- subject { options.customer }
54
- it { should == "test@email.com" }
55
- end
56
-
57
- describe "#customer_id" do
58
- subject { options.customer_id }
59
- it { should == 144 }
60
- end
61
-
62
- describe "#ip" do
63
- subject { options.ip }
64
- it { should == "0.0.0.0" }
65
- end
66
-
67
- describe "#order_id" do
68
- subject { options.order_id }
69
- it { should == "R1444-P1566" }
70
- end
71
-
72
- describe "#shipping" do
73
- subject { options.shipping }
74
- it { should == 1244 }
75
- end
76
-
77
- describe "#tax" do
78
- subject { options.tax }
79
- it { should == 153 }
80
- end
81
-
82
- describe "#subtotal" do
83
- subject { options.subtotal }
84
- it { should == 1511 }
85
- end
86
-
87
- describe "#discount" do
88
- subject { options.discount }
89
- it { should == 257 }
90
- end
91
-
92
- describe "#currency" do
93
- subject { options.currency }
94
- it { should == "EUR" }
95
- end
96
-
97
- describe "#billing_address" do
98
- subject { options.billing_address }
99
- it { should == { bill: :address } }
100
- end
101
-
102
- describe "#shipping_address" do
103
- subject { options.shipping_address }
104
- it { should == { ship: :address } }
105
- end
106
-
107
- describe "#to_hash" do
108
- subject { options.to_hash }
109
- let(:expected) do
110
- {
111
- email: "test@email.com",
112
- customer: "test@email.com",
113
- customer_id: 144,
114
- ip: "0.0.0.0",
115
- order_id: "R1444-P1566",
116
- shipping: "1244".to_d,
117
- tax: "153".to_d,
118
- subtotal: "1511".to_d,
119
- discount: "257".to_d,
120
- currency: "EUR",
121
- billing_address: { bill: :address },
122
- shipping_address: { ship: :address }
123
- }
124
- end
125
- it { should == expected }
126
- end
127
- end
@@ -1,60 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'Payment' do
4
- context '#cancel!' do
5
- subject { payment.cancel! }
6
-
7
- context 'a store credit' do
8
- let(:store_credit) { create(:store_credit, amount_used: captured_amount) }
9
- let(:auth_code) { '1-SC-20141111111111' }
10
- let(:captured_amount) { 10.0 }
11
- let(:payment) { create(:store_credit_payment, response_code: auth_code) }
12
-
13
- let!(:capture_event) do
14
- create(:store_credit_auth_event,
15
- action: Spree::StoreCredit::CAPTURE_ACTION,
16
- authorization_code: auth_code,
17
- amount: captured_amount,
18
- store_credit: store_credit)
19
- end
20
-
21
- let(:successful_response) do
22
- ActiveMerchant::Billing::Response.new(
23
- true,
24
- Spree.t('store_credit_payment_method.successful_action', action: :cancel),
25
- {},
26
- authorization: payment.response_code
27
- )
28
- end
29
-
30
- let(:failed_response) do
31
- ActiveMerchant::Billing::Response.new(
32
- false,
33
- Spree.t('store_credit_payment_method.unable_to_find_for_action', action: :cancel,
34
- auth_code: payment.response_code),
35
- {},
36
- {}
37
- )
38
- end
39
-
40
- it 'attemps to cancels the payment' do
41
- expect(payment.payment_method).to receive(:cancel).with(payment.response_code) { successful_response }
42
- subject
43
- end
44
-
45
- context 'cancels successfully' do
46
- it 'voids the payment' do
47
- expect { subject }.to change { payment.state }.to('void')
48
- end
49
- end
50
-
51
- context 'does not cancel successfully' do
52
- it 'does not change the payment state' do
53
- expect(payment.payment_method).to receive(:cancel).with(payment.response_code) { failed_response }
54
- expect { subject }.to raise_error(Spree::Core::GatewayError)
55
- expect(payment.reload.state).not_to eq 'void'
56
- end
57
- end
58
- end
59
- end
60
- end