spree_core 3.1.5 → 3.1.6

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