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,327 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::LineItem, type: :model do
4
- let(:order) { create :order_with_line_items, line_items_count: 1 }
5
- let(:line_item) { order.line_items.first }
6
-
7
- before { create(:store) }
8
-
9
- describe 'Validations' do
10
- it { expect(line_item).to validate_numericality_of(:quantity).only_integer.with_message(Spree.t('validation.must_be_int')) }
11
- end
12
-
13
- describe '#ensure_valid_quantity' do
14
- context 'quantity.nil?' do
15
- before do
16
- line_item.quantity = nil
17
- line_item.valid?
18
- end
19
-
20
- it { expect(line_item.quantity).to be_zero }
21
- end
22
-
23
- context 'quantity < 0' do
24
- before do
25
- line_item.quantity = -1
26
- line_item.valid?
27
- end
28
-
29
- it { expect(line_item.quantity).to be_zero }
30
- end
31
-
32
- context 'quantity = 0' do
33
- before do
34
- line_item.quantity = 0
35
- line_item.valid?
36
- end
37
-
38
- it { expect(line_item.quantity).to be_zero }
39
- end
40
-
41
- context 'quantity > 0' do
42
- let(:original_quantity) { 1 }
43
-
44
- before do
45
- line_item.quantity = original_quantity
46
- line_item.valid?
47
- end
48
-
49
- it { expect(line_item.quantity).to eq(original_quantity) }
50
- end
51
- end
52
-
53
- context '#save' do
54
- it 'touches the order' do
55
- expect(line_item.order).to receive(:touch)
56
- line_item.touch
57
- end
58
- end
59
-
60
- context "#discontinued" do
61
- it "fetches discontinued products" do
62
- line_item.product.discontinue!
63
- expect(line_item.reload.product).to be_a Spree::Product
64
- end
65
-
66
- it "fetches discontinued variants" do
67
- line_item.variant.discontinue!
68
- expect(line_item.reload.variant).to be_a Spree::Variant
69
- end
70
- end
71
-
72
- context "#destroy" do
73
- it "returns inventory when a line item is destroyed" do
74
- expect_any_instance_of(Spree::OrderInventory).to receive(:verify)
75
- line_item.destroy
76
- end
77
-
78
- it "deletes inventory units" do
79
- expect { line_item.destroy }.to change { line_item.inventory_units.count }.from(1).to(0)
80
- end
81
- end
82
-
83
- context "#save" do
84
- context "line item changes" do
85
- before do
86
- line_item.quantity = line_item.quantity + 1
87
- end
88
-
89
- it "triggers adjustment total recalculation" do
90
- expect(line_item).to receive(:update_tax_charge) # Regression test for https://github.com/spree/spree/issues/4671
91
- expect(line_item).to receive(:recalculate_adjustments)
92
- line_item.save
93
- end
94
- end
95
-
96
- context "line item does not change" do
97
- it "does not trigger adjustment total recalculation" do
98
- expect(line_item).not_to receive(:recalculate_adjustments)
99
- line_item.save
100
- end
101
- end
102
-
103
- context "target_shipment is provided" do
104
- it "verifies inventory" do
105
- line_item.target_shipment = Spree::Shipment.new
106
- expect_any_instance_of(Spree::OrderInventory).to receive(:verify)
107
- line_item.save
108
- end
109
- end
110
- end
111
-
112
- context "#create" do
113
- let(:variant) { create(:variant) }
114
-
115
- before do
116
- create(:tax_rate, zone: order.tax_zone, tax_category: variant.tax_category)
117
- end
118
-
119
- context "when order has a tax zone" do
120
- before do
121
- expect(order.tax_zone).to be_present
122
- end
123
-
124
- it "creates a tax adjustment" do
125
- order.contents.add(variant)
126
- line_item = order.find_line_item_by_variant(variant)
127
- expect(line_item.adjustments.tax.count).to eq(1)
128
- end
129
- end
130
-
131
- context "when order does not have a tax zone" do
132
- before do
133
- order.bill_address = nil
134
- order.ship_address = nil
135
- order.save
136
- expect(order.reload.tax_zone).to be_nil
137
- end
138
-
139
- it "does not create a tax adjustment" do
140
- order.contents.add(variant)
141
- line_item = order.find_line_item_by_variant(variant)
142
- expect(line_item.adjustments.tax.count).to eq(0)
143
- end
144
- end
145
- end
146
-
147
- # Test for #3391
148
- context '#copy_price' do
149
- it "copies over a variant's prices" do
150
- line_item.price = nil
151
- line_item.cost_price = nil
152
- line_item.currency = nil
153
- line_item.copy_price
154
- variant = line_item.variant
155
- expect(line_item.price).to eq(variant.price)
156
- expect(line_item.cost_price).to eq(variant.cost_price)
157
- expect(line_item.currency).to eq(variant.currency)
158
- end
159
- end
160
-
161
- # test for copying prices when the vat changes
162
- context "#update_price" do
163
- it "copies over a variants differing price for another vat zone" do
164
- expect(line_item.variant).to receive(:price_including_vat_for).and_return(12)
165
- line_item.price = 10
166
- line_item.update_price
167
- expect(line_item.price).to eq(12)
168
- end
169
- end
170
-
171
- # Test for #3481
172
- context '#copy_tax_category' do
173
- it "copies over a variant's tax category" do
174
- line_item.tax_category = nil
175
- line_item.copy_tax_category
176
- expect(line_item.tax_category).to eq(line_item.variant.tax_category)
177
- end
178
- end
179
-
180
- describe '#discounted_amount' do
181
- it "returns the amount minus any discounts" do
182
- line_item.price = 10
183
- line_item.quantity = 2
184
- line_item.taxable_adjustment_total = -5
185
- expect(line_item.discounted_amount).to eq(15)
186
- end
187
- end
188
-
189
- describe '.currency' do
190
- it 'returns the globally configured currency' do
191
- line_item.currency == 'USD'
192
- end
193
- end
194
-
195
- describe "#discounted_money" do
196
- it "should return a money object with the discounted amount" do
197
- expect(line_item.discounted_money.to_s).to eq "$10.00"
198
- end
199
- end
200
-
201
- describe "#money" do
202
- before do
203
- line_item.price = 3.50
204
- line_item.quantity = 2
205
- end
206
-
207
- it "returns a Spree::Money representing the total for this line item" do
208
- expect(line_item.money.to_s).to eq("$7.00")
209
- end
210
- end
211
-
212
- describe '#single_money' do
213
- before do
214
- line_item.price = 3.50
215
- line_item.quantity = 2
216
- end
217
-
218
- it "returns a Spree::Money representing the price for one variant" do
219
- expect(line_item.single_money.to_s).to eq("$3.50")
220
- end
221
- end
222
-
223
- context "has inventory (completed order so items were already unstocked)" do
224
- let(:order) { Spree::Order.create(email: 'spree@example.com') }
225
- let(:variant) { create(:variant) }
226
-
227
- context "nothing left on stock" do
228
- before do
229
- variant.stock_items.update_all count_on_hand: 5, backorderable: false
230
- order.contents.add(variant, 5)
231
- order.create_proposed_shipments
232
- order.finalize!
233
- end
234
-
235
- it "allows to decrease item quantity" do
236
- line_item = order.line_items.first
237
- line_item.quantity -= 1
238
- line_item.target_shipment = order.shipments.first
239
-
240
- line_item.save
241
- expect(line_item.errors_on(:quantity).size).to eq(0)
242
- end
243
-
244
- it "doesnt allow to increase item quantity" do
245
- line_item = order.line_items.first
246
- line_item.quantity += 2
247
- line_item.target_shipment = order.shipments.first
248
-
249
- line_item.save
250
- expect(line_item.errors_on(:quantity).size).to eq(1)
251
- end
252
- end
253
-
254
- context "2 items left on stock" do
255
- before do
256
- variant.stock_items.update_all count_on_hand: 7, backorderable: false
257
- order.contents.add(variant, 5)
258
- order.create_proposed_shipments
259
- order.finalize!
260
- end
261
-
262
- it "allows to increase quantity up to stock availability" do
263
- line_item = order.line_items.first
264
- line_item.quantity += 2
265
- line_item.target_shipment = order.shipments.first
266
-
267
- line_item.save
268
- expect(line_item.errors_on(:quantity).size).to eq(0)
269
- end
270
-
271
- it "doesnt allow to increase quantity over stock availability" do
272
- line_item = order.line_items.first
273
- line_item.quantity += 3
274
- line_item.target_shipment = order.shipments.first
275
-
276
- line_item.save
277
- expect(line_item.errors_on(:quantity).size).to eq(1)
278
- end
279
- end
280
- end
281
-
282
- context "currency same as order.currency" do
283
- it "is a valid line item" do
284
- line_item = order.line_items.first
285
- line_item.currency = order.currency
286
- line_item.valid?
287
-
288
- expect(line_item.error_on(:currency).size).to eq(0)
289
- end
290
- end
291
-
292
- context "currency different than order.currency" do
293
- it "is not a valid line item" do
294
- line_item = order.line_items.first
295
- line_item.currency = "no currency"
296
- line_item.valid?
297
-
298
- expect(line_item.error_on(:currency).size).to eq(1)
299
- end
300
- end
301
-
302
- describe "#options=" do
303
- it "can handle updating a blank line item with no order" do
304
- line_item.options = { price: 123 }
305
- end
306
-
307
- it "updates the data provided in the options" do
308
- line_item.options = { price: 123 }
309
- expect(line_item.price).to eq 123
310
- end
311
-
312
- it "updates the price based on the options provided" do
313
- expect(line_item).to receive(:gift_wrap=).with(true)
314
- expect(line_item.variant).to receive(:gift_wrap_price_modifier_amount_in).with("USD", true).and_return 1.99
315
- line_item.options = { gift_wrap: true }
316
- expect(line_item.price).to eq 21.98
317
- end
318
- end
319
-
320
- describe "precision of pre_tax_amount" do
321
- let!(:line_item) { create :line_item, pre_tax_amount: 4.2051 }
322
-
323
- it "keeps four digits of precision even when reloading" do
324
- expect(line_item.reload.pre_tax_amount).to eq(4.2051)
325
- end
326
- end
327
- end
@@ -1,14 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::OptionType, :type => :model do
4
- context "touching" do
5
- it "should touch a product" do
6
- product_option_type = create(:product_option_type)
7
- option_type = product_option_type.option_type
8
- product = product_option_type.product
9
- product.update_column(:updated_at, 1.day.ago)
10
- option_type.touch
11
- expect(product.reload.updated_at).to be_within(3.seconds).of(Time.current)
12
- end
13
- end
14
- end
@@ -1,18 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::OptionValue, type: :model do
4
- describe 'delegate' do
5
- it { is_expected.to delegate_method(:name).to(:option_type).with_prefix }
6
- it { is_expected.to delegate_method(:presentation).to(:option_type).with_prefix }
7
- end
8
-
9
- context "touching" do
10
- it "should touch a variant" do
11
- variant = create(:variant)
12
- option_value = variant.option_values.first
13
- variant.update_column(:updated_at, 1.day.ago)
14
- option_value.touch
15
- expect(variant.reload.updated_at).to be_within(3.seconds).of(Time.current)
16
- end
17
- end
18
- end
@@ -1,50 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Order, :type => :model do
4
- let(:order) { Spree::Order.new }
5
-
6
- context 'validation' do
7
- context "when @use_billing is populated" do
8
- before do
9
- order.bill_address = stub_model(Spree::Address)
10
- order.ship_address = nil
11
- end
12
-
13
- context "with true" do
14
- before { order.use_billing = true }
15
-
16
- it "clones the bill address to the ship address" do
17
- order.valid?
18
- expect(order.ship_address).to eq(order.bill_address)
19
- end
20
- end
21
-
22
- context "with 'true'" do
23
- before { order.use_billing = 'true' }
24
-
25
- it "clones the bill address to the shipping" do
26
- order.valid?
27
- expect(order.ship_address).to eq(order.bill_address)
28
- end
29
- end
30
-
31
- context "with '1'" do
32
- before { order.use_billing = '1' }
33
-
34
- it "clones the bill address to the shipping" do
35
- order.valid?
36
- expect(order.ship_address).to eq(order.bill_address)
37
- end
38
- end
39
-
40
- context "with something other than a 'truthful' value" do
41
- before { order.use_billing = '0' }
42
-
43
- it "does not clone the bill address to the shipping" do
44
- order.valid?
45
- expect(order.ship_address).to be_nil
46
- end
47
- end
48
- end
49
- end
50
- end
@@ -1,29 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Order do
4
- context "when an order has an adjustment that zeroes the total, but another adjustment for shipping that raises it above zero" do
5
- let!(:persisted_order) { create(:order) }
6
- let!(:line_item) { create(:line_item) }
7
- let!(:shipping_method) do
8
- sm = create(:shipping_method)
9
- sm.calculator.preferred_amount = 10
10
- sm.save
11
- sm
12
- end
13
-
14
- before do
15
- # Don't care about available payment methods in this test
16
- allow(persisted_order).to receive_messages(:has_available_payment => false)
17
- persisted_order.line_items << line_item
18
- create(:adjustment, amount: -line_item.amount, label: "Promotion", adjustable: line_item, order: persisted_order)
19
- persisted_order.state = 'delivery'
20
- persisted_order.save # To ensure new state_change event
21
- end
22
-
23
- it "transitions from delivery to payment" do
24
- allow(persisted_order).to receive_messages(payment_required?: true)
25
- persisted_order.next!
26
- expect(persisted_order.state).to eq("payment")
27
- end
28
- end
29
- end
@@ -1,42 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Order, :type => :model do
4
- let(:order) { stub_model(Spree::Order) }
5
- before do
6
- Spree::Order.define_state_machine!
7
- end
8
-
9
- context "validations" do
10
- context "email validation" do
11
- # Regression test for #1238
12
- it "o'brien@gmail.com is a valid email address" do
13
- order.state = 'address'
14
- order.email = "o'brien@gmail.com"
15
- expect(order.error_on(:email).size).to eq(0)
16
- end
17
- end
18
- end
19
-
20
- context "#save" do
21
- context "when associated with a registered user" do
22
- let(:user) { double(:user, :email => "test@example.com") }
23
-
24
- before do
25
- allow(order).to receive_messages :user => user
26
- end
27
-
28
- it "should assign the email address of the user" do
29
- order.run_callbacks(:create)
30
- expect(order.email).to eq(user.email)
31
- end
32
- end
33
- end
34
-
35
- context "in the cart state" do
36
- it "should not validate email address" do
37
- order.state = "cart"
38
- order.email = nil
39
- expect(order.error_on(:email).size).to eq(0)
40
- end
41
- end
42
- end