solidus_core 2.9.6 → 2.11.0

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 (575) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js.erb +31 -2
  3. data/app/controllers/spree/base_controller.rb +1 -0
  4. data/app/helpers/spree/base_helper.rb +4 -4
  5. data/app/helpers/spree/products_helper.rb +2 -1
  6. data/app/jobs/spree/promotion_code_batch_job.rb +2 -2
  7. data/app/mailers/spree/base_mailer.rb +4 -0
  8. data/app/mailers/spree/order_mailer.rb +1 -1
  9. data/app/models/concerns/spree/active_storage_adapter.rb +116 -0
  10. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +69 -0
  11. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
  12. data/app/models/concerns/spree/default_price.rb +1 -1
  13. data/app/models/concerns/spree/soft_deletable.rb +18 -0
  14. data/app/models/concerns/spree/user_address_book.rb +87 -33
  15. data/app/models/concerns/spree/user_methods.rb +5 -4
  16. data/app/models/spree/ability.rb +34 -10
  17. data/app/models/spree/address.rb +103 -30
  18. data/app/models/spree/address/name.rb +49 -0
  19. data/app/models/spree/address/state_validator.rb +71 -0
  20. data/app/models/spree/adjustment.rb +21 -10
  21. data/app/models/spree/asset.rb +1 -1
  22. data/app/models/spree/base.rb +1 -2
  23. data/app/models/spree/calculator.rb +1 -1
  24. data/app/models/spree/calculator/default_tax.rb +1 -1
  25. data/app/models/spree/calculator/percent_per_item.rb +4 -4
  26. data/app/models/spree/calculator/price_sack.rb +1 -1
  27. data/app/models/spree/calculator/shipping/flexi_rate.rb +2 -2
  28. data/app/models/spree/calculator/tiered_flat_rate.rb +5 -5
  29. data/app/models/spree/calculator/tiered_percent.rb +6 -6
  30. data/app/models/spree/carton.rb +3 -3
  31. data/app/models/spree/classification.rb +2 -2
  32. data/app/models/spree/credit_card.rb +6 -6
  33. data/app/models/spree/customer_return.rb +5 -3
  34. data/app/models/spree/exchange.rb +1 -1
  35. data/app/models/spree/image/active_storage_attachment.rb +21 -0
  36. data/app/models/spree/image/paperclip_attachment.rb +1 -1
  37. data/app/models/spree/inventory_unit.rb +5 -23
  38. data/app/models/spree/line_item.rb +16 -7
  39. data/app/models/spree/line_item_action.rb +2 -2
  40. data/app/models/spree/log_entry.rb +1 -1
  41. data/app/models/spree/option_type.rb +1 -1
  42. data/app/models/spree/option_value.rb +3 -3
  43. data/app/models/spree/option_values_variant.rb +2 -2
  44. data/app/models/spree/order.rb +85 -30
  45. data/app/models/spree/order/checkout.rb +2 -1
  46. data/app/models/spree/order/payments.rb +2 -2
  47. data/app/models/spree/order_cancellations.rb +1 -1
  48. data/app/models/spree/order_capturing.rb +2 -2
  49. data/app/models/spree/order_contents.rb +2 -2
  50. data/app/models/spree/order_inventory.rb +16 -4
  51. data/app/models/spree/order_merger.rb +6 -4
  52. data/app/models/spree/order_mutex.rb +1 -1
  53. data/app/models/spree/order_promotion.rb +4 -4
  54. data/app/models/spree/order_shipping.rb +1 -1
  55. data/app/models/spree/order_taxation.rb +3 -3
  56. data/app/models/spree/order_updater.rb +11 -10
  57. data/app/models/spree/payment.rb +10 -47
  58. data/app/models/spree/payment/cancellation.rb +3 -3
  59. data/app/models/spree/payment/processing.rb +57 -33
  60. data/app/models/spree/payment_capture_event.rb +1 -1
  61. data/app/models/spree/payment_method.rb +13 -11
  62. data/app/models/spree/payment_method/bogus_credit_card.rb +1 -1
  63. data/app/models/spree/payment_source.rb +1 -1
  64. data/app/models/spree/preference.rb +1 -1
  65. data/app/models/spree/price.rb +3 -9
  66. data/app/models/spree/product.rb +24 -19
  67. data/app/models/spree/product/scopes.rb +223 -210
  68. data/app/models/spree/product_option_type.rb +2 -2
  69. data/app/models/spree/product_promotion_rule.rb +2 -2
  70. data/app/models/spree/product_property.rb +2 -2
  71. data/app/models/spree/promotion.rb +46 -20
  72. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +1 -1
  73. data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
  74. data/app/models/spree/promotion/rules/option_value.rb +2 -2
  75. data/app/models/spree/promotion/rules/product.rb +3 -3
  76. data/app/models/spree/promotion_action.rb +3 -9
  77. data/app/models/spree/promotion_chooser.rb +2 -2
  78. data/app/models/spree/promotion_code.rb +17 -11
  79. data/app/models/spree/promotion_code/batch_builder.rb +3 -3
  80. data/app/models/spree/promotion_code_batch.rb +2 -2
  81. data/app/models/spree/promotion_handler/coupon.rb +2 -2
  82. data/app/models/spree/promotion_rule.rb +3 -3
  83. data/app/models/spree/promotion_rule_role.rb +3 -3
  84. data/app/models/spree/promotion_rule_store.rb +2 -2
  85. data/app/models/spree/promotion_rule_taxon.rb +2 -2
  86. data/app/models/spree/promotion_rule_user.rb +2 -2
  87. data/app/models/spree/refund.rb +59 -17
  88. data/app/models/spree/reimbursement.rb +32 -13
  89. data/app/models/spree/reimbursement/credit.rb +2 -2
  90. data/app/models/spree/reimbursement/reimbursement_type_engine.rb +1 -1
  91. data/app/models/spree/reimbursement_tax_calculator.rb +1 -1
  92. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +12 -5
  93. data/app/models/spree/return_authorization.rb +5 -11
  94. data/app/models/spree/return_item.rb +33 -61
  95. data/app/models/spree/return_item/eligibility_validator/default.rb +1 -1
  96. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
  97. data/app/models/spree/role.rb +1 -1
  98. data/app/models/spree/role_user.rb +2 -2
  99. data/app/models/spree/shipment.rb +9 -43
  100. data/app/models/spree/shipping_calculator.rb +1 -5
  101. data/app/models/spree/shipping_manifest.rb +5 -5
  102. data/app/models/spree/shipping_method.rb +3 -10
  103. data/app/models/spree/shipping_method_category.rb +2 -2
  104. data/app/models/spree/shipping_method_stock_location.rb +2 -2
  105. data/app/models/spree/shipping_method_zone.rb +2 -2
  106. data/app/models/spree/shipping_rate.rb +2 -2
  107. data/app/models/spree/shipping_rate_tax.rb +3 -3
  108. data/app/models/spree/state.rb +2 -2
  109. data/app/models/spree/state_change.rb +2 -2
  110. data/app/models/spree/stock/differentiator.rb +1 -1
  111. data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
  112. data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
  113. data/app/models/spree/stock/package.rb +2 -2
  114. data/app/models/spree/stock/simple_coordinator.rb +1 -3
  115. data/app/models/spree/stock_item.rb +4 -10
  116. data/app/models/spree/stock_location.rb +2 -2
  117. data/app/models/spree/stock_movement.rb +4 -2
  118. data/app/models/spree/stock_quantities.rb +13 -12
  119. data/app/models/spree/store.rb +1 -1
  120. data/app/models/spree/store_credit.rb +9 -15
  121. data/app/models/spree/store_credit_category.rb +30 -3
  122. data/app/models/spree/store_credit_event.rb +4 -10
  123. data/app/models/spree/store_credit_reason.rb +0 -4
  124. data/app/models/spree/store_payment_method.rb +2 -2
  125. data/app/models/spree/store_shipping_method.rb +2 -2
  126. data/app/models/spree/tax/tax_helpers.rb +1 -1
  127. data/app/models/spree/tax_calculator/default.rb +0 -4
  128. data/app/models/spree/tax_calculator/shipping_rate.rb +0 -3
  129. data/app/models/spree/tax_category.rb +2 -8
  130. data/app/models/spree/tax_rate.rb +12 -8
  131. data/app/models/spree/tax_rate_tax_category.rb +2 -2
  132. data/app/models/spree/taxon.rb +1 -1
  133. data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
  134. data/app/models/spree/taxon/paperclip_attachment.rb +13 -0
  135. data/app/models/spree/unit_cancel.rb +5 -2
  136. data/app/models/spree/user_address.rb +10 -4
  137. data/app/models/spree/user_last_url_storer.rb +46 -0
  138. data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +36 -0
  139. data/app/models/spree/user_stock_location.rb +2 -2
  140. data/app/models/spree/variant.rb +17 -23
  141. data/app/models/spree/variant/scopes.rb +37 -29
  142. data/app/models/spree/variant_property_rule.rb +6 -2
  143. data/app/models/spree/variant_property_rule_condition.rb +2 -2
  144. data/app/models/spree/variant_property_rule_value.rb +2 -2
  145. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +9 -4
  146. data/app/models/spree/wallet_payment_source.rb +2 -2
  147. data/app/models/spree/zone.rb +2 -2
  148. data/app/models/spree/zone_member.rb +2 -2
  149. data/config/initializers/inflections.rb +5 -0
  150. data/config/initializers/money.rb +2 -0
  151. data/config/locales/en.yml +78 -8
  152. data/db/default/spree/countries.rb +1 -1
  153. data/db/default/spree/states.rb +12 -4
  154. data/db/default/spree/store_credit.rb +2 -2
  155. data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
  156. data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
  157. data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
  158. data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
  159. data/lib/generators/solidus/install/install_generator.rb +253 -0
  160. data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +42 -3
  161. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
  162. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
  163. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
  164. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
  165. data/lib/generators/spree/dummy/dummy_generator.rb +2 -0
  166. data/lib/generators/spree/install/install_generator.rb +7 -189
  167. data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
  168. data/lib/spree/app_configuration.rb +135 -54
  169. data/lib/spree/awesome_nested_set_override.rb +44 -0
  170. data/lib/spree/core.rb +6 -0
  171. data/lib/spree/core/controller_helpers/auth.rb +18 -17
  172. data/lib/spree/core/controller_helpers/current_host.rb +17 -0
  173. data/lib/spree/core/controller_helpers/order.rb +8 -7
  174. data/lib/spree/core/engine.rb +41 -4
  175. data/lib/spree/core/importer/order.rb +47 -33
  176. data/lib/spree/core/importer/product.rb +2 -2
  177. data/lib/spree/core/permalinks.rb +1 -3
  178. data/lib/spree/core/product_filters.rb +16 -15
  179. data/lib/spree/core/role_configuration.rb +2 -2
  180. data/lib/spree/core/search/variant.rb +1 -1
  181. data/lib/spree/core/state_machines.rb +97 -0
  182. data/lib/spree/core/state_machines/inventory_unit.rb +42 -0
  183. data/lib/spree/core/state_machines/order.rb +249 -0
  184. data/lib/spree/core/state_machines/payment.rb +61 -0
  185. data/lib/spree/core/state_machines/reimbursement.rb +33 -0
  186. data/lib/spree/core/state_machines/return_authorization.rb +32 -0
  187. data/lib/spree/core/state_machines/return_item/acceptance_status.rb +51 -0
  188. data/lib/spree/core/state_machines/return_item/reception_status.rb +42 -0
  189. data/lib/spree/core/state_machines/shipment.rb +58 -0
  190. data/lib/spree/core/stock_configuration.rb +1 -0
  191. data/lib/spree/core/validators/email.rb +1 -8
  192. data/lib/spree/core/version.rb +1 -1
  193. data/lib/spree/encryptor.rb +25 -0
  194. data/lib/spree/event.rb +40 -7
  195. data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
  196. data/lib/spree/event/configuration.rb +11 -6
  197. data/lib/spree/event/subscriber.rb +38 -18
  198. data/lib/spree/event/subscriber_registry.rb +92 -0
  199. data/lib/spree/i18n.rb +1 -1
  200. data/lib/spree/mailer_previews/carton_preview.rb +2 -1
  201. data/lib/spree/money.rb +2 -2
  202. data/lib/spree/paranoia_deprecations.rb +32 -12
  203. data/lib/spree/permission_sets/configuration_display.rb +14 -14
  204. data/lib/spree/permission_sets/default_customer.rb +16 -16
  205. data/lib/spree/permission_sets/order_display.rb +11 -11
  206. data/lib/spree/permission_sets/order_management.rb +1 -1
  207. data/lib/spree/permission_sets/product_display.rb +9 -9
  208. data/lib/spree/permission_sets/promotion_display.rb +5 -5
  209. data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
  210. data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
  211. data/lib/spree/permission_sets/stock_display.rb +2 -2
  212. data/lib/spree/permission_sets/stock_management.rb +1 -1
  213. data/lib/spree/permission_sets/user_display.rb +3 -3
  214. data/lib/spree/permission_sets/user_management.rb +7 -3
  215. data/lib/spree/permitted_attributes.rb +7 -6
  216. data/lib/spree/preferences/preferable.rb +4 -3
  217. data/lib/spree/preferences/preferable_class_methods.rb +22 -3
  218. data/lib/spree/preferences/static_model_preferences.rb +2 -2
  219. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  220. data/lib/spree/testing_support/authorization_helpers.rb +1 -0
  221. data/lib/spree/testing_support/blacklist_urls.rb +23 -0
  222. data/lib/spree/testing_support/capybara_ext.rb +3 -0
  223. data/lib/spree/testing_support/common_rake.rb +3 -3
  224. data/lib/spree/testing_support/dummy_app.rb +45 -21
  225. data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
  226. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +6 -4
  227. data/lib/spree/testing_support/factories/address_factory.rb +1 -2
  228. data/lib/spree/testing_support/factories/image_factory.rb +1 -1
  229. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +8 -1
  230. data/lib/spree/testing_support/factories/promotion_factory.rb +13 -0
  231. data/lib/spree/testing_support/factories/refund_factory.rb +1 -0
  232. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  233. data/lib/spree/testing_support/factories/return_item_factory.rb +0 -1
  234. data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -1
  235. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +8 -0
  236. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +1 -0
  237. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +3 -1
  238. data/lib/spree/testing_support/factories/taxon_factory.rb +4 -0
  239. data/lib/spree/testing_support/factories/user_factory.rb +4 -1
  240. data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
  241. data/lib/spree/testing_support/job_helpers.rb +24 -0
  242. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  243. data/lib/spree/testing_support/preferences.rb +3 -1
  244. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  245. data/lib/spree/testing_support/translations.rb +25 -0
  246. data/solidus_core.gemspec +12 -9
  247. metadata +120 -393
  248. data/script/rails +0 -10
  249. data/spec/fixtures/thinking-cat.jpg +0 -0
  250. data/spec/helpers/base_helper_spec.rb +0 -168
  251. data/spec/helpers/products_helper_spec.rb +0 -202
  252. data/spec/helpers/taxons_helper_spec.rb +0 -43
  253. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  254. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  255. data/spec/lib/i18n_spec.rb +0 -97
  256. data/spec/lib/search/base_spec.rb +0 -87
  257. data/spec/lib/search/variant_spec.rb +0 -115
  258. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  259. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  260. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  261. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  262. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  263. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  264. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  265. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  266. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -48
  267. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  268. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  269. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  270. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  271. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -59
  272. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  273. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  274. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  275. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  276. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  277. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  278. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  279. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  280. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  281. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  282. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  283. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  284. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  285. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  286. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  287. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  288. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  289. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  290. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  291. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  292. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  293. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  294. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  295. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  296. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  297. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  298. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  299. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  300. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  301. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  302. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  303. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  304. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  305. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  306. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  307. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  308. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  309. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  310. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  311. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  312. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  313. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  314. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  315. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  316. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  317. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  318. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  319. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  320. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  321. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  322. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  323. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  324. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  325. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  326. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  327. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  328. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  329. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  330. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  331. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  332. data/spec/lib/spree/core/version_spec.rb +0 -19
  333. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  334. data/spec/lib/spree/event_spec.rb +0 -118
  335. data/spec/lib/spree/localized_number_spec.rb +0 -45
  336. data/spec/lib/spree/migrations_spec.rb +0 -32
  337. data/spec/lib/spree/money_spec.rb +0 -298
  338. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  339. data/spec/lib/spree/permitted_attributes_spec.rb +0 -41
  340. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  341. data/spec/lib/tasks/dummy_task.rake +0 -12
  342. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  343. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  344. data/spec/mailers/carton_mailer_spec.rb +0 -44
  345. data/spec/mailers/order_mailer_spec.rb +0 -117
  346. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  347. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  348. data/spec/mailers/test_mailer_spec.rb +0 -13
  349. data/spec/migrate/20190106184413_remove_code_from_spree_promotions_spec.rb +0 -148
  350. data/spec/models/spree/ability_spec.rb +0 -279
  351. data/spec/models/spree/address_spec.rb +0 -376
  352. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  353. data/spec/models/spree/adjustment_spec.rb +0 -339
  354. data/spec/models/spree/asset_spec.rb +0 -25
  355. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  356. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  357. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  358. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  359. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  360. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  361. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  362. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  363. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  364. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  365. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  366. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  367. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  368. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  369. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -35
  370. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  371. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  372. data/spec/models/spree/calculator_spec.rb +0 -43
  373. data/spec/models/spree/carton_spec.rb +0 -137
  374. data/spec/models/spree/classification_spec.rb +0 -114
  375. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  376. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  377. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  378. data/spec/models/spree/concerns/user_methods_spec.rb +0 -121
  379. data/spec/models/spree/country_spec.rb +0 -154
  380. data/spec/models/spree/credit_card_spec.rb +0 -373
  381. data/spec/models/spree/customer_return_spec.rb +0 -294
  382. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  383. data/spec/models/spree/exchange_spec.rb +0 -76
  384. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  385. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  386. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  387. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  388. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  389. data/spec/models/spree/gateway_spec.rb +0 -14
  390. data/spec/models/spree/image_spec.rb +0 -25
  391. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  392. data/spec/models/spree/line_item_spec.rb +0 -240
  393. data/spec/models/spree/option_type_spec.rb +0 -16
  394. data/spec/models/spree/option_value_spec.rb +0 -52
  395. data/spec/models/spree/order/address_spec.rb +0 -52
  396. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  397. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  398. data/spec/models/spree/order/checkout_spec.rb +0 -740
  399. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  400. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  401. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  402. data/spec/models/spree/order/payment_spec.rb +0 -280
  403. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  404. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  405. data/spec/models/spree/order/totals_spec.rb +0 -26
  406. data/spec/models/spree/order/updating_spec.rb +0 -18
  407. data/spec/models/spree/order/validations_spec.rb +0 -17
  408. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  409. data/spec/models/spree/order_capturing_spec.rb +0 -16
  410. data/spec/models/spree/order_contents_spec.rb +0 -362
  411. data/spec/models/spree/order_inventory_spec.rb +0 -285
  412. data/spec/models/spree/order_merger_spec.rb +0 -162
  413. data/spec/models/spree/order_mutex_spec.rb +0 -89
  414. data/spec/models/spree/order_promotion_spec.rb +0 -33
  415. data/spec/models/spree/order_shipping_spec.rb +0 -247
  416. data/spec/models/spree/order_spec.rb +0 -1694
  417. data/spec/models/spree/order_taxation_spec.rb +0 -128
  418. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  419. data/spec/models/spree/order_updater_spec.rb +0 -555
  420. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  421. data/spec/models/spree/payment_create_spec.rb +0 -205
  422. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  423. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  424. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  425. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  426. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  427. data/spec/models/spree/payment_method_spec.rb +0 -408
  428. data/spec/models/spree/payment_spec.rb +0 -1270
  429. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  430. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  431. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  432. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  433. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  434. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  435. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  436. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  437. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  438. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  439. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  440. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  441. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  442. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  443. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  444. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -56
  445. data/spec/models/spree/preference_spec.rb +0 -79
  446. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  447. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  448. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  449. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  450. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  451. data/spec/models/spree/preferences/store_spec.rb +0 -40
  452. data/spec/models/spree/price_spec.rb +0 -150
  453. data/spec/models/spree/product/scopes_spec.rb +0 -164
  454. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  455. data/spec/models/spree/product_filter_spec.rb +0 -28
  456. data/spec/models/spree/product_property_spec.rb +0 -20
  457. data/spec/models/spree/product_spec.rb +0 -584
  458. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  459. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  460. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  461. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  462. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  463. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  464. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  465. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  466. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  467. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  468. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  469. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  470. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -227
  471. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  472. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  473. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  474. data/spec/models/spree/promotion_action_spec.rb +0 -44
  475. data/spec/models/spree/promotion_category_spec.rb +0 -19
  476. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  477. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  478. data/spec/models/spree/promotion_code_spec.rb +0 -206
  479. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  480. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  481. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  482. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  483. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  484. data/spec/models/spree/promotion_spec.rb +0 -928
  485. data/spec/models/spree/refund_spec.rb +0 -200
  486. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  487. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  488. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  489. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  490. data/spec/models/spree/reimbursement_spec.rb +0 -278
  491. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  492. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  493. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  494. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  495. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  496. data/spec/models/spree/return_authorization_spec.rb +0 -226
  497. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  498. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  499. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  500. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  501. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  502. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  503. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  504. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  505. data/spec/models/spree/return_item_spec.rb +0 -785
  506. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  507. data/spec/models/spree/shipment_spec.rb +0 -914
  508. data/spec/models/spree/shipping_calculator_spec.rb +0 -57
  509. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  510. data/spec/models/spree/shipping_method_spec.rb +0 -260
  511. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  512. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  513. data/spec/models/spree/state_spec.rb +0 -43
  514. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  515. data/spec/models/spree/stock/availability_spec.rb +0 -143
  516. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  517. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  518. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  519. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  520. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  521. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  522. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  523. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  524. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  525. data/spec/models/spree/stock/package_spec.rb +0 -182
  526. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  527. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  528. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  529. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  530. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  531. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  532. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  533. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  534. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  535. data/spec/models/spree/stock_item_spec.rb +0 -348
  536. data/spec/models/spree/stock_location_spec.rb +0 -288
  537. data/spec/models/spree/stock_movement_spec.rb +0 -58
  538. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  539. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  540. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  541. data/spec/models/spree/store_credit_spec.rb +0 -900
  542. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  543. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  544. data/spec/models/spree/store_spec.rb +0 -156
  545. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  546. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  547. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  548. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  549. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  550. data/spec/models/spree/tax_category_spec.rb +0 -50
  551. data/spec/models/spree/tax_rate_spec.rb +0 -316
  552. data/spec/models/spree/taxon_spec.rb +0 -197
  553. data/spec/models/spree/taxonomy_spec.rb +0 -15
  554. data/spec/models/spree/unit_cancel_spec.rb +0 -121
  555. data/spec/models/spree/user_spec.rb +0 -247
  556. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  557. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  558. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  559. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  560. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  561. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  562. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  563. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  564. data/spec/models/spree/variant_spec.rb +0 -862
  565. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  566. data/spec/models/spree/wallet_spec.rb +0 -155
  567. data/spec/models/spree/zone_spec.rb +0 -248
  568. data/spec/rails_helper.rb +0 -46
  569. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  570. data/spec/spec_helper.rb +0 -36
  571. data/spec/support/big_decimal.rb +0 -7
  572. data/spec/support/concerns/default_price.rb +0 -44
  573. data/spec/support/concerns/payment_source.rb +0 -66
  574. data/spec/support/concerns/working_factories.rb +0 -15
  575. data/spec/support/dummy_ability.rb +0 -7
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::OrderCapturing do
6
- describe '#capture_payments' do
7
- subject { Spree::OrderCapturing.new(order).capture_payments }
8
-
9
- let(:order) { build(:completed_order_with_totals) }
10
-
11
- it 'is deprecated' do
12
- expect(Spree::Deprecation).to(receive(:warn))
13
- subject
14
- end
15
- end
16
- end
@@ -1,362 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::OrderContents, type: :model do
6
- let!(:store) { create :store }
7
- let(:order) { create(:order) }
8
- let(:variant) { create(:variant) }
9
- let!(:stock_location) { variant.stock_locations.first }
10
- let(:stock_location_2) { create(:stock_location) }
11
-
12
- subject(:order_contents) { described_class.new(order) }
13
-
14
- context "#add" do
15
- context 'given quantity is not explicitly provided' do
16
- it 'should add one line item' do
17
- line_item = subject.add(variant)
18
- expect(line_item.quantity).to eq(1)
19
- expect(order.line_items.size).to eq(1)
20
- end
21
- end
22
-
23
- context 'given a shipment' do
24
- let!(:shipment) { create(:shipment, order: order) }
25
-
26
- it "ensure shipment calls update_amounts instead of order calling ensure_updated_shipments" do
27
- expect(subject.order).to_not receive(:ensure_updated_shipments)
28
- expect(shipment).to receive(:update_amounts)
29
- subject.add(variant, 1, shipment: shipment)
30
- end
31
-
32
- context "with quantity=1" do
33
- it "creates correct inventory" do
34
- subject.add(variant, 1, shipment: shipment)
35
- expect(order.inventory_units.count).to eq(1)
36
- end
37
- end
38
-
39
- context "with quantity=2" do
40
- it "creates correct inventory" do
41
- subject.add(variant, 2, shipment: shipment)
42
- expect(order.inventory_units.count).to eq(2)
43
- end
44
- end
45
-
46
- context "called multiple times" do
47
- it "creates correct inventory" do
48
- subject.add(variant, 1, shipment: shipment)
49
- subject.add(variant, 1, shipment: shipment)
50
- expect(order.inventory_units.count).to eq(2)
51
- end
52
- end
53
- end
54
-
55
- context 'not given a shipment' do
56
- it "ensures updated shipments" do
57
- expect(subject.order).to receive(:ensure_updated_shipments)
58
- subject.add(variant)
59
- end
60
- end
61
-
62
- it 'should add line item if one does not exist' do
63
- line_item = subject.add(variant, 1)
64
- expect(line_item.quantity).to eq(1)
65
- expect(order.line_items.size).to eq(1)
66
- end
67
-
68
- it 'should update line item if one exists' do
69
- subject.add(variant, 1)
70
- line_item = subject.add(variant, 1)
71
- expect(line_item.quantity).to eq(2)
72
- expect(order.line_items.size).to eq(1)
73
- end
74
-
75
- it "should update order totals" do
76
- expect(order.item_total.to_f).to eq(0.00)
77
- expect(order.total.to_f).to eq(0.00)
78
-
79
- subject.add(variant, 1)
80
-
81
- expect(order.item_total.to_f).to eq(19.99)
82
- expect(order.total.to_f).to eq(19.99)
83
- end
84
-
85
- context "running promotions" do
86
- let(:promotion) { create(:promotion, apply_automatically: true) }
87
- let(:calculator) { Spree::Calculator::FlatRate.new(preferred_amount: 10) }
88
-
89
- shared_context "discount changes order total" do
90
- before { subject.add(variant, 1) }
91
- it { expect(subject.order.total).not_to eq variant.price }
92
- end
93
-
94
- context "one active order promotion" do
95
- let!(:action) { Spree::Promotion::Actions::CreateAdjustment.create(promotion: promotion, calculator: calculator) }
96
-
97
- it "creates valid discount on order" do
98
- subject.add(variant, 1)
99
- expect(subject.order.adjustments.to_a.sum(&:amount)).not_to eq 0
100
- end
101
-
102
- include_context "discount changes order total"
103
- end
104
-
105
- context "one active line item promotion" do
106
- let!(:action) { Spree::Promotion::Actions::CreateItemAdjustments.create(promotion: promotion, calculator: calculator) }
107
-
108
- it "creates valid discount on order" do
109
- subject.add(variant, 1)
110
- expect(subject.order.line_item_adjustments.to_a.sum(&:amount)).not_to eq 0
111
- end
112
-
113
- include_context "discount changes order total"
114
- end
115
- end
116
-
117
- describe 'tax calculations' do
118
- let!(:zone) { create(:global_zone) }
119
- let!(:tax_rate) do
120
- create(:tax_rate, zone: zone, tax_categories: [variant.tax_category])
121
- end
122
-
123
- context 'when the order has a taxable address' do
124
- before do
125
- expect(order.tax_address.country_id).to be_present
126
- end
127
-
128
- it 'creates a tax adjustment' do
129
- order_contents.add(variant)
130
- line_item = order.find_line_item_by_variant(variant)
131
- expect(line_item.adjustments.tax.count).to eq(1)
132
- end
133
- end
134
-
135
- context 'when the order does not have a taxable address' do
136
- before do
137
- order.update_attributes!(ship_address: nil, bill_address: nil)
138
- expect(order.tax_address.country_id).to be_nil
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(0)
145
- end
146
- end
147
- end
148
- end
149
-
150
- context "#remove" do
151
- context "given an invalid variant" do
152
- it "raises an exception" do
153
- expect {
154
- subject.remove(variant, 1)
155
- }.to raise_error(ActiveRecord::RecordNotFound)
156
- end
157
- end
158
-
159
- context 'given quantity is not explicitly provided' do
160
- it 'should remove one line item' do
161
- line_item = subject.add(variant, 3)
162
- subject.remove(variant)
163
-
164
- expect(line_item.reload.quantity).to eq(2)
165
- end
166
- end
167
-
168
- context 'given a shipment' do
169
- it "ensure shipment calls update_amounts instead of order calling ensure_updated_shipments" do
170
- subject.add(variant, 1)
171
- shipment = create(:shipment)
172
- expect(subject.order).to_not receive(:ensure_updated_shipments)
173
- expect(shipment).to receive(:update_amounts)
174
- subject.remove(variant, 1, shipment: shipment)
175
- end
176
- end
177
-
178
- context 'not given a shipment' do
179
- it "ensures updated shipments" do
180
- subject.add(variant, 1)
181
- expect(subject.order).to receive(:ensure_updated_shipments)
182
- subject.remove(variant)
183
- end
184
- end
185
-
186
- it 'should reduce line_item quantity if quantity is less the line_item quantity' do
187
- line_item = subject.add(variant, 3)
188
- subject.remove(variant, 1)
189
-
190
- expect(line_item.reload.quantity).to eq(2)
191
- end
192
-
193
- it 'should remove line_item if quantity matches line_item quantity' do
194
- subject.add(variant, 1)
195
- subject.remove(variant, 1)
196
-
197
- expect(order.reload.find_line_item_by_variant(variant)).to be_nil
198
- end
199
-
200
- it 'should remove line_item if quantity is greater than line_item quantity' do
201
- subject.add(variant, 1)
202
- subject.remove(variant, 2)
203
-
204
- expect(order.reload.find_line_item_by_variant(variant)).to be_nil
205
- end
206
-
207
- it "should update order totals" do
208
- expect(order.item_total.to_f).to eq(0.00)
209
- expect(order.total.to_f).to eq(0.00)
210
-
211
- subject.add(variant, 2)
212
-
213
- expect(order.item_total.to_f).to eq(39.98)
214
- expect(order.total.to_f).to eq(39.98)
215
-
216
- subject.remove(variant, 1)
217
- expect(order.item_total.to_f).to eq(19.99)
218
- expect(order.total.to_f).to eq(19.99)
219
- end
220
- end
221
-
222
- context "#remove_line_item" do
223
- context 'given a shipment' do
224
- it "ensure shipment calls update_amounts instead of order calling ensure_updated_shipments" do
225
- line_item = subject.add(variant, 1)
226
- shipment = create(:shipment)
227
- expect(subject.order).to_not receive(:ensure_updated_shipments)
228
- expect(shipment).to receive(:update_amounts)
229
- subject.remove_line_item(line_item, shipment: shipment)
230
- end
231
- end
232
-
233
- context 'not given a shipment' do
234
- it "ensures updated shipments" do
235
- line_item = subject.add(variant, 1)
236
- expect(subject.order).to receive(:ensure_updated_shipments)
237
- subject.remove_line_item(line_item)
238
- end
239
- end
240
-
241
- it 'should remove line_item' do
242
- line_item = subject.add(variant, 1)
243
- subject.remove_line_item(line_item)
244
-
245
- expect(order.reload.line_items).to_not include(line_item)
246
- end
247
-
248
- it "should update order totals" do
249
- expect(order.item_total.to_f).to eq(0.00)
250
- expect(order.total.to_f).to eq(0.00)
251
-
252
- line_item = subject.add(variant, 2)
253
-
254
- expect(order.item_total.to_f).to eq(39.98)
255
- expect(order.total.to_f).to eq(39.98)
256
-
257
- subject.remove_line_item(line_item)
258
- expect(order.item_total.to_f).to eq(0.00)
259
- expect(order.total.to_f).to eq(0.00)
260
- end
261
- end
262
-
263
- context "update cart" do
264
- let!(:shirt) { subject.add variant, 1 }
265
-
266
- let(:params) do
267
- { line_items_attributes: {
268
- "0" => { id: shirt.id, quantity: 3 }
269
- } }
270
- end
271
-
272
- it "changes item quantity" do
273
- subject.update_cart params
274
- expect(shirt.reload.quantity).to eq 3
275
- end
276
-
277
- it "updates order totals" do
278
- expect {
279
- subject.update_cart params
280
- }.to change { subject.order.total }
281
- end
282
-
283
- context "submits item quantity 0" do
284
- let(:params) do
285
- { line_items_attributes: {
286
- "0" => { id: shirt.id, quantity: 0 }
287
- } }
288
- end
289
-
290
- it "removes item from order" do
291
- expect {
292
- subject.update_cart params
293
- }.to change { subject.order.line_items.count }
294
- end
295
- end
296
-
297
- it "ensures updated shipments" do
298
- expect(subject.order).to receive(:ensure_updated_shipments)
299
- subject.update_cart params
300
- end
301
- end
302
-
303
- context "completed order" do
304
- let(:order) { Spree::Order.create! state: 'complete', completed_at: Time.current }
305
-
306
- before { order.shipments.create! stock_location_id: variant.stock_location_ids.first }
307
-
308
- it "updates order payment state" do
309
- expect {
310
- subject.add variant
311
- }.to change { order.payment_state }
312
-
313
- expect {
314
- subject.remove variant
315
- }.to change { order.payment_state }
316
- end
317
- end
318
-
319
- describe "#approve" do
320
- context 'when a name is supplied' do
321
- it 'approves the order' do
322
- order.contents.approve(name: 'Jordan')
323
- expect(order.approver).to be_nil
324
- expect(order.approver_name).to eq('Jordan')
325
- expect(order.approved_at).to be_present
326
- expect(order.approved?).to be_truthy
327
- end
328
- end
329
-
330
- context 'when a user is supplied' do
331
- let(:user) { create(:user) }
332
-
333
- it 'approves the order' do
334
- order.contents.approve(user: user)
335
- expect(order.approver).to eq(user)
336
- expect(order.approver_name).to be_nil
337
- expect(order.approved_at).to be_present
338
- expect(order.approved?).to be_truthy
339
- end
340
- end
341
-
342
- context 'when a user and a name are supplied' do
343
- let(:user) { create(:user) }
344
-
345
- it 'approves the order' do
346
- order.contents.approve(user: user, name: 'Jordan')
347
- expect(order.approver).to eq(user)
348
- expect(order.approver_name).to eq('Jordan')
349
- expect(order.approved_at).to be_present
350
- expect(order.approved?).to be_truthy
351
- end
352
- end
353
-
354
- context 'when neither a user nor a name are supplied' do
355
- it 'raises' do
356
- expect {
357
- order.contents.approve
358
- }.to raise_error(ArgumentError, 'user or name must be specified')
359
- end
360
- end
361
- end
362
- end
@@ -1,285 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::OrderInventory, type: :model do
6
- let(:order) { create :completed_order_with_totals }
7
- let(:line_item) { order.line_items.first }
8
- let(:shipment) { order.shipments.first }
9
- let(:variant) { subject.variant }
10
- let(:stock_item) { shipment.stock_location.stock_item(variant) }
11
-
12
- subject { described_class.new(order, line_item) }
13
-
14
- context "insufficient inventory units" do
15
- let(:old_quantity) { 1 }
16
- let(:new_quantity) { 3 }
17
-
18
- before do
19
- line_item.update_attributes!(quantity: old_quantity)
20
-
21
- line_item.update_column(:quantity, new_quantity)
22
- subject.line_item.reload
23
- end
24
-
25
- it 'creates the proper number of inventory units' do
26
- expect(line_item.inventory_units.count).to eq(old_quantity)
27
- subject.verify(shipment)
28
- expect(line_item.inventory_units.count).to eq(new_quantity)
29
- end
30
-
31
- it "unstocks items" do
32
- expect {
33
- subject.verify(shipment)
34
- }.to change { stock_item.reload.count_on_hand }.by(-2)
35
- end
36
-
37
- context "order is not completed" do
38
- let(:inventory_unit_finalizer) { double(:inventory_unit_finalizer, run!: [true]) }
39
-
40
- before do
41
- allow(Spree::Stock::InventoryUnitsFinalizer)
42
- .to receive(:new).and_return(inventory_unit_finalizer)
43
-
44
- order.update_columns completed_at: nil
45
- end
46
-
47
- it "doesn't finalize the items" do
48
- expect(inventory_unit_finalizer).to_not receive(:run!)
49
-
50
- subject.verify(shipment)
51
- end
52
- end
53
-
54
- context "inventory units state" do
55
- before { shipment.inventory_units.destroy_all }
56
- let(:new_quantity) { 5 }
57
-
58
- it 'sets inventory_units state as per stock location availability' do
59
- stock_item.update_columns(
60
- backorderable: true,
61
- count_on_hand: 3
62
- )
63
-
64
- subject.verify
65
-
66
- units = shipment.inventory_units_for(subject.variant).group_by(&:state)
67
- expect(units['backordered'].size).to eq(2)
68
- expect(units['on_hand'].size).to eq(3)
69
- end
70
- end
71
-
72
- context "store doesnt track inventory" do
73
- let(:new_quantity) { 1 }
74
-
75
- before { stub_spree_preferences(track_inventory_levels: false) }
76
-
77
- it "creates on hand inventory units" do
78
- variant.stock_items.each(&:really_destroy!)
79
-
80
- subject.verify(shipment)
81
-
82
- units = shipment.inventory_units_for(variant)
83
- expect(units.count).to eq 1
84
- expect(units.first).to be_on_hand
85
- end
86
- end
87
-
88
- context "variant doesnt track inventory" do
89
- before { variant.update_attributes!(track_inventory: false) }
90
- let(:new_quantity) { 1 }
91
-
92
- it "creates on hand inventory units" do
93
- variant.stock_items.each(&:really_destroy!)
94
-
95
- subject.verify(shipment)
96
-
97
- units = shipment.inventory_units_for(variant)
98
- expect(units.count).to eq 1
99
- expect(units.first).to be_on_hand
100
- end
101
- end
102
-
103
- it 'should create stock_movement' do
104
- expect(subject.send(:add_to_shipment, shipment, 5)).to eq(5)
105
-
106
- stock_item = shipment.stock_location.stock_item(subject.variant)
107
- movement = stock_item.stock_movements.last
108
- expect(movement.originator).to eq(shipment)
109
- expect(movement.quantity).to eq(-5)
110
- end
111
-
112
- context "calling multiple times" do
113
- it "creates the correct number of inventory units" do
114
- line_item.update_columns(quantity: 2)
115
- subject.verify(shipment)
116
- expect(line_item.inventory_units.count).to eq(2)
117
-
118
- line_item.update_columns(quantity: 3)
119
- subject.verify(shipment)
120
- expect(line_item.inventory_units.count).to eq(3)
121
- end
122
- end
123
- end
124
-
125
- context "#determine_target_shipment" do
126
- let(:stock_location) { create :stock_location }
127
- let(:variant) { line_item.variant }
128
-
129
- before do
130
- subject.verify
131
-
132
- order.shipments.create(stock_location_id: stock_location.id, cost: 5)
133
-
134
- shipped = order.shipments.create(stock_location_id: order.shipments.first.stock_location.id, cost: 10)
135
- shipped.update_column(:state, 'shipped')
136
- end
137
-
138
- it 'should select first non-shipped shipment that already contains given variant' do
139
- shipment = subject.send(:determine_target_shipment)
140
- expect(shipment.shipped?).to be false
141
- expect(shipment.inventory_units_for(variant)).not_to be_empty
142
-
143
- expect(variant.stock_location_ids.include?(shipment.stock_location_id)).to be true
144
- end
145
-
146
- context "when no shipments already contain this varint" do
147
- before do
148
- subject.line_item.reload
149
- subject.inventory_units.destroy_all
150
- end
151
-
152
- it 'selects first non-shipped shipment that leaves from same stock_location' do
153
- shipment = subject.send(:determine_target_shipment)
154
- shipment.reload
155
- expect(shipment.shipped?).to be false
156
- expect(shipment.inventory_units_for(variant)).to be_empty
157
- expect(variant.stock_location_ids.include?(shipment.stock_location_id)).to be true
158
- end
159
- end
160
- end
161
-
162
- context 'when order has too many inventory units' do
163
- let(:old_quantity) { 3 }
164
- let(:new_quantity) { 2 }
165
-
166
- before do
167
- line_item.update_attributes!(quantity: old_quantity)
168
-
169
- line_item.update_column(:quantity, new_quantity)
170
- subject.line_item.reload
171
- end
172
-
173
- it 'should be a messed up order' do
174
- expect(order.shipments.first.inventory_units_for(line_item.variant).size).to eq(3)
175
- expect(line_item.quantity).to eq(2)
176
- end
177
-
178
- it 'should decrease the number of inventory units' do
179
- subject.verify
180
- expect(line_item.inventory_units.count).to eq 2
181
- expect(order.inventory_units.count).to eq 2
182
- end
183
-
184
- context "order is not completed" do
185
- before { order.update_columns(completed_at: nil) }
186
-
187
- it "doesn't restock items" do
188
- expect(shipment.stock_location).not_to receive(:restock)
189
-
190
- expect {
191
- subject.verify(shipment)
192
- }.not_to change { stock_item.reload.count_on_hand }
193
-
194
- expect(line_item.inventory_units.count).to eq(new_quantity)
195
- end
196
- end
197
-
198
- it 'should change count_on_hand' do
199
- expect {
200
- subject.verify(shipment)
201
- }.to change { stock_item.reload.count_on_hand }.by(1)
202
- end
203
-
204
- it 'should create stock_movement' do
205
- stock_item = shipment.stock_location.stock_item(variant)
206
-
207
- expect {
208
- subject.verify(shipment)
209
- }.to change { stock_item.stock_movements.count }.by(1)
210
-
211
- movement = stock_item.stock_movements.last
212
- expect(movement.originator).to eq shipment
213
- expect(movement.quantity).to eq(1)
214
- end
215
-
216
- context 'with some backordered' do
217
- let(:new_quantity) { 1 }
218
-
219
- before do
220
- line_item.inventory_units[0].update_columns(state: 'backordered')
221
- line_item.inventory_units[1].update_columns(state: 'on_hand')
222
- line_item.inventory_units[2].update_columns(state: 'backordered')
223
- end
224
-
225
- it 'should destroy backordered units first' do
226
- on_hand_unit = line_item.inventory_units.find_by state: 'on_hand'
227
-
228
- subject.verify(shipment)
229
-
230
- expect(line_item.inventory_units.reload).to eq([on_hand_unit])
231
- end
232
- end
233
-
234
- context 'with some shipped items' do
235
- let(:old_quantity) { 2 }
236
- let(:new_quantity) { 1 }
237
-
238
- let(:shipped_unit) { line_item.inventory_units[0] }
239
- before do
240
- shipped_unit.update_columns(state: 'shipped')
241
- end
242
-
243
- it 'should destroy unshipped units first' do
244
- subject.verify(shipment)
245
-
246
- expect(line_item.inventory_units.reload).to eq([shipped_unit])
247
- end
248
-
249
- context 'trying to remove shipped units' do
250
- let(:new_quantity) { 0 }
251
-
252
- it 'only attempts to destroy as many units as are eligible, and return amount destroyed' do
253
- subject.verify(shipment)
254
-
255
- expect(line_item.inventory_units.reload).to eq([shipped_unit])
256
- end
257
- end
258
- end
259
-
260
- context 'destroying all units' do
261
- let(:new_quantity) { 0 }
262
-
263
- it 'should destroy shipment' do
264
- expect {
265
- subject.verify(shipment)
266
- }.to change{ order.shipments.count }.from(1).to(0)
267
- end
268
- end
269
-
270
- context "inventory unit line item and variant points to different products" do
271
- let(:new_quantity) { 0 }
272
- let(:different_line_item) { create(:line_item, order: order) }
273
-
274
- let!(:different_inventory) do
275
- shipment.set_up_inventory("on_hand", variant, order, different_line_item)
276
- end
277
-
278
- it "removes only units that match both line item and variant" do
279
- subject.verify(shipment)
280
-
281
- expect(different_inventory.reload).to be_persisted
282
- end
283
- end
284
- end
285
- end