spree_core 3.2.1 → 3.2.2

Sign up to get free protection for your applications and to get access to all the features.
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,240 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::CustomerReturn, type: :model do
4
- before do
5
- allow_any_instance_of(Spree::Order).to receive_messages(return!: true)
6
- end
7
-
8
- describe ".validation" do
9
- describe "#must_have_return_authorization" do
10
- let(:customer_return) { build(:customer_return) }
11
-
12
- let(:inventory_unit) { build(:inventory_unit) }
13
- let(:return_item) { build(:return_item, inventory_unit: inventory_unit) }
14
-
15
- subject { customer_return.valid? }
16
-
17
- before do
18
- customer_return.return_items << return_item
19
- end
20
-
21
- context "return item does not belong to return authorization" do
22
- before do
23
- return_item.return_authorization = nil
24
- end
25
-
26
- it "is not valid" do
27
- expect(subject).to eq false
28
- end
29
-
30
- it "adds an error message" do
31
- subject
32
- expect(customer_return.errors.full_messages).to include(Spree.t(:missing_return_authorization, item_name: inventory_unit.variant.name))
33
- end
34
- end
35
-
36
- context "return item belongs to return authorization" do
37
- it "is valid" do
38
- expect(subject).to eq true
39
- end
40
- end
41
- end
42
-
43
- describe "#return_items_belong_to_same_order" do
44
- let(:customer_return) { build(:customer_return) }
45
-
46
- let(:first_inventory_unit) { build(:inventory_unit) }
47
- let(:first_return_item) { build(:return_item, inventory_unit: first_inventory_unit) }
48
-
49
- let(:second_inventory_unit) { build(:inventory_unit, order: second_order) }
50
- let(:second_return_item) { build(:return_item, inventory_unit: second_inventory_unit) }
51
-
52
- subject { customer_return.valid? }
53
-
54
- before do
55
- customer_return.return_items << first_return_item
56
- customer_return.return_items << second_return_item
57
- end
58
-
59
- context "return items are part of different orders" do
60
- let(:second_order) { create(:order) }
61
-
62
- it "is not valid" do
63
- expect(subject).to eq false
64
- end
65
-
66
- it "adds an error message" do
67
- subject
68
- expect(customer_return.errors.full_messages).to include(Spree.t(:return_items_cannot_be_associated_with_multiple_orders))
69
- end
70
- end
71
-
72
- context "return items are part of the same order" do
73
- let(:second_order) { first_inventory_unit.order }
74
-
75
- it "is valid" do
76
- expect(subject).to eq true
77
- end
78
- end
79
- end
80
- end
81
-
82
- describe 'whitelisted_ransackable_attributes' do
83
- it { expect(Spree::CustomerReturn.whitelisted_ransackable_attributes).to eq(%w(number)) }
84
- end
85
-
86
- describe "#pre_tax_total" do
87
- let(:pre_tax_amount) { 15.0 }
88
- let(:customer_return) { create(:customer_return, line_items_count: 2) }
89
-
90
- before do
91
- Spree::ReturnItem.where(customer_return_id: customer_return.id).update_all(pre_tax_amount: pre_tax_amount)
92
- end
93
-
94
- subject { customer_return.pre_tax_total }
95
-
96
- it "returns the sum of the return item's pre_tax_amount" do
97
- expect(subject).to eq (pre_tax_amount * 2)
98
- end
99
- end
100
-
101
- describe "#display_pre_tax_total" do
102
- let(:customer_return) { Spree::CustomerReturn.new }
103
-
104
- it "returns a Spree::Money" do
105
- allow(customer_return).to receive_messages(pre_tax_total: 21.22)
106
- expect(customer_return.display_pre_tax_total).to eq(Spree::Money.new(21.22))
107
- end
108
- end
109
-
110
- describe "#order" do
111
- let(:return_item) { create(:return_item) }
112
- let(:customer_return) { build(:customer_return, return_items: [return_item]) }
113
-
114
- subject { customer_return.order }
115
-
116
- it "returns the order associated with the return item's inventory unit" do
117
- expect(subject).to eq return_item.inventory_unit.order
118
- end
119
- end
120
-
121
- describe "#order_id" do
122
- subject { customer_return.order_id }
123
-
124
- context "return item is not associated yet" do
125
- let(:customer_return) { build(:customer_return) }
126
-
127
- it "is nil" do
128
- expect(subject).to be_nil
129
- end
130
- end
131
-
132
- context "has an associated return item" do
133
- let(:return_item) { create(:return_item) }
134
- let(:customer_return) { build(:customer_return, return_items: [return_item]) }
135
-
136
- it "is the return item's inventory unit's order id" do
137
- expect(subject).to eq return_item.inventory_unit.order.id
138
- end
139
- end
140
- end
141
-
142
- context ".after_save" do
143
- let(:inventory_unit) { create(:inventory_unit, state: 'shipped', order: create(:shipped_order)) }
144
- let(:return_item) { create(:return_item, inventory_unit: inventory_unit) }
145
-
146
- context "to the initial stock location" do
147
-
148
- it "should mark all inventory units are returned" do
149
- create(:customer_return_without_return_items, return_items: [return_item], stock_location_id: inventory_unit.shipment.stock_location_id)
150
- expect(inventory_unit.reload.state).to eq 'returned'
151
- end
152
-
153
- it "should update the stock item counts in the stock location" do
154
- expect do
155
- create(:customer_return_without_return_items, return_items: [return_item], stock_location_id: inventory_unit.shipment.stock_location_id)
156
- end.to change { inventory_unit.find_stock_item.count_on_hand }.by(1)
157
- end
158
-
159
- context 'with Config.track_inventory_levels == false' do
160
- before do
161
- Spree::Config.track_inventory_levels = false
162
- expect(Spree::StockItem).not_to receive(:find_by)
163
- expect(Spree::StockMovement).not_to receive(:create!)
164
- end
165
-
166
- it "should NOT update the stock item counts in the stock location" do
167
- count_on_hand = inventory_unit.find_stock_item.count_on_hand
168
- create(:customer_return_without_return_items, return_items: [return_item], stock_location_id: inventory_unit.shipment.stock_location_id)
169
- expect(inventory_unit.find_stock_item.count_on_hand).to eql count_on_hand
170
- end
171
- end
172
- end
173
-
174
- context "to a different stock location" do
175
- let(:new_stock_location) { create(:stock_location, name: "other") }
176
-
177
- it "should update the stock item counts in new stock location" do
178
- expect {
179
- create(:customer_return_without_return_items, return_items: [return_item], stock_location_id: new_stock_location.id)
180
- }.to change {
181
- Spree::StockItem.where(variant_id: inventory_unit.variant_id, stock_location_id: new_stock_location.id).first.count_on_hand
182
- }.by(1)
183
- end
184
-
185
- it "should NOT raise an error when no stock item exists in the stock location" do
186
- inventory_unit.find_stock_item.destroy
187
- expect { create(:customer_return_without_return_items, return_items: [return_item], stock_location_id: new_stock_location.id) }.not_to raise_error
188
- end
189
-
190
- it "should not update the stock item counts in the original stock location" do
191
- count_on_hand = inventory_unit.find_stock_item.count_on_hand
192
- create(:customer_return_without_return_items, return_items: [return_item], stock_location_id: new_stock_location.id)
193
- expect(inventory_unit.find_stock_item.count_on_hand).to eq(count_on_hand)
194
- end
195
- end
196
- end
197
-
198
- describe '#fully_reimbursed?' do
199
- let(:customer_return) { create(:customer_return) }
200
-
201
- let!(:default_refund_reason) { Spree::RefundReason.find_or_create_by!(name: Spree::RefundReason::RETURN_PROCESSING_REASON, mutable: false) }
202
-
203
- subject { customer_return.fully_reimbursed? }
204
-
205
- context 'when some return items are undecided' do
206
- it { is_expected.to be false }
207
- end
208
-
209
- context 'when all return items are decided' do
210
-
211
- context 'when all return items are rejected' do
212
- before { customer_return.return_items.each(&:reject!) }
213
-
214
- it { is_expected.to be true }
215
- end
216
-
217
- context 'when all return items are accepted' do
218
- before { customer_return.return_items.each(&:accept!) }
219
-
220
- context 'when some return items have no reimbursement' do
221
- it { is_expected.to be false }
222
- end
223
-
224
- context 'when all return items have a reimbursement' do
225
- let!(:reimbursement) { create(:reimbursement, customer_return: customer_return) }
226
-
227
- context 'when some reimbursements are not reimbursed' do
228
- it { is_expected.to be false }
229
- end
230
-
231
- context 'when all reimbursements are reimbursed' do
232
- before { reimbursement.perform! }
233
-
234
- it { is_expected.to be true }
235
- end
236
- end
237
- end
238
- end
239
- end
240
- end
@@ -1,75 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spree
4
- describe Exchange, type: :model do
5
- let(:order) { Spree::Order.new }
6
-
7
- let(:return_item_1) { build(:exchange_return_item) }
8
- let(:return_item_2) { build(:exchange_return_item) }
9
- let(:return_items) { [return_item_1, return_item_2] }
10
- let(:exchange) { Exchange.new(order, return_items) }
11
-
12
- describe "#description" do
13
- before do
14
- allow(return_item_1).to receive(:variant) { double(options_text: "foo") }
15
- allow(return_item_1).to receive(:exchange_variant) { double(options_text: "bar") }
16
- allow(return_item_2).to receive(:variant) { double(options_text: "baz") }
17
- allow(return_item_2).to receive(:exchange_variant) { double(options_text: "qux") }
18
- end
19
-
20
- it "describes the return items' change in options" do
21
- expect(exchange.description).to match /foo => bar/
22
- expect(exchange.description).to match /baz => qux/
23
- end
24
- end
25
-
26
- describe "#display_amount" do
27
- it "is the total amount of all return items" do
28
- expect(exchange.display_amount).to eq Spree::Money.new(0.0)
29
- end
30
- end
31
-
32
- describe "#perform!" do
33
- let(:return_item) { create(:exchange_return_item) }
34
- let(:return_items) { [return_item] }
35
- let(:order) { return_item.return_authorization.order }
36
- subject { exchange.perform! }
37
- before { return_item.exchange_variant.stock_items.first.adjust_count_on_hand(20) }
38
-
39
- it "creates shipments for the order with the return items exchange inventory units" do
40
- expect { subject }.to change { order.shipments.count }.by(1)
41
- new_shipment = order.shipments.last
42
- expect(new_shipment).to be_ready
43
- new_inventory_units = new_shipment.inventory_units
44
- expect(new_inventory_units.count).to eq 1
45
- expect(new_inventory_units.first.original_return_item).to eq return_item
46
- expect(new_inventory_units.first.line_item).to eq return_item.inventory_unit.line_item
47
- end
48
-
49
- context "when it cannot create shipments for all items" do
50
- before do
51
- StockItem.where(:variant_id => return_item.exchange_variant_id).destroy_all
52
- end
53
-
54
- it 'raises an UnableToCreateShipments error' do
55
- expect {
56
- subject
57
- }.to raise_error(Spree::Exchange::UnableToCreateShipments)
58
- end
59
- end
60
- end
61
-
62
- describe "#to_key" do # for dom_id
63
- it { expect(Exchange.new(nil, nil).to_key).to be_nil }
64
- end
65
-
66
- describe ".param_key" do # for dom_id
67
- it { expect(Exchange.param_key).to eq "spree_exchange" }
68
- end
69
-
70
- describe ".model_name" do # for dom_id
71
- it { expect(Exchange.model_name).to eq Spree::Exchange }
72
- end
73
-
74
- end
75
- end
@@ -1,20 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Gateway::BogusSimple, type: :model do
4
-
5
- subject { Spree::Gateway::BogusSimple.new }
6
-
7
- # regression test for #3824
8
- describe "#capture" do
9
- it "returns success with the right response code" do
10
- response = subject.capture(123, '12345', {})
11
- expect(response.message).to include("success")
12
- end
13
-
14
- it "returns failure with the wrong response code" do
15
- response = subject.capture(123, 'wrong', {})
16
- expect(response.message).to include("failure")
17
- end
18
- end
19
-
20
- end
@@ -1,13 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spree
4
- describe Gateway::Bogus, type: :model do
5
- let(:bogus) { create(:credit_card_payment_method) }
6
- let!(:cc) { create(:credit_card, payment_method: bogus, gateway_customer_profile_id: "BGS-RERTERT") }
7
-
8
- it "disable recurring contract by destroying payment source" do
9
- bogus.disable_customer_profile(cc)
10
- expect(cc.gateway_customer_profile_id).to be_nil
11
- end
12
- end
13
- end
@@ -1,61 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Gateway, type: :model do
4
- class Provider
5
- def initialize(options)
6
- end
7
-
8
- def imaginary_method
9
-
10
- end
11
- end
12
-
13
- class TestGateway < Spree::Gateway
14
- def provider_class
15
- Provider
16
- end
17
- end
18
-
19
- it "passes through all arguments on a method_missing call" do
20
- gateway = TestGateway.new
21
- expect(gateway.provider).to receive(:imaginary_method).with('foo')
22
- gateway.imaginary_method('foo')
23
- end
24
-
25
- context "fetching payment sources" do
26
- let(:order) { Spree::Order.create(user_id: 1) }
27
-
28
- let(:has_card) { create(:credit_card_payment_method) }
29
- let(:no_card) { create(:credit_card_payment_method) }
30
-
31
- let(:cc) do
32
- create(:credit_card, payment_method: has_card, gateway_customer_profile_id: "EFWE")
33
- end
34
-
35
- let(:payment) do
36
- create(:payment, order: order, source: cc, payment_method: has_card)
37
- end
38
-
39
- it "finds credit cards associated on a order completed" do
40
- allow(payment.order).to receive_messages completed?: true
41
-
42
- expect(no_card.reusable_sources(payment.order)).to be_empty
43
- expect(has_card.reusable_sources(payment.order)).not_to be_empty
44
- end
45
-
46
- it "finds credit cards associated with the order user" do
47
- cc.update_column :user_id, 1
48
- allow(payment.order).to receive_messages completed?: false
49
-
50
- expect(no_card.reusable_sources(payment.order)).to be_empty
51
- expect(has_card.reusable_sources(payment.order)).not_to be_empty
52
- end
53
- end
54
-
55
- it "returns exchange multiplier for gateway" do
56
- gateway = TestGateway.new
57
-
58
- rate = Spree::Gateway::FROM_DOLLAR_TO_CENT_RATE
59
- expect(gateway.exchange_multiplier).to eq rate
60
- end
61
- end
@@ -1,8 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Image, type: :model do
4
-
5
- describe 'callbacks' do
6
- it { is_expected.to callback(:find_dimensions).before(:save).if(:attachment_updated_at_changed?) }
7
- end
8
- end
@@ -1,256 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::InventoryUnit, type: :model do
4
- let(:stock_location) { create(:stock_location_with_items) }
5
- let(:stock_item) { stock_location.stock_items.order(:id).first }
6
-
7
- describe 'scopes' do
8
- let!(:inventory_unit_1) { create(:inventory_unit, state: 'on_hand') }
9
- let!(:inventory_unit_2) { create(:inventory_unit, state: 'backordered') }
10
- let!(:inventory_unit_3) { create(:inventory_unit, state: 'shipped') }
11
- let!(:inventory_unit_4) { create(:inventory_unit, state: 'returned') }
12
-
13
- describe '.backordered' do
14
- it { expect(Spree::InventoryUnit.backordered).to eq([inventory_unit_2]) }
15
- end
16
-
17
- describe '.on_hand' do
18
- it { expect(Spree::InventoryUnit.on_hand).to eq([inventory_unit_1]) }
19
- end
20
-
21
- describe '.on_hand_or_backordered' do
22
- it { expect(Spree::InventoryUnit.on_hand_or_backordered).to match_array([inventory_unit_1, inventory_unit_2]) }
23
- end
24
-
25
- describe '.shipped' do
26
- it { expect(Spree::InventoryUnit.shipped).to eq([inventory_unit_3]) }
27
- end
28
-
29
- describe '.returned' do
30
- it { expect(Spree::InventoryUnit.returned).to eq([inventory_unit_4]) }
31
- end
32
- end
33
-
34
- context "#backordered_for_stock_item" do
35
- let(:order) do
36
- order = create(:order, state: 'complete', ship_address: create(:ship_address))
37
- order.completed_at = Time.current
38
- create(:shipment, order: order, stock_location: stock_location)
39
- order.shipments.reload
40
- create(:line_item, order: order, variant: stock_item.variant)
41
- order.line_items.reload
42
- order.tap(&:save!)
43
- end
44
-
45
- let(:shipment) do
46
- order.shipments.first
47
- end
48
-
49
- let(:shipping_method) do
50
- shipment.shipping_methods.first
51
- end
52
-
53
- let!(:unit) do
54
- unit = shipment.inventory_units.first
55
- unit.state = 'backordered'
56
- unit.tap(&:save!)
57
- end
58
-
59
- before do
60
- stock_item.set_count_on_hand(-2)
61
- end
62
-
63
- # Regression for #3066
64
- it "returns modifiable objects" do
65
- units = Spree::InventoryUnit.backordered_for_stock_item(stock_item)
66
- expect { units.first.save! }.to_not raise_error
67
- end
68
-
69
- it "finds inventory units from its stock location when the unit's variant matches the stock item's variant" do
70
- expect(Spree::InventoryUnit.backordered_for_stock_item(stock_item)).to match_array([unit])
71
- end
72
-
73
- it "does not find inventory units that aren't backordered" do
74
- on_hand_unit = shipment.inventory_units.build
75
- on_hand_unit.state = 'on_hand'
76
- on_hand_unit.variant_id = 1
77
- on_hand_unit.save!
78
-
79
- expect(Spree::InventoryUnit.backordered_for_stock_item(stock_item)).not_to include(on_hand_unit)
80
- end
81
-
82
- it "does not find inventory units that don't match the stock item's variant" do
83
- other_variant_unit = shipment.inventory_units.build
84
- other_variant_unit.state = 'backordered'
85
- other_variant_unit.variant = create(:variant)
86
- other_variant_unit.save!
87
-
88
- expect(Spree::InventoryUnit.backordered_for_stock_item(stock_item)).not_to include(other_variant_unit)
89
- end
90
-
91
- it "does not change shipping cost when fulfilling the order" do
92
- current_shipment_cost = shipment.cost
93
- shipping_method.calculator.set_preference(:amount, current_shipment_cost + 5.0)
94
- stock_item.set_count_on_hand(0)
95
- expect(shipment.reload.cost).to eq(current_shipment_cost)
96
- end
97
-
98
- context "other shipments" do
99
- let(:other_order) do
100
- order = create(:order)
101
- order.state = 'payment'
102
- order.completed_at = nil
103
- order.tap(&:save!)
104
- end
105
-
106
- let(:other_shipment) do
107
- shipment = Spree::Shipment.new
108
- shipment.stock_location = stock_location
109
- shipment.shipping_methods << create(:shipping_method)
110
- shipment.order = other_order
111
- # We don't care about this in this test
112
- allow(shipment).to receive(:ensure_correct_adjustment)
113
- shipment.tap(&:save!)
114
- end
115
-
116
- let!(:other_unit) do
117
- unit = other_shipment.inventory_units.build
118
- unit.state = 'backordered'
119
- unit.variant_id = stock_item.variant.id
120
- unit.order_id = other_order.id
121
- unit.tap(&:save!)
122
- end
123
-
124
- it "does not find inventory units belonging to incomplete orders" do
125
- expect(Spree::InventoryUnit.backordered_for_stock_item(stock_item)).not_to include(other_unit)
126
- end
127
-
128
- end
129
-
130
- end
131
-
132
- context "#finalize_units!" do
133
- let!(:stock_location) { create(:stock_location) }
134
- let(:variant) { create(:variant) }
135
- let (:shipment) { create(:shipment) }
136
- let(:inventory_units) { [
137
- create(:inventory_unit, variant: variant),
138
- create(:inventory_unit, variant: variant)
139
- ] }
140
- before do
141
- shipment.inventory_units = inventory_units
142
- end
143
-
144
- it "should create a stock movement" do
145
- expect { shipment.inventory_units.finalize_units! }.
146
- to change { shipment.inventory_units.where(pending: false).count }.by 2
147
- end
148
- end
149
-
150
- describe "#current_or_new_return_item" do
151
- before { allow(inventory_unit).to receive_messages(pre_tax_amount: 100.0) }
152
-
153
- subject { inventory_unit.current_or_new_return_item }
154
-
155
- context "associated with a return item" do
156
- let(:return_item) { create(:return_item) }
157
- let(:inventory_unit) { return_item.inventory_unit }
158
-
159
- it "returns a persisted return item" do
160
- expect(subject).to be_persisted
161
- end
162
-
163
- it "returns it's associated return_item" do
164
- expect(subject).to eq return_item
165
- end
166
- end
167
-
168
- context "no associated return item" do
169
- let(:inventory_unit) { create(:inventory_unit) }
170
-
171
- it "returns a new return item" do
172
- expect(subject).to_not be_persisted
173
- end
174
-
175
- it "associates itself to the new return_item" do
176
- expect(subject.inventory_unit).to eq inventory_unit
177
- end
178
- end
179
- end
180
-
181
- describe '#additional_tax_total' do
182
- let(:quantity) { 2 }
183
- let(:line_item_additional_tax_total) { 10.00 }
184
- let(:line_item) do
185
- build(:line_item, {
186
- quantity: quantity,
187
- additional_tax_total: line_item_additional_tax_total,
188
- })
189
- end
190
-
191
- subject do
192
- build(:inventory_unit, line_item: line_item)
193
- end
194
-
195
- it 'is the correct amount' do
196
- expect(subject.additional_tax_total).to eq line_item_additional_tax_total / quantity
197
- end
198
- end
199
-
200
- describe '#included_tax_total' do
201
- let(:quantity) { 2 }
202
- let(:line_item_included_tax_total) { 10.00 }
203
- let(:line_item) do
204
- build(:line_item, {
205
- quantity: quantity,
206
- included_tax_total: line_item_included_tax_total,
207
- })
208
- end
209
-
210
- subject do
211
- build(:inventory_unit, line_item: line_item)
212
- end
213
-
214
- it 'is the correct amount' do
215
- expect(subject.included_tax_total).to eq line_item_included_tax_total / quantity
216
- end
217
- end
218
-
219
- describe '#additional_tax_total' do
220
- let(:quantity) { 2 }
221
- let(:line_item_additional_tax_total) { 10.00 }
222
- let(:line_item) do
223
- build(:line_item, {
224
- quantity: quantity,
225
- additional_tax_total: line_item_additional_tax_total,
226
- })
227
- end
228
-
229
- subject do
230
- build(:inventory_unit, line_item: line_item)
231
- end
232
-
233
- it 'is the correct amount' do
234
- expect(subject.additional_tax_total).to eq line_item_additional_tax_total / quantity
235
- end
236
- end
237
-
238
- describe '#included_tax_total' do
239
- let(:quantity) { 2 }
240
- let(:line_item_included_tax_total) { 10.00 }
241
- let(:line_item) do
242
- build(:line_item, {
243
- quantity: quantity,
244
- included_tax_total: line_item_included_tax_total,
245
- })
246
- end
247
-
248
- subject do
249
- build(:inventory_unit, line_item: line_item)
250
- end
251
-
252
- it 'is the correct amount' do
253
- expect(subject.included_tax_total).to eq line_item_included_tax_total / quantity
254
- end
255
- end
256
- end