spree_core 3.3.0.rc1 → 3.3.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (220) hide show
  1. checksums.yaml +4 -4
  2. data/app/helpers/spree/base_helper.rb +1 -1
  3. data/app/mailers/spree/base_mailer.rb +5 -0
  4. data/app/models/spree/ability.rb +4 -1
  5. data/app/models/spree/image.rb +6 -2
  6. data/app/models/spree/order.rb +10 -9
  7. data/app/models/spree/order/payments.rb +1 -1
  8. data/app/models/spree/payment_method/store_credit.rb +4 -0
  9. data/app/models/spree/shipment.rb +2 -0
  10. data/app/views/spree/shared/_base_mailer_header.html.erb +5 -1
  11. data/app/views/spree/shared/_mailer_line_item.html.erb +5 -1
  12. data/config/routes.rb +0 -3
  13. data/lib/spree/core/components.rb +17 -0
  14. data/lib/spree/core/controller_helpers/auth.rb +3 -1
  15. data/lib/spree/core/engine.rb +1 -0
  16. data/lib/spree/core/validators/email.rb +1 -5
  17. data/lib/spree/core/version.rb +1 -1
  18. data/spree_core.gemspec +1 -1
  19. metadata +4 -204
  20. data/lib/spree/testing_support/shoulda_matcher_configuration.rb +0 -6
  21. data/spec/fixtures/thinking-cat.jpg +0 -0
  22. data/spec/helpers/base_helper_spec.rb +0 -200
  23. data/spec/helpers/products_helper_spec.rb +0 -289
  24. data/spec/lib/calculated_adjustments_spec.rb +0 -7
  25. data/spec/lib/i18n_spec.rb +0 -123
  26. data/spec/lib/search/base_spec.rb +0 -86
  27. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -103
  28. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -110
  29. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -17
  30. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -72
  31. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -39
  32. data/spec/lib/spree/core/delegate_belongs_to_spec.rb +0 -22
  33. data/spec/lib/spree/core/importer/order_spec.rb +0 -607
  34. data/spec/lib/spree/core/number_generator_spec.rb +0 -139
  35. data/spec/lib/spree/core/token_generator_spec.rb +0 -24
  36. data/spec/lib/spree/core/validators/email_spec.rb +0 -54
  37. data/spec/lib/spree/core_spec.rb +0 -23
  38. data/spec/lib/spree/localized_number_spec.rb +0 -54
  39. data/spec/lib/spree/migrations_spec.rb +0 -36
  40. data/spec/lib/spree/money_spec.rb +0 -122
  41. data/spec/lib/tasks/exchanges_spec.rb +0 -136
  42. data/spec/mailers/order_mailer_spec.rb +0 -122
  43. data/spec/mailers/reimbursement_mailer_spec.rb +0 -52
  44. data/spec/mailers/shipment_mailer_spec.rb +0 -81
  45. data/spec/mailers/test_mailer_spec.rb +0 -38
  46. data/spec/models/spree/ability_spec.rb +0 -251
  47. data/spec/models/spree/address_spec.rb +0 -402
  48. data/spec/models/spree/adjustable/adjuster/base_spec.rb +0 -10
  49. data/spec/models/spree/adjustable/adjuster/promotion_spec.rb +0 -211
  50. data/spec/models/spree/adjustable/adjuster/tax_spec.rb +0 -86
  51. data/spec/models/spree/adjustable/adjustments_updater_spec.rb +0 -26
  52. data/spec/models/spree/adjustment_spec.rb +0 -189
  53. data/spec/models/spree/app_configuration_spec.rb +0 -26
  54. data/spec/models/spree/asset_spec.rb +0 -28
  55. data/spec/models/spree/calculator/default_tax_spec.rb +0 -152
  56. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -25
  57. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -47
  58. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -41
  59. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -15
  60. data/spec/models/spree/calculator/price_sack_spec.rb +0 -30
  61. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -47
  62. data/spec/models/spree/calculator/shipping.rb +0 -8
  63. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -23
  64. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -13
  65. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -52
  66. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -20
  67. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -29
  68. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -40
  69. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -51
  70. data/spec/models/spree/calculator_spec.rb +0 -69
  71. data/spec/models/spree/classification_spec.rb +0 -93
  72. data/spec/models/spree/concerns/display_money_spec.rb +0 -43
  73. data/spec/models/spree/concerns/user_methods_spec.rb +0 -82
  74. data/spec/models/spree/concerns/vat_price_calculation_spec.rb +0 -66
  75. data/spec/models/spree/country_spec.rb +0 -55
  76. data/spec/models/spree/credit_card_spec.rb +0 -328
  77. data/spec/models/spree/customer_return_spec.rb +0 -240
  78. data/spec/models/spree/exchange_spec.rb +0 -75
  79. data/spec/models/spree/gateway/bogus_simple.rb +0 -20
  80. data/spec/models/spree/gateway/bogus_spec.rb +0 -13
  81. data/spec/models/spree/gateway_spec.rb +0 -61
  82. data/spec/models/spree/image_spec.rb +0 -8
  83. data/spec/models/spree/inventory_unit_spec.rb +0 -256
  84. data/spec/models/spree/line_item_spec.rb +0 -348
  85. data/spec/models/spree/option_type_prototype_spec.rb +0 -9
  86. data/spec/models/spree/option_type_spec.rb +0 -14
  87. data/spec/models/spree/option_value_spec.rb +0 -18
  88. data/spec/models/spree/order/address_spec.rb +0 -50
  89. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  90. data/spec/models/spree/order/callbacks_spec.rb +0 -42
  91. data/spec/models/spree/order/checkout_spec.rb +0 -770
  92. data/spec/models/spree/order/currency_updater_spec.rb +0 -32
  93. data/spec/models/spree/order/finalizing_spec.rb +0 -114
  94. data/spec/models/spree/order/helpers_spec.rb +0 -5
  95. data/spec/models/spree/order/payment_spec.rb +0 -214
  96. data/spec/models/spree/order/risk_assessment_spec.rb +0 -84
  97. data/spec/models/spree/order/shipments_spec.rb +0 -43
  98. data/spec/models/spree/order/state_machine_spec.rb +0 -212
  99. data/spec/models/spree/order/store_credit_spec.rb +0 -457
  100. data/spec/models/spree/order/tax_spec.rb +0 -84
  101. data/spec/models/spree/order/totals_spec.rb +0 -24
  102. data/spec/models/spree/order/updating_spec.rb +0 -18
  103. data/spec/models/spree/order/validations_spec.rb +0 -15
  104. data/spec/models/spree/order_contents_spec.rb +0 -332
  105. data/spec/models/spree/order_inventory_spec.rb +0 -247
  106. data/spec/models/spree/order_merger_spec.rb +0 -135
  107. data/spec/models/spree/order_spec.rb +0 -1067
  108. data/spec/models/spree/order_updater_spec.rb +0 -305
  109. data/spec/models/spree/payment/gateway_options_spec.rb +0 -127
  110. data/spec/models/spree/payment/store_credit_spec.rb +0 -60
  111. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -291
  112. data/spec/models/spree/payment_method_spec.rb +0 -108
  113. data/spec/models/spree/payment_spec.rb +0 -922
  114. data/spec/models/spree/preference_spec.rb +0 -80
  115. data/spec/models/spree/preferences/configuration_spec.rb +0 -30
  116. data/spec/models/spree/preferences/preferable_spec.rb +0 -344
  117. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -58
  118. data/spec/models/spree/preferences/store_spec.rb +0 -46
  119. data/spec/models/spree/price_spec.rb +0 -128
  120. data/spec/models/spree/product/scopes_spec.rb +0 -174
  121. data/spec/models/spree/product_duplicator_spec.rb +0 -102
  122. data/spec/models/spree/product_filter_spec.rb +0 -26
  123. data/spec/models/spree/product_option_type_spec.rb +0 -9
  124. data/spec/models/spree/product_promotion_rule_spec.rb +0 -9
  125. data/spec/models/spree/product_property_spec.rb +0 -26
  126. data/spec/models/spree/product_spec.rb +0 -626
  127. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -113
  128. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -148
  129. data/spec/models/spree/promotion/actions/create_line_items_spec.rb +0 -86
  130. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -36
  131. data/spec/models/spree/promotion/rules/country_spec.rb +0 -36
  132. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -75
  133. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -282
  134. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -42
  135. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -90
  136. data/spec/models/spree/promotion/rules/product_spec.rb +0 -143
  137. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -102
  138. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -27
  139. data/spec/models/spree/promotion/rules/user_spec.rb +0 -45
  140. data/spec/models/spree/promotion_action_spec.rb +0 -10
  141. data/spec/models/spree/promotion_category_spec.rb +0 -17
  142. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -102
  143. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -323
  144. data/spec/models/spree/promotion_handler/free_shipping_spec.rb +0 -48
  145. data/spec/models/spree/promotion_handler/page_spec.rb +0 -44
  146. data/spec/models/spree/promotion_rule_spec.rb +0 -29
  147. data/spec/models/spree/promotion_rule_taxon_spec.rb +0 -9
  148. data/spec/models/spree/promotion_rule_user_spec.rb +0 -9
  149. data/spec/models/spree/promotion_spec.rb +0 -674
  150. data/spec/models/spree/property_prototype_spec.rb +0 -9
  151. data/spec/models/spree/property_spec.rb +0 -5
  152. data/spec/models/spree/prototype_spec.rb +0 -5
  153. data/spec/models/spree/prototype_taxon_spec.rb +0 -9
  154. data/spec/models/spree/refund_reason_spec.rb +0 -20
  155. data/spec/models/spree/refund_spec.rb +0 -195
  156. data/spec/models/spree/reimbursement/credit_spec.rb +0 -36
  157. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -140
  158. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -83
  159. data/spec/models/spree/reimbursement_performer_spec.rb +0 -30
  160. data/spec/models/spree/reimbursement_spec.rb +0 -188
  161. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -63
  162. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -53
  163. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -46
  164. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -55
  165. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -101
  166. data/spec/models/spree/return_authorization_reason_spec.rb +0 -7
  167. data/spec/models/spree/return_authorization_spec.rb +0 -230
  168. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -77
  169. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -58
  170. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -61
  171. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -32
  172. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -29
  173. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -35
  174. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -65
  175. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  176. data/spec/models/spree/return_item_spec.rb +0 -734
  177. data/spec/models/spree/returns_calculator_spec.rb +0 -14
  178. data/spec/models/spree/role_spec.rb +0 -7
  179. data/spec/models/spree/shipment_spec.rb +0 -744
  180. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  181. data/spec/models/spree/shipping_category_spec.rb +0 -19
  182. data/spec/models/spree/shipping_method_spec.rb +0 -125
  183. data/spec/models/spree/shipping_rate_spec.rb +0 -140
  184. data/spec/models/spree/state_spec.rb +0 -29
  185. data/spec/models/spree/stock/availability_validator_spec.rb +0 -42
  186. data/spec/models/spree/stock/content_item_spec.rb +0 -31
  187. data/spec/models/spree/stock/coordinator_spec.rb +0 -61
  188. data/spec/models/spree/stock/differentiator_spec.rb +0 -39
  189. data/spec/models/spree/stock/estimator_spec.rb +0 -202
  190. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -37
  191. data/spec/models/spree/stock/package_spec.rb +0 -182
  192. data/spec/models/spree/stock/packer_spec.rb +0 -70
  193. data/spec/models/spree/stock/prioritizer_spec.rb +0 -125
  194. data/spec/models/spree/stock/quantifier_spec.rb +0 -126
  195. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -29
  196. data/spec/models/spree/stock/splitter/base_spec.rb +0 -21
  197. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -47
  198. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -32
  199. data/spec/models/spree/stock_item_spec.rb +0 -465
  200. data/spec/models/spree/stock_location_spec.rb +0 -243
  201. data/spec/models/spree/stock_movement_spec.rb +0 -120
  202. data/spec/models/spree/stock_transfer_spec.rb +0 -50
  203. data/spec/models/spree/store_credit_event_spec.rb +0 -101
  204. data/spec/models/spree/store_credit_spec.rb +0 -798
  205. data/spec/models/spree/store_spec.rb +0 -78
  206. data/spec/models/spree/tax_category_spec.rb +0 -32
  207. data/spec/models/spree/tax_rate_spec.rb +0 -561
  208. data/spec/models/spree/taxon_spec.rb +0 -93
  209. data/spec/models/spree/taxonomy_spec.rb +0 -18
  210. data/spec/models/spree/tracker_spec.rb +0 -21
  211. data/spec/models/spree/user_spec.rb +0 -203
  212. data/spec/models/spree/variant_spec.rb +0 -818
  213. data/spec/models/spree/zone_member_spec.rb +0 -38
  214. data/spec/models/spree/zone_spec.rb +0 -472
  215. data/spec/spec_helper.rb +0 -82
  216. data/spec/support/big_decimal.rb +0 -5
  217. data/spec/support/concerns/adjustment_source.rb +0 -23
  218. data/spec/support/concerns/default_price.rb +0 -37
  219. data/spec/support/rake.rb +0 -13
  220. data/spec/support/test_gateway.rb +0 -2
