spree_core 3.1.5 → 3.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (215) hide show
  1. checksums.yaml +4 -4
  2. data/app/models/concerns/spree/ransackable_attributes.rb +6 -1
  3. data/app/models/concerns/spree/user_methods.rb +10 -0
  4. data/app/models/spree/legacy_user.rb +0 -8
  5. data/app/models/spree/order.rb +1 -1
  6. data/app/models/spree/product.rb +8 -0
  7. data/app/models/spree/product/scopes.rb +7 -3
  8. data/app/models/spree/stock_transfer.rb +1 -1
  9. data/config/locales/en.yml +2 -0
  10. data/lib/spree/core/version.rb +1 -1
  11. data/spree_core.gemspec +2 -2
  12. metadata +11 -208
  13. data/spec/fixtures/microdata.html +0 -22
  14. data/spec/fixtures/microdata_itemref.html +0 -15
  15. data/spec/fixtures/microdata_no_itemscope.html +0 -20
  16. data/spec/fixtures/thinking-cat.jpg +0 -0
  17. data/spec/helpers/base_helper_spec.rb +0 -200
  18. data/spec/helpers/products_helper_spec.rb +0 -296
  19. data/spec/lib/calculated_adjustments_spec.rb +0 -7
  20. data/spec/lib/i18n_spec.rb +0 -123
  21. data/spec/lib/search/base_spec.rb +0 -86
  22. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -103
  23. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -110
  24. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -17
  25. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -72
  26. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -39
  27. data/spec/lib/spree/core/delegate_belongs_to_spec.rb +0 -22
  28. data/spec/lib/spree/core/importer/order_spec.rb +0 -605
  29. data/spec/lib/spree/core/number_generator_spec.rb +0 -175
  30. data/spec/lib/spree/core/token_generator_spec.rb +0 -24
  31. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  32. data/spec/lib/spree/core_spec.rb +0 -23
  33. data/spec/lib/spree/localized_number_spec.rb +0 -48
  34. data/spec/lib/spree/migrations_spec.rb +0 -36
  35. data/spec/lib/spree/money_spec.rb +0 -122
  36. data/spec/lib/tasks/exchanges_spec.rb +0 -136
  37. data/spec/mailers/order_mailer_spec.rb +0 -122
  38. data/spec/mailers/reimbursement_mailer_spec.rb +0 -47
  39. data/spec/mailers/shipment_mailer_spec.rb +0 -81
  40. data/spec/mailers/test_mailer_spec.rb +0 -38
  41. data/spec/models/option_type_prototype_spec.rb +0 -9
  42. data/spec/models/spree/ability_spec.rb +0 -251
  43. data/spec/models/spree/address_spec.rb +0 -291
  44. data/spec/models/spree/adjustable/adjuster/base_spec.rb +0 -10
  45. data/spec/models/spree/adjustable/adjuster/promotion_spec.rb +0 -211
  46. data/spec/models/spree/adjustable/adjuster/tax_spec.rb +0 -86
  47. data/spec/models/spree/adjustable/adjustments_updater_spec.rb +0 -26
  48. data/spec/models/spree/adjustment_spec.rb +0 -189
  49. data/spec/models/spree/app_configuration_spec.rb +0 -26
  50. data/spec/models/spree/asset_spec.rb +0 -28
  51. data/spec/models/spree/calculator/default_tax_spec.rb +0 -152
  52. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -25
  53. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -47
  54. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -41
  55. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -15
  56. data/spec/models/spree/calculator/price_sack_spec.rb +0 -30
  57. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -51
  58. data/spec/models/spree/calculator/shipping.rb +0 -8
  59. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -23
  60. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -13
  61. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -52
  62. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -20
  63. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -29
  64. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -40
  65. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -51
  66. data/spec/models/spree/calculator_spec.rb +0 -69
  67. data/spec/models/spree/classification_spec.rb +0 -93
  68. data/spec/models/spree/concerns/display_money_spec.rb +0 -43
  69. data/spec/models/spree/concerns/user_methods_spec.rb +0 -55
  70. data/spec/models/spree/concerns/vat_price_calculation_spec.rb +0 -66
  71. data/spec/models/spree/country_spec.rb +0 -55
  72. data/spec/models/spree/credit_card_spec.rb +0 -328
  73. data/spec/models/spree/customer_return_spec.rb +0 -240
  74. data/spec/models/spree/exchange_spec.rb +0 -75
  75. data/spec/models/spree/gateway/bogus_simple.rb +0 -20
  76. data/spec/models/spree/gateway/bogus_spec.rb +0 -13
  77. data/spec/models/spree/gateway_spec.rb +0 -61
  78. data/spec/models/spree/image_spec.rb +0 -8
  79. data/spec/models/spree/inventory_unit_spec.rb +0 -225
  80. data/spec/models/spree/line_item_spec.rb +0 -327
  81. data/spec/models/spree/option_type_spec.rb +0 -14
  82. data/spec/models/spree/option_value_spec.rb +0 -18
  83. data/spec/models/spree/order/address_spec.rb +0 -50
  84. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  85. data/spec/models/spree/order/callbacks_spec.rb +0 -42
  86. data/spec/models/spree/order/checkout_spec.rb +0 -782
  87. data/spec/models/spree/order/currency_updater_spec.rb +0 -32
  88. data/spec/models/spree/order/finalizing_spec.rb +0 -114
  89. data/spec/models/spree/order/helpers_spec.rb +0 -5
  90. data/spec/models/spree/order/payment_spec.rb +0 -214
  91. data/spec/models/spree/order/risk_assessment_spec.rb +0 -84
  92. data/spec/models/spree/order/shipments_spec.rb +0 -43
  93. data/spec/models/spree/order/state_machine_spec.rb +0 -211
  94. data/spec/models/spree/order/store_credit_spec.rb +0 -426
  95. data/spec/models/spree/order/tax_spec.rb +0 -84
  96. data/spec/models/spree/order/totals_spec.rb +0 -24
  97. data/spec/models/spree/order/updating_spec.rb +0 -18
  98. data/spec/models/spree/order/validations_spec.rb +0 -15
  99. data/spec/models/spree/order_contents_spec.rb +0 -297
  100. data/spec/models/spree/order_inventory_spec.rb +0 -238
  101. data/spec/models/spree/order_merger_spec.rb +0 -135
  102. data/spec/models/spree/order_spec.rb +0 -967
  103. data/spec/models/spree/order_updater_spec.rb +0 -305
  104. data/spec/models/spree/payment/gateway_options_spec.rb +0 -127
  105. data/spec/models/spree/payment/store_credit_spec.rb +0 -60
  106. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -291
  107. data/spec/models/spree/payment_method_spec.rb +0 -103
  108. data/spec/models/spree/payment_spec.rb +0 -919
  109. data/spec/models/spree/preference_spec.rb +0 -80
  110. data/spec/models/spree/preferences/configuration_spec.rb +0 -30
  111. data/spec/models/spree/preferences/preferable_spec.rb +0 -348
  112. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -58
  113. data/spec/models/spree/preferences/store_spec.rb +0 -46
  114. data/spec/models/spree/price_spec.rb +0 -128
  115. data/spec/models/spree/product/scopes_spec.rb +0 -183
  116. data/spec/models/spree/product_duplicator_spec.rb +0 -103
  117. data/spec/models/spree/product_filter_spec.rb +0 -26
  118. data/spec/models/spree/product_option_type_spec.rb +0 -9
  119. data/spec/models/spree/product_promotion_rule_spec.rb +0 -9
  120. data/spec/models/spree/product_property_spec.rb +0 -22
  121. data/spec/models/spree/product_spec.rb +0 -540
  122. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -50
  123. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -148
  124. data/spec/models/spree/promotion/actions/create_line_items_spec.rb +0 -86
  125. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -36
  126. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -75
  127. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -282
  128. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -42
  129. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -90
  130. data/spec/models/spree/promotion/rules/product_spec.rb +0 -143
  131. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -102
  132. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -27
  133. data/spec/models/spree/promotion/rules/user_spec.rb +0 -45
  134. data/spec/models/spree/promotion_action_spec.rb +0 -10
  135. data/spec/models/spree/promotion_category_spec.rb +0 -17
  136. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -102
  137. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -323
  138. data/spec/models/spree/promotion_handler/free_shipping_spec.rb +0 -48
  139. data/spec/models/spree/promotion_handler/page_spec.rb +0 -44
  140. data/spec/models/spree/promotion_rule_spec.rb +0 -29
  141. data/spec/models/spree/promotion_rule_taxon_spec.rb +0 -9
  142. data/spec/models/spree/promotion_rule_user_spec.rb +0 -9
  143. data/spec/models/spree/promotion_spec.rb +0 -644
  144. data/spec/models/spree/property_prototype_spec.rb +0 -9
  145. data/spec/models/spree/property_spec.rb +0 -5
  146. data/spec/models/spree/prototype_spec.rb +0 -5
  147. data/spec/models/spree/prototype_taxon_spec.rb +0 -9
  148. data/spec/models/spree/refund_reason_spec.rb +0 -7
  149. data/spec/models/spree/refund_spec.rb +0 -195
  150. data/spec/models/spree/reimbursement/credit_spec.rb +0 -36
  151. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -140
  152. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -83
  153. data/spec/models/spree/reimbursement_performer_spec.rb +0 -30
  154. data/spec/models/spree/reimbursement_spec.rb +0 -188
  155. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -63
  156. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -53
  157. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -46
  158. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -55
  159. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -101
  160. data/spec/models/spree/return_authorization_reason_spec.rb +0 -7
  161. data/spec/models/spree/return_authorization_spec.rb +0 -230
  162. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -77
  163. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -58
  164. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -61
  165. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -32
  166. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -29
  167. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -35
  168. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -65
  169. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  170. data/spec/models/spree/return_item_spec.rb +0 -731
  171. data/spec/models/spree/returns_calculator_spec.rb +0 -14
  172. data/spec/models/spree/role_spec.rb +0 -7
  173. data/spec/models/spree/shipment_spec.rb +0 -740
  174. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  175. data/spec/models/spree/shipping_category_spec.rb +0 -19
  176. data/spec/models/spree/shipping_method_spec.rb +0 -95
  177. data/spec/models/spree/shipping_rate_spec.rb +0 -140
  178. data/spec/models/spree/state_spec.rb +0 -29
  179. data/spec/models/spree/stock/availability_validator_spec.rb +0 -36
  180. data/spec/models/spree/stock/content_item_spec.rb +0 -31
  181. data/spec/models/spree/stock/coordinator_spec.rb +0 -51
  182. data/spec/models/spree/stock/differentiator_spec.rb +0 -39
  183. data/spec/models/spree/stock/estimator_spec.rb +0 -202
  184. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -38
  185. data/spec/models/spree/stock/package_spec.rb +0 -194
  186. data/spec/models/spree/stock/packer_spec.rb +0 -70
  187. data/spec/models/spree/stock/prioritizer_spec.rb +0 -125
  188. data/spec/models/spree/stock/quantifier_spec.rb +0 -126
  189. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -29
  190. data/spec/models/spree/stock/splitter/base_spec.rb +0 -21
  191. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -47
  192. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -32
  193. data/spec/models/spree/stock_item_spec.rb +0 -428
  194. data/spec/models/spree/stock_location_spec.rb +0 -243
  195. data/spec/models/spree/stock_movement_spec.rb +0 -56
  196. data/spec/models/spree/stock_transfer_spec.rb +0 -50
  197. data/spec/models/spree/store_credit_event_spec.rb +0 -101
  198. data/spec/models/spree/store_credit_spec.rb +0 -786
  199. data/spec/models/spree/store_spec.rb +0 -78
  200. data/spec/models/spree/tax_category_spec.rb +0 -32
  201. data/spec/models/spree/tax_rate_spec.rb +0 -542
  202. data/spec/models/spree/taxon_spec.rb +0 -74
  203. data/spec/models/spree/taxonomy_spec.rb +0 -18
  204. data/spec/models/spree/tracker_spec.rb +0 -21
  205. data/spec/models/spree/user_spec.rb +0 -203
  206. data/spec/models/spree/variant_spec.rb +0 -795
  207. data/spec/models/spree/zone_member_spec.rb +0 -38
  208. data/spec/models/spree/zone_spec.rb +0 -470
  209. data/spec/spec_helper.rb +0 -77
  210. data/spec/support/big_decimal.rb +0 -5
  211. data/spec/support/concerns/adjustment_source.rb +0 -23
  212. data/spec/support/concerns/default_price.rb +0 -37
  213. data/spec/support/rake.rb +0 -13
  214. data/spec/support/test_gateway.rb +0 -2
  215. data/spec/validators/db_maximum_length_validator_spec.rb +0 -22
