spree_core 3.3.0.rc1 → 3.3.0.rc2

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 (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,243 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spree
4
- describe StockLocation, type: :model do
5
- subject { create(:stock_location_with_items, backorderable_default: true) }
6
- let(:stock_item) { subject.stock_items.order(:id).first }
7
- let(:variant) { stock_item.variant }
8
-
9
- it 'creates stock_items for all variants' do
10
- expect(subject.stock_items.count).to eq Variant.count
11
- end
12
-
13
- context "handling stock items" do
14
- let!(:variant) { create(:variant) }
15
-
16
- context "given a variant" do
17
- subject { StockLocation.create(name: "testing", propagate_all_variants: false) }
18
-
19
- context "set up" do
20
- it "creates stock item" do
21
- expect(subject).to receive(:propagate_variant)
22
- subject.set_up_stock_item(variant)
23
- end
24
-
25
- context "stock item exists" do
26
- let!(:stock_item) { subject.propagate_variant(variant) }
27
-
28
- it "returns existing stock item" do
29
- expect(subject.set_up_stock_item(variant)).to eq(stock_item)
30
- end
31
- end
32
- end
33
-
34
- context "propagate variants" do
35
- let(:stock_item) { subject.propagate_variant(variant) }
36
-
37
- it "creates a new stock item" do
38
- expect {
39
- subject.propagate_variant(variant)
40
- }.to change{ StockItem.count }.by(1)
41
- end
42
-
43
- context "passes backorderable default config" do
44
- context "true" do
45
- before { subject.backorderable_default = true }
46
- it { expect(stock_item.backorderable).to be true }
47
- end
48
-
49
- context "false" do
50
- before { subject.backorderable_default = false }
51
- it { expect(stock_item.backorderable).to be false }
52
- end
53
- end
54
- end
55
-
56
- context "propagate all variants" do
57
- subject { StockLocation.new(name: "testing") }
58
-
59
- context "true" do
60
- before { subject.propagate_all_variants = true }
61
-
62
- specify do
63
- expect(subject).to receive(:propagate_variant).at_least(:once)
64
- subject.save!
65
- end
66
- end
67
-
68
- context "false" do
69
- before { subject.propagate_all_variants = false }
70
-
71
- specify do
72
- expect(subject).not_to receive(:propagate_variant)
73
- subject.save!
74
- end
75
- end
76
- end
77
- end
78
- end
79
-
80
- it 'finds a stock_item for a variant' do
81
- stock_item = subject.stock_item(variant)
82
- expect(stock_item.count_on_hand).to eq 10
83
- end
84
-
85
- it 'finds a stock_item for a variant by id' do
86
- stock_item = subject.stock_item(variant.id)
87
- expect(stock_item.variant).to eq variant
88
- end
89
-
90
- it 'returns nil when stock_item is not found for variant' do
91
- stock_item = subject.stock_item(100)
92
- expect(stock_item).to be_nil
93
- end
94
-
95
- describe '#stock_item_or_create' do
96
- before do
97
- variant = create(:variant)
98
- variant.stock_items.destroy_all
99
- variant.save
100
- end
101
-
102
- it 'creates a stock_item if not found for a variant' do
103
- stock_item = subject.stock_item_or_create(variant)
104
- expect(stock_item.variant).to eq variant
105
- end
106
- end
107
-
108
- it 'finds a count_on_hand for a variant' do
109
- expect(subject.count_on_hand(variant)).to eq 10
110
- end
111
-
112
- it 'finds determines if you a variant is backorderable' do
113
- expect(subject.backorderable?(variant)).to be true
114
- end
115
-
116
- it 'restocks a variant with a positive stock movement' do
117
- originator = double
118
- expect(subject).to receive(:move).with(variant, 5, originator)
119
- subject.restock(variant, 5, originator)
120
- end
121
-
122
- it 'unstocks a variant with a negative stock movement' do
123
- originator = double
124
- expect(subject).to receive(:move).with(variant, -5, originator)
125
- subject.unstock(variant, 5, originator)
126
- end
127
-
128
- it 'it creates a stock_movement' do
129
- expect {
130
- subject.move variant, 5
131
- }.to change { subject.stock_movements.where(stock_item_id: stock_item).count }.by(1)
132
- end
133
-
134
- it 'can be deactivated' do
135
- create(:stock_location, active: true)
136
- create(:stock_location, active: false)
137
- expect(Spree::StockLocation.active.count).to eq 1
138
- end
139
-
140
- it 'ensures only one stock location is default at a time' do
141
- first = create(:stock_location, active: true, default: true)
142
- second = create(:stock_location, active: true, default: true)
143
-
144
- expect(first.reload.default).to eq false
145
- expect(second.reload.default).to eq true
146
-
147
- first.default = true
148
- first.save!
149
-
150
- expect(first.reload.default).to eq true
151
- expect(second.reload.default).to eq false
152
- end
153
-
154
- context 'fill_status' do
155
- it 'all on_hand with no backordered' do
156
- on_hand, backordered = subject.fill_status(variant, 5)
157
- expect(on_hand).to eq 5
158
- expect(backordered).to eq 0
159
- end
160
-
161
- it 'some on_hand with some backordered' do
162
- on_hand, backordered = subject.fill_status(variant, 20)
163
- expect(on_hand).to eq 10
164
- expect(backordered).to eq 10
165
- end
166
-
167
- it 'zero on_hand with all backordered' do
168
- zero_stock_item = mock_model(StockItem,
169
- count_on_hand: 0,
170
- backorderable?: true)
171
- expect(subject).to receive(:stock_item).with(variant).and_return(zero_stock_item)
172
-
173
- on_hand, backordered = subject.fill_status(variant, 20)
174
- expect(on_hand).to eq 0
175
- expect(backordered).to eq 20
176
- end
177
-
178
- context 'when backordering is not allowed' do
179
- before do
180
- @stock_item = mock_model(StockItem, backorderable?: false)
181
- expect(subject).to receive(:stock_item).with(variant).and_return(@stock_item)
182
- end
183
-
184
- it 'all on_hand' do
185
- allow(@stock_item).to receive_messages(count_on_hand: 10)
186
-
187
- on_hand, backordered = subject.fill_status(variant, 5)
188
- expect(on_hand).to eq 5
189
- expect(backordered).to eq 0
190
- end
191
-
192
- it 'some on_hand' do
193
- allow(@stock_item).to receive_messages(count_on_hand: 10)
194
-
195
- on_hand, backordered = subject.fill_status(variant, 20)
196
- expect(on_hand).to eq 10
197
- expect(backordered).to eq 0
198
- end
199
-
200
- it 'zero on_hand' do
201
- allow(@stock_item).to receive_messages(count_on_hand: 0)
202
-
203
- on_hand, backordered = subject.fill_status(variant, 20)
204
- expect(on_hand).to eq 0
205
- expect(backordered).to eq 0
206
- end
207
- end
208
-
209
- context 'without stock_items' do
210
- subject { create(:stock_location) }
211
- let(:variant) { create(:base_variant) }
212
-
213
- it 'zero on_hand and backordered' do
214
- subject
215
- variant.stock_items.destroy_all
216
- on_hand, backordered = subject.fill_status(variant, 1)
217
- expect(on_hand).to eq 0
218
- expect(backordered).to eq 0
219
- end
220
- end
221
- end
222
-
223
- context '#state_text' do
224
- context 'state is blank' do
225
- subject { StockLocation.create(name: "testing", state: nil, state_name: 'virginia') }
226
- specify { expect(subject.state_text).to eq('virginia') }
227
- end
228
-
229
- context 'both name and abbr is present' do
230
- let(:state) { stub_model(Spree::State, name: 'virginia', abbr: 'va') }
231
- subject { StockLocation.create(name: "testing", state: state, state_name: nil) }
232
- specify { expect(subject.state_text).to eq('va') }
233
- end
234
-
235
- context 'only name is present' do
236
- let(:state) { stub_model(Spree::State, name: 'virginia', abbr: nil) }
237
- subject { StockLocation.create(name: "testing", state: state, state_name: nil) }
238
- specify { expect(subject.state_text).to eq('virginia') }
239
- end
240
- end
241
-
242
- end
243
- end
@@ -1,120 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::StockMovement, type: :model do
4
-
5
- describe 'Constants' do
6
- describe 'QUANTITY_LIMITS[:max]' do
7
- it 'return 2**31 - 1' do
8
- expect(Spree::StockMovement::QUANTITY_LIMITS[:max]).to eq(2**31 - 1)
9
- end
10
- end
11
-
12
- describe 'QUANTITY_LIMITS[:min]' do
13
- it 'return -2**31' do
14
- expect(Spree::StockMovement::QUANTITY_LIMITS[:min]).to eq(-2**31)
15
- end
16
- end
17
- end
18
-
19
- describe 'Associations' do
20
- it { is_expected.to belong_to(:stock_item).class_name('Spree::StockItem').inverse_of(:stock_movements) }
21
- it { is_expected.to belong_to(:originator) }
22
- end
23
-
24
- describe 'Validations' do
25
- it do
26
- is_expected.to validate_presence_of(:stock_item)
27
- end
28
-
29
- it do
30
- is_expected.to validate_presence_of(:quantity)
31
- end
32
-
33
- it do
34
- is_expected.to validate_numericality_of(:quantity).
35
- is_greater_than_or_equal_to(Spree::StockMovement::QUANTITY_LIMITS[:min]).
36
- is_less_than_or_equal_to(Spree::StockMovement::QUANTITY_LIMITS[:max]).only_integer
37
- end
38
- end
39
-
40
- describe 'Callbacks' do
41
- it { is_expected.to callback(:update_stock_item_quantity).after(:create) }
42
- end
43
-
44
- describe 'Scope' do
45
- describe '.recent' do
46
- it 'should order chronologically by created at' do
47
- expect(Spree::StockMovement.recent.to_sql).
48
- to eq Spree::StockMovement.unscoped.order(created_at: :desc).to_sql
49
- end
50
- end
51
- end
52
-
53
- describe 'whitelisted ransackable attributes' do
54
- it 'returns amount attribute' do
55
- expect(Spree::StockMovement.whitelisted_ransackable_attributes).to eq(['quantity'])
56
- end
57
- end
58
-
59
- describe 'Insatance Methods' do
60
- let(:stock_location) { create(:stock_location_with_items) }
61
- let(:stock_item) { stock_location.stock_items.order(:id).first }
62
-
63
- describe '#readonly?' do
64
- let(:stock_movement) { create(:stock_movement, stock_item: stock_item) }
65
- it 'should not update a persisted record' do
66
- expect { stock_movement.save }.to raise_error(ActiveRecord::ReadOnlyRecord)
67
- end
68
- end
69
-
70
- describe '#update_stock_item_quantity' do
71
- let(:stock_movement) { build(:stock_movement, stock_item: stock_item) }
72
-
73
- context 'when track inventory levels is false' do
74
- before do
75
- Spree::Config[:track_inventory_levels] = false
76
- stock_movement.quantity = 1
77
- stock_movement.save
78
- stock_item.reload
79
- end
80
- it 'does not update count on hand' do
81
- expect(stock_item.count_on_hand).to eq(10)
82
- end
83
- end
84
-
85
- context 'when track inventory tracking is off' do
86
- before do
87
- stock_item.variant.track_inventory = false
88
- stock_movement.quantity = 1
89
- stock_movement.save
90
- stock_item.reload
91
- end
92
- it 'does not update count on hand' do
93
- expect(stock_item.count_on_hand).to eq(10)
94
- end
95
- end
96
-
97
- context 'when quantity is negative' do
98
- before do
99
- stock_movement.quantity = -1
100
- stock_movement.save
101
- stock_item.reload
102
- end
103
- it 'should decrement the stock item count on hand' do
104
- expect(stock_item.count_on_hand).to eq(9)
105
- end
106
- end
107
-
108
- context "when quantity is positive" do
109
- before do
110
- stock_movement.quantity = 1
111
- stock_movement.save
112
- stock_item.reload
113
- end
114
- it "should increment the stock item count on hand" do
115
- expect(stock_item.count_on_hand).to eq(11)
116
- end
117
- end
118
- end
119
- end
120
- end
@@ -1,50 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spree
4
- describe StockTransfer, type: :model do
5
- let(:destination_location) { create(:stock_location_with_items) }
6
- let(:source_location) { create(:stock_location_with_items) }
7
- let(:stock_item) { source_location.stock_items.order(:id).first }
8
- let(:variant) { stock_item.variant }
9
-
10
- subject { StockTransfer.create(reference: 'PO123') }
11
-
12
- describe '#reference' do
13
- subject { super().reference }
14
- it { is_expected.to eq 'PO123' }
15
- end
16
-
17
- describe '#to_param' do
18
- subject { super().to_param }
19
- it { is_expected.to match /T\d+/ }
20
- end
21
-
22
- it 'transfers variants between 2 locations' do
23
- variants = { variant => 5 }
24
-
25
- subject.transfer(source_location,
26
- destination_location,
27
- variants)
28
-
29
- expect(source_location.count_on_hand(variant)).to eq 5
30
- expect(destination_location.count_on_hand(variant)).to eq 5
31
-
32
- expect(subject.source_location).to eq source_location
33
- expect(subject.destination_location).to eq destination_location
34
-
35
- expect(subject.source_movements.first.quantity).to eq -5
36
- expect(subject.destination_movements.first.quantity).to eq 5
37
- end
38
-
39
- it 'receive new inventory (from a vendor)' do
40
- variants = { variant => 5 }
41
-
42
- subject.receive(destination_location, variants)
43
-
44
- expect(destination_location.count_on_hand(variant)).to eq 5
45
-
46
- expect(subject.source_location).to be_nil
47
- expect(subject.destination_location).to eq destination_location
48
- end
49
- end
50
- end
@@ -1,101 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'StoreCreditEvent' do
4
- describe '#display_amount' do
5
- let(:event_amount) { 120.0 }
6
-
7
- subject { create(:store_credit_auth_event, amount: event_amount) }
8
-
9
- it 'returns a Spree::Money instance' do
10
- expect(subject.display_amount).to be_instance_of(Spree::Money)
11
- end
12
-
13
- it 'uses the events amount attribute' do
14
- expect(subject.display_amount).to eq Spree::Money.new(event_amount, currency: subject.currency)
15
- end
16
- end
17
-
18
- describe '#display_user_total_amount' do
19
- let(:user_total_amount) { 300.0 }
20
-
21
- subject { create(:store_credit_auth_event, user_total_amount: user_total_amount) }
22
-
23
- it 'returns a Spree::Money instance' do
24
- expect(subject.display_user_total_amount).to be_instance_of(Spree::Money)
25
- end
26
-
27
- it 'uses the events user_total_amount attribute' do
28
- amount = Spree::Money.new(user_total_amount, currency: subject.currency)
29
- expect(subject.display_user_total_amount).to eq amount
30
- end
31
- end
32
-
33
- describe '#display_action' do
34
- subject { create(:store_credit_auth_event, action: action) }
35
-
36
- context 'capture event' do
37
- let(:action) { Spree::StoreCredit::CAPTURE_ACTION }
38
-
39
- it 'returns used' do
40
- expect(subject.display_action).to eq Spree.t('store_credit.captured')
41
- end
42
- end
43
-
44
- context 'authorize event' do
45
- let(:action) { Spree::StoreCredit::AUTHORIZE_ACTION }
46
-
47
- it 'returns authorized' do
48
- expect(subject.display_action).to eq Spree.t('store_credit.authorized')
49
- end
50
- end
51
-
52
- context 'allocation event' do
53
- let(:action) { Spree::StoreCredit::ALLOCATION_ACTION }
54
-
55
- it 'returns added' do
56
- expect(subject.display_action).to eq Spree.t('store_credit.allocated')
57
- end
58
- end
59
-
60
- context 'void event' do
61
- let(:action) { Spree::StoreCredit::VOID_ACTION }
62
-
63
- it 'returns credit' do
64
- expect(subject.display_action).to eq Spree.t('store_credit.credit')
65
- end
66
- end
67
-
68
- context 'credit event' do
69
- let(:action) { Spree::StoreCredit::CREDIT_ACTION }
70
-
71
- it 'returns credit' do
72
- expect(subject.display_action).to eq Spree.t('store_credit.credit')
73
- end
74
- end
75
- end
76
-
77
- describe '#order' do
78
- context 'there is no associated payment with the event' do
79
- subject { create(:store_credit_auth_event) }
80
-
81
- it 'returns nil' do
82
- expect(subject.order).to be_nil
83
- end
84
- end
85
-
86
- context 'there is an associated payment with the event' do
87
- let(:authorization_code) { '1-SC-TEST' }
88
- let(:order) { create(:order) }
89
- let!(:payment) { create(:store_credit_payment, order: order, response_code: authorization_code) }
90
-
91
- subject do
92
- create(:store_credit_auth_event, action: Spree::StoreCredit::CAPTURE_ACTION,
93
- authorization_code: authorization_code)
94
- end
95
-
96
- it 'returns the order associated with the payment' do
97
- expect(subject.order).to eq order
98
- end
99
- end
100
- end
101
- end