@@ -1,348 +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
- it { expect(line_item).to validate_presence_of(:order) }
12
-
13
- describe 'ensure_proper_currency' do
14
- context 'order is present' do
15
- context "when line_item's currency matches with order's" do
16
- it { expect(line_item).to be_valid }
17
- end
18
-
19
- context "when line_item's currency does not matches with order's" do
20
- before do
21
- line_item.currency = "Invalid Currency"
22
- end
23
-
24
- it { expect(line_item).not_to be_valid }
25
- end
26
- end
27
- end
28
- end
29
-
30
- describe '#ensure_valid_quantity' do
31
- context 'quantity.nil?' do
32
- before do
33
- line_item.quantity = nil
34
- line_item.valid?
35
- end
36
-
37
- it { expect(line_item.quantity).to be_zero }
38
- end
39
-
40
- context 'quantity < 0' do
41
- before do
42
- line_item.quantity = -1
43
- line_item.valid?
44
- end
45
-
46
- it { expect(line_item.quantity).to be_zero }
47
- end
48
-
49
- context 'quantity = 0' do
50
- before do
51
- line_item.quantity = 0
52
- line_item.valid?
53
- end
54
-
55
- it { expect(line_item.quantity).to be_zero }
56
- end
57
-
58
- context 'quantity > 0' do
59
- let(:original_quantity) { 1 }
60
-
61
- before do
62
- line_item.quantity = original_quantity
63
- line_item.valid?
64
- end
65
-
66
- it { expect(line_item.quantity).to eq(original_quantity) }
67
- end
68
- end
69
-
70
- context '#save' do
71
- it 'touches the order' do
72
- expect(line_item.order).to receive(:touch)
73
- line_item.touch
74
- end
75
- end
76
-
77
- context "#discontinued" do
78
- it "fetches discontinued products" do
79
- line_item.product.discontinue!
80
- expect(line_item.reload.product).to be_a Spree::Product
81
- end
82
-
83
- it "fetches discontinued variants" do
84
- line_item.variant.discontinue!
85
- expect(line_item.reload.variant).to be_a Spree::Variant
86
- end
87
- end
88
-
89
- context "#destroy" do
90
- let!(:line_item) { order.line_items.first }
91
- it "returns inventory when a line item is destroyed" do
92
- is_expected.to callback(:verify_order_inventory).before(:destroy)
93
- end
94
-
95
- it "deletes inventory units" do
96
- expect { line_item.destroy }.to change { line_item.inventory_units.count }.from(1).to(0)
97
- end
98
- end
99
-
100
- context "#save" do
101
- context "line item changes" do
102
- before do
103
- line_item.quantity = line_item.quantity + 1
104
- end
105
-
106
- it "triggers adjustment total recalculation" do
107
- expect(line_item).to receive(:update_tax_charge) # Regression test for https://github.com/spree/spree/issues/4671
108
- expect(line_item).to receive(:recalculate_adjustments)
109
- line_item.save
110
- end
111
- end
112
-
113
- context "line item does not change" do
114
- it "does not trigger adjustment total recalculation" do
115
- expect(line_item).not_to receive(:recalculate_adjustments)
116
- line_item.save
117
- end
118
- end
119
-
120
- context "target_shipment is provided" do
121
- it "verifies inventory" do
122
- line_item.target_shipment = Spree::Shipment.new
123
- expect_any_instance_of(Spree::OrderInventory).to receive(:verify)
124
- line_item.save
125
- end
126
- end
127
- end
128
-
129
- context "#create" do
130
- let(:variant) { create(:variant) }
131
-
132
- before do
133
- create(:tax_rate, zone: order.tax_zone, tax_category: variant.tax_category)
134
- end
135
-
136
- context "when order has a tax zone" do
137
- before do
138
- expect(order.tax_zone).to be_present
139
- end
140
-
141
- it "creates a tax adjustment" do
142
- order.contents.add(variant)
143
- line_item = order.find_line_item_by_variant(variant)
144
- expect(line_item.adjustments.tax.count).to eq(1)
145
- end
146
- end
147
-
148
- context "when order does not have a tax zone" do
149
- before do
150
- order.bill_address = nil
151
- order.ship_address = nil
152
- order.save
153
- expect(order.reload.tax_zone).to be_nil
154
- end
155
-
156
- it "does not create a tax adjustment" do
157
- order.contents.add(variant)
158
- line_item = order.find_line_item_by_variant(variant)
159
- expect(line_item.adjustments.tax.count).to eq(0)
160
- end
161
- end
162
- end
163
-
164
- # Test for #3391
165
- context '#copy_price' do
166
- it "copies over a variant's prices" do
167
- line_item.price = nil
168
- line_item.cost_price = nil
169
- line_item.currency = nil
170
- line_item.copy_price
171
- variant = line_item.variant
172
- expect(line_item.price).to eq(variant.price)
173
- expect(line_item.cost_price).to eq(variant.cost_price)
174
- expect(line_item.currency).to eq(variant.currency)
175
- end
176
- end
177
-
178
- # test for copying prices when the vat changes
179
- context "#update_price" do
180
- it "copies over a variants differing price for another vat zone" do
181
- expect(line_item.variant).to receive(:price_including_vat_for).and_return(12)
182
- line_item.price = 10
183
- line_item.update_price
184
- expect(line_item.price).to eq(12)
185
- end
186
- end
187
-
188
- # Test for #3481
189
- context '#copy_tax_category' do
190
- it "copies over a variant's tax category" do
191
- line_item.tax_category = nil
192
- line_item.copy_tax_category
193
- expect(line_item.tax_category).to eq(line_item.variant.tax_category)
194
- end
195
- end
196
-
197
- describe '#discounted_amount' do
198
- it "returns the amount minus any discounts" do
199
- line_item.price = 10
200
- line_item.quantity = 2
201
- line_item.taxable_adjustment_total = -5
202
- expect(line_item.discounted_amount).to eq(15)
203
- end
204
- end
205
-
206
- describe '.currency' do
207
- it 'returns the globally configured currency' do
208
- line_item.currency == 'USD'
209
- end
210
- end
211
-
212
- describe "#discounted_money" do
213
- it "should return a money object with the discounted amount" do
214
- expect(line_item.discounted_money.to_s).to eq "$10.00"
215
- end
216
- end
217
-
218
- describe "#money" do
219
- before do
220
- line_item.price = 3.50
221
- line_item.quantity = 2
222
- end
223
-
224
- it "returns a Spree::Money representing the total for this line item" do
225
- expect(line_item.money.to_s).to eq("$7.00")
226
- end
227
- end
228
-
229
- describe '#single_money' do
230
- before do
231
- line_item.price = 3.50
232
- line_item.quantity = 2
233
- end
234
-
235
- it "returns a Spree::Money representing the price for one variant" do
236
- expect(line_item.single_money.to_s).to eq("$3.50")
237
- end
238
- end
239
-
240
- context "has inventory (completed order so items were already unstocked)" do
241
- let(:order) { Spree::Order.create(email: 'spree@example.com') }
242
- let(:variant) { create(:variant) }
243
-
244
- context "nothing left on stock" do
245
- before do
246
- variant.stock_items.update_all count_on_hand: 5, backorderable: false
247
- order.contents.add(variant, 5)
248
- order.create_proposed_shipments
249
- order.finalize!
250
- order.reload
251
- end
252
-
253
- it "allows to decrease item quantity" do
254
- line_item = order.line_items.first
255
- line_item.quantity -= 1
256
- line_item.target_shipment = order.shipments.first
257
- line_item.valid?
258
-
259
- expect(line_item.errors_on(:quantity).size).to eq(0)
260
- end
261
-
262
- it "doesnt allow to increase item quantity" do
263
- line_item = order.line_items.first
264
- line_item.quantity += 2
265
- line_item.target_shipment = order.shipments.first
266
- line_item.valid?
267
-
268
- expect(line_item.errors_on(:quantity).size).to eq(1)
269
- end
270
- end
271
-
272
- context "2 items left on stock" do
273
- before do
274
- variant.stock_items.update_all count_on_hand: 7, backorderable: false
275
- order.contents.add(variant, 5)
276
- order.create_proposed_shipments
277
- order.finalize!
278
- order.reload
279
- end
280
-
281
- it "allows to increase quantity up to stock availability" do
282
- line_item = order.line_items.first
283
- line_item.quantity += 2
284
- line_item.target_shipment = order.shipments.first
285
- line_item.valid?
286
-
287
- expect(line_item.errors_on(:quantity).size).to eq(0)
288
- end
289
-
290
- it "doesnt allow to increase quantity over stock availability" do
291
- line_item = order.line_items.first
292
- line_item.quantity += 3
293
- line_item.target_shipment = order.shipments.first
294
- line_item.valid?
295
-
296
- expect(line_item.errors_on(:quantity).size).to eq(1)
297
- end
298
- end
299
- end
300
-
301
- context "currency same as order.currency" do
302
- it "is a valid line item" do
303
- line_item = order.line_items.first
304
- line_item.currency = order.currency
305
- line_item.valid?
306
-
307
- expect(line_item.error_on(:currency).size).to eq(0)
308
- end
309
- end
310
-
311
- context "currency different than order.currency" do
312
- it "is not a valid line item" do
313
- line_item = order.line_items.first
314
- line_item.currency = "no currency"
315
- line_item.valid?
316
-
317
- expect(line_item.error_on(:currency).size).to eq(1)
318
- end
319
- end
320
-
321
- describe "#options=" do
322
- it "can handle updating a blank line item with no order" do
323
- line_item.options = { price: 123 }
324
- end
325
-
326
- it "updates the data provided in the options" do
327
- line_item.options = { price: 123 }
328
- expect(line_item.price).to eq 123
329
- end
330
-
331
- it "updates the price based on the options provided" do
332
- expect(line_item).to receive(:gift_wrap=).with(true)
333
- expect(line_item.variant).to receive(:gift_wrap_price_modifier_amount_in).with("USD", true).and_return 1.99
334
- line_item.options = { gift_wrap: true }
335
- expect(line_item.price).to eq 21.98
336
- end
337
- end
338
-
339
- describe "precision of pre_tax_amount" do
340
- let(:line_item) { create :line_item, pre_tax_amount: 4.2051 }
341
-
342
- it "keeps four digits of precision even when reloading" do
343
- # prevent it from updating pre_tax_amount
344
- allow_any_instance_of(Spree::LineItem).to receive(:update_tax_charge)
345
- expect(line_item.reload.pre_tax_amount).to eq(4.2051)
346
- end
347
- end
348
- end
@@ -1,9 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::OptionTypePrototype do
4
- describe 'Validations' do
5
- it { is_expected.to validate_presence_of(:prototype) }
6
- it { is_expected.to validate_presence_of(:option_type) }
7
- it { is_expected.to validate_uniqueness_of(:prototype_id).scoped_to(:option_type_id) }
8
- end
9
- 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