@@ -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,225 +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
- context "#backordered_for_stock_item" do
8
- let(:order) do
9
- order = create(:order, state: 'complete', ship_address: create(:ship_address))
10
- order.completed_at = Time.current
11
- create(:shipment, order: order, stock_location: stock_location)
12
- order.shipments.reload
13
- create(:line_item, order: order, variant: stock_item.variant)
14
- order.line_items.reload
15
- order.tap(&:save!)
16
- end
17
-
18
- let(:shipment) do
19
- order.shipments.first
20
- end
21
-
22
- let(:shipping_method) do
23
- shipment.shipping_methods.first
24
- end
25
-
26
- let!(:unit) do
27
- unit = shipment.inventory_units.first
28
- unit.state = 'backordered'
29
- unit.tap(&:save!)
30
- end
31
-
32
- before do
33
- stock_item.set_count_on_hand(-2)
34
- end
35
-
36
- # Regression for #3066
37
- it "returns modifiable objects" do
38
- units = Spree::InventoryUnit.backordered_for_stock_item(stock_item)
39
- expect { units.first.save! }.to_not raise_error
40
- end
41
-
42
- it "finds inventory units from its stock location when the unit's variant matches the stock item's variant" do
43
- expect(Spree::InventoryUnit.backordered_for_stock_item(stock_item)).to match_array([unit])
44
- end
45
-
46
- it "does not find inventory units that aren't backordered" do
47
- on_hand_unit = shipment.inventory_units.build
48
- on_hand_unit.state = 'on_hand'
49
- on_hand_unit.variant_id = 1
50
- on_hand_unit.save!
51
-
52
- expect(Spree::InventoryUnit.backordered_for_stock_item(stock_item)).not_to include(on_hand_unit)
53
- end
54
-
55
- it "does not find inventory units that don't match the stock item's variant" do
56
- other_variant_unit = shipment.inventory_units.build
57
- other_variant_unit.state = 'backordered'
58
- other_variant_unit.variant = create(:variant)
59
- other_variant_unit.save!
60
-
61
- expect(Spree::InventoryUnit.backordered_for_stock_item(stock_item)).not_to include(other_variant_unit)
62
- end
63
-
64
- it "does not change shipping cost when fulfilling the order" do
65
- current_shipment_cost = shipment.cost
66
- shipping_method.calculator.set_preference(:amount, current_shipment_cost + 5.0)
67
- stock_item.set_count_on_hand(0)
68
- expect(shipment.reload.cost).to eq(current_shipment_cost)
69
- end
70
-
71
- context "other shipments" do
72
- let(:other_order) do
73
- order = create(:order)
74
- order.state = 'payment'
75
- order.completed_at = nil
76
- order.tap(&:save!)
77
- end
78
-
79
- let(:other_shipment) do
80
- shipment = Spree::Shipment.new
81
- shipment.stock_location = stock_location
82
- shipment.shipping_methods << create(:shipping_method)
83
- shipment.order = other_order
84
- # We don't care about this in this test
85
- allow(shipment).to receive(:ensure_correct_adjustment)
86
- shipment.tap(&:save!)
87
- end
88
-
89
- let!(:other_unit) do
90
- unit = other_shipment.inventory_units.build
91
- unit.state = 'backordered'
92
- unit.variant_id = stock_item.variant.id
93
- unit.order_id = other_order.id
94
- unit.tap(&:save!)
95
- end
96
-
97
- it "does not find inventory units belonging to incomplete orders" do
98
- expect(Spree::InventoryUnit.backordered_for_stock_item(stock_item)).not_to include(other_unit)
99
- end
100
-
101
- end
102
-
103
- end
104
-
105
- context "#finalize_units!" do
106
- let!(:stock_location) { create(:stock_location) }
107
- let(:variant) { create(:variant) }
108
- let(:inventory_units) { [
109
- create(:inventory_unit, variant: variant),
110
- create(:inventory_unit, variant: variant)
111
- ] }
112
-
113
- it "should create a stock movement" do
114
- Spree::InventoryUnit.finalize_units!(inventory_units)
115
- expect(inventory_units.any?(&:pending)).to be false
116
- end
117
- end
118
-
119
- describe "#current_or_new_return_item" do
120
- before { allow(inventory_unit).to receive_messages(pre_tax_amount: 100.0) }
121
-
122
- subject { inventory_unit.current_or_new_return_item }
123
-
124
- context "associated with a return item" do
125
- let(:return_item) { create(:return_item) }
126
- let(:inventory_unit) { return_item.inventory_unit }
127
-
128
- it "returns a persisted return item" do
129
- expect(subject).to be_persisted
130
- end
131
-
132
- it "returns it's associated return_item" do
133
- expect(subject).to eq return_item
134
- end
135
- end
136
-
137
- context "no associated return item" do
138
- let(:inventory_unit) { create(:inventory_unit) }
139
-
140
- it "returns a new return item" do
141
- expect(subject).to_not be_persisted
142
- end
143
-
144
- it "associates itself to the new return_item" do
145
- expect(subject.inventory_unit).to eq inventory_unit
146
- end
147
- end
148
- end
149
-
150
- describe '#additional_tax_total' do
151
- let(:quantity) { 2 }
152
- let(:line_item_additional_tax_total) { 10.00 }
153
- let(:line_item) do
154
- build(:line_item, {
155
- quantity: quantity,
156
- additional_tax_total: line_item_additional_tax_total,
157
- })
158
- end
159
-
160
- subject do
161
- build(:inventory_unit, line_item: line_item)
162
- end
163
-
164
- it 'is the correct amount' do
165
- expect(subject.additional_tax_total).to eq line_item_additional_tax_total / quantity
166
- end
167
- end
168
-
169
- describe '#included_tax_total' do
170
- let(:quantity) { 2 }
171
- let(:line_item_included_tax_total) { 10.00 }
172
- let(:line_item) do
173
- build(:line_item, {
174
- quantity: quantity,
175
- included_tax_total: line_item_included_tax_total,
176
- })
177
- end
178
-
179
- subject do
180
- build(:inventory_unit, line_item: line_item)
181
- end
182
-
183
- it 'is the correct amount' do
184
- expect(subject.included_tax_total).to eq line_item_included_tax_total / quantity
185
- end
186
- end
187
-
188
- describe '#additional_tax_total' do
189
- let(:quantity) { 2 }
190
- let(:line_item_additional_tax_total) { 10.00 }
191
- let(:line_item) do
192
- build(:line_item, {
193
- quantity: quantity,
194
- additional_tax_total: line_item_additional_tax_total,
195
- })
196
- end
197
-
198
- subject do
199
- build(:inventory_unit, line_item: line_item)
200
- end
201
-
202
- it 'is the correct amount' do
203
- expect(subject.additional_tax_total).to eq line_item_additional_tax_total / quantity
204
- end
205
- end
206
-
207
- describe '#included_tax_total' do
208
- let(:quantity) { 2 }
209
- let(:line_item_included_tax_total) { 10.00 }
210
- let(:line_item) do
211
- build(:line_item, {
212
- quantity: quantity,
213
- included_tax_total: line_item_included_tax_total,
214
- })
215
- end
216
-
217
- subject do
218
- build(:inventory_unit, line_item: line_item)
219
- end
220
-
221
- it 'is the correct amount' do
222
- expect(subject.included_tax_total).to eq line_item_included_tax_total / quantity
223
- end
224
- end
225
- end