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,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