solidus_core 2.10.3 → 2.11.4

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.

Potentially problematic release.


This version of solidus_core might be problematic. Click here for more details.

Files changed (552) 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/mailers/spree/base_mailer.rb +4 -0
  5. data/app/mailers/spree/order_mailer.rb +1 -1
  6. data/app/models/concerns/spree/active_storage_adapter.rb +116 -0
  7. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +69 -0
  8. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
  9. data/app/models/concerns/spree/default_price.rb +1 -1
  10. data/app/models/concerns/spree/soft_deletable.rb +18 -0
  11. data/app/models/concerns/spree/user_address_book.rb +86 -32
  12. data/app/models/concerns/spree/user_methods.rb +3 -2
  13. data/app/models/spree/ability.rb +34 -10
  14. data/app/models/spree/address.rb +94 -17
  15. data/app/models/spree/address/name.rb +49 -0
  16. data/app/models/spree/address/state_validator.rb +71 -0
  17. data/app/models/spree/adjustment.rb +1 -1
  18. data/app/models/spree/base.rb +2 -2
  19. data/app/models/spree/calculator.rb +4 -4
  20. data/app/models/spree/calculator/default_tax.rb +1 -1
  21. data/app/models/spree/calculator/free_shipping.rb +1 -0
  22. data/app/models/spree/calculator/percent_per_item.rb +6 -4
  23. data/app/models/spree/calculator/price_sack.rb +2 -1
  24. data/app/models/spree/credit_card.rb +2 -2
  25. data/app/models/spree/customer_return.rb +4 -2
  26. data/app/models/spree/exchange.rb +1 -1
  27. data/app/models/spree/image/active_storage_attachment.rb +21 -0
  28. data/app/models/spree/inventory_unit.rb +1 -1
  29. data/app/models/spree/line_item.rb +13 -4
  30. data/app/models/spree/option_type.rb +1 -1
  31. data/app/models/spree/option_value.rb +2 -2
  32. data/app/models/spree/order.rb +91 -20
  33. data/app/models/spree/order/checkout.rb +1 -0
  34. data/app/models/spree/order/payments.rb +2 -2
  35. data/app/models/spree/order_inventory.rb +16 -4
  36. data/app/models/spree/order_merger.rb +6 -4
  37. data/app/models/spree/order_promotion.rb +1 -1
  38. data/app/models/spree/order_updater.rb +11 -10
  39. data/app/models/spree/payment.rb +3 -3
  40. data/app/models/spree/payment/cancellation.rb +3 -22
  41. data/app/models/spree/payment/processing.rb +54 -30
  42. data/app/models/spree/payment_method.rb +8 -9
  43. data/app/models/spree/payment_source.rb +2 -2
  44. data/app/models/spree/preference.rb +1 -1
  45. data/app/models/spree/price.rb +2 -8
  46. data/app/models/spree/product.rb +19 -14
  47. data/app/models/spree/product/scopes.rb +9 -5
  48. data/app/models/spree/promotion.rb +18 -7
  49. data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
  50. data/app/models/spree/promotion_action.rb +1 -7
  51. data/app/models/spree/promotion_code.rb +6 -1
  52. data/app/models/spree/promotion_code_batch.rb +1 -1
  53. data/app/models/spree/promotion_handler/coupon.rb +2 -2
  54. data/app/models/spree/promotion_rule.rb +1 -1
  55. data/app/models/spree/promotion_rule_role.rb +1 -1
  56. data/app/models/spree/refund.rb +60 -12
  57. data/app/models/spree/reimbursement.rb +27 -0
  58. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +10 -3
  59. data/app/models/spree/return_authorization.rb +1 -1
  60. data/app/models/spree/return_item.rb +21 -10
  61. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
  62. data/app/models/spree/role.rb +1 -1
  63. data/app/models/spree/shipment.rb +2 -2
  64. data/app/models/spree/shipping_calculator.rb +1 -1
  65. data/app/models/spree/shipping_manifest.rb +2 -2
  66. data/app/models/spree/shipping_method.rb +2 -9
  67. data/app/models/spree/shipping_rate.rb +1 -1
  68. data/app/models/spree/shipping_rate_tax.rb +1 -1
  69. data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
  70. data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
  71. data/app/models/spree/stock/package.rb +1 -1
  72. data/app/models/spree/stock/simple_coordinator.rb +1 -3
  73. data/app/models/spree/stock_item.rb +2 -8
  74. data/app/models/spree/stock_movement.rb +2 -0
  75. data/app/models/spree/store.rb +1 -1
  76. data/app/models/spree/store_credit.rb +1 -7
  77. data/app/models/spree/store_credit_category.rb +30 -3
  78. data/app/models/spree/store_credit_event.rb +1 -7
  79. data/app/models/spree/store_credit_reason.rb +0 -4
  80. data/app/models/spree/tax/tax_helpers.rb +1 -1
  81. data/app/models/spree/tax_category.rb +2 -8
  82. data/app/models/spree/tax_rate.rb +7 -7
  83. data/app/models/spree/taxon.rb +1 -1
  84. data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
  85. data/app/models/spree/user_address.rb +8 -2
  86. data/app/models/spree/variant.rb +7 -13
  87. data/app/models/spree/variant_property_rule.rb +5 -1
  88. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +8 -3
  89. data/app/models/spree/zone.rb +1 -1
  90. data/config/locales/en.yml +44 -5
  91. data/db/default/spree/countries.rb +1 -1
  92. data/db/default/spree/states.rb +12 -4
  93. data/db/default/spree/store_credit.rb +2 -2
  94. data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
  95. data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
  96. data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
  97. data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
  98. data/lib/generators/solidus/install/install_generator.rb +253 -0
  99. data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +36 -5
  100. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
  101. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
  102. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
  103. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
  104. data/lib/generators/spree/dummy/templates/rails/test.rb +1 -1
  105. data/lib/generators/spree/install/install_generator.rb +7 -189
  106. data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
  107. data/lib/spree/app_configuration.rb +117 -51
  108. data/lib/spree/awesome_nested_set_override.rb +44 -0
  109. data/lib/spree/core.rb +6 -11
  110. data/lib/spree/core/controller_helpers/auth.rb +17 -4
  111. data/lib/spree/core/controller_helpers/current_host.rb +17 -0
  112. data/lib/spree/core/controller_helpers/order.rb +8 -7
  113. data/lib/spree/core/engine.rb +39 -2
  114. data/lib/spree/core/importer/order.rb +24 -10
  115. data/lib/spree/core/permalinks.rb +1 -3
  116. data/lib/spree/core/product_filters.rb +6 -5
  117. data/lib/spree/core/state_machines.rb +20 -1
  118. data/lib/spree/core/state_machines/order.rb +249 -0
  119. data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
  120. data/lib/spree/core/version.rb +1 -1
  121. data/lib/spree/encryptor.rb +25 -0
  122. data/lib/spree/event.rb +40 -7
  123. data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
  124. data/lib/spree/event/configuration.rb +11 -6
  125. data/lib/spree/event/subscriber.rb +38 -18
  126. data/lib/spree/event/subscriber_registry.rb +92 -0
  127. data/lib/spree/i18n.rb +1 -1
  128. data/lib/spree/mailer_previews/carton_preview.rb +2 -1
  129. data/lib/spree/paranoia_deprecations.rb +32 -12
  130. data/lib/spree/permission_sets/configuration_display.rb +14 -14
  131. data/lib/spree/permission_sets/default_customer.rb +16 -16
  132. data/lib/spree/permission_sets/order_display.rb +11 -11
  133. data/lib/spree/permission_sets/order_management.rb +1 -1
  134. data/lib/spree/permission_sets/product_display.rb +9 -9
  135. data/lib/spree/permission_sets/promotion_display.rb +5 -5
  136. data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
  137. data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
  138. data/lib/spree/permission_sets/stock_display.rb +2 -2
  139. data/lib/spree/permission_sets/stock_management.rb +1 -1
  140. data/lib/spree/permission_sets/user_display.rb +3 -3
  141. data/lib/spree/permission_sets/user_management.rb +4 -3
  142. data/lib/spree/permitted_attributes.rb +9 -8
  143. data/lib/spree/preferences/preferable.rb +4 -3
  144. data/lib/spree/preferences/preferable_class_methods.rb +22 -3
  145. data/lib/spree/testing_support.rb +40 -0
  146. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  147. data/lib/spree/testing_support/authorization_helpers.rb +1 -0
  148. data/lib/spree/testing_support/blacklist_urls.rb +23 -0
  149. data/lib/spree/testing_support/capybara_ext.rb +3 -0
  150. data/lib/spree/testing_support/common_rake.rb +3 -3
  151. data/lib/spree/testing_support/dummy_app.rb +44 -23
  152. data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
  153. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
  154. data/lib/spree/testing_support/factories.rb +2 -4
  155. data/lib/spree/testing_support/factories/address_factory.rb +3 -4
  156. data/lib/spree/testing_support/factories/adjustment_factory.rb +2 -5
  157. data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +3 -0
  158. data/lib/spree/testing_support/factories/calculator_factory.rb +3 -0
  159. data/lib/spree/testing_support/factories/carton_factory.rb +2 -2
  160. data/lib/spree/testing_support/factories/country_factory.rb +3 -0
  161. data/lib/spree/testing_support/factories/credit_card_factory.rb +3 -0
  162. data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -3
  163. data/lib/spree/testing_support/factories/image_factory.rb +4 -1
  164. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +2 -4
  165. data/lib/spree/testing_support/factories/line_item_factory.rb +2 -2
  166. data/lib/spree/testing_support/factories/option_type_factory.rb +3 -0
  167. data/lib/spree/testing_support/factories/option_value_factory.rb +3 -0
  168. data/lib/spree/testing_support/factories/order_factory.rb +2 -6
  169. data/lib/spree/testing_support/factories/order_promotion_factory.rb +2 -2
  170. data/lib/spree/testing_support/factories/payment_factory.rb +2 -4
  171. data/lib/spree/testing_support/factories/payment_method_factory.rb +3 -0
  172. data/lib/spree/testing_support/factories/price_factory.rb +2 -1
  173. data/lib/spree/testing_support/factories/product_factory.rb +2 -5
  174. data/lib/spree/testing_support/factories/product_option_type_factory.rb +2 -2
  175. data/lib/spree/testing_support/factories/product_property_factory.rb +2 -2
  176. data/lib/spree/testing_support/factories/promotion_category_factory.rb +3 -0
  177. data/lib/spree/testing_support/factories/promotion_code_factory.rb +2 -2
  178. data/lib/spree/testing_support/factories/promotion_factory.rb +8 -2
  179. data/lib/spree/testing_support/factories/property_factory.rb +3 -0
  180. data/lib/spree/testing_support/factories/refund_factory.rb +3 -2
  181. data/lib/spree/testing_support/factories/refund_reason_factory.rb +3 -0
  182. data/lib/spree/testing_support/factories/reimbursement_factory.rb +3 -2
  183. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +3 -0
  184. data/lib/spree/testing_support/factories/return_authorization_factory.rb +2 -3
  185. data/lib/spree/testing_support/factories/return_item_factory.rb +2 -4
  186. data/lib/spree/testing_support/factories/return_reason_factory.rb +3 -0
  187. data/lib/spree/testing_support/factories/role_factory.rb +3 -0
  188. data/lib/spree/testing_support/factories/shipment_factory.rb +2 -3
  189. data/lib/spree/testing_support/factories/shipping_category_factory.rb +3 -0
  190. data/lib/spree/testing_support/factories/shipping_method_factory.rb +2 -3
  191. data/lib/spree/testing_support/factories/shipping_rate_factory.rb +2 -2
  192. data/lib/spree/testing_support/factories/state_factory.rb +2 -1
  193. data/lib/spree/testing_support/factories/stock_item_factory.rb +2 -2
  194. data/lib/spree/testing_support/factories/stock_location_factory.rb +2 -3
  195. data/lib/spree/testing_support/factories/stock_movement_factory.rb +2 -1
  196. data/lib/spree/testing_support/factories/stock_package_factory.rb +2 -2
  197. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +11 -0
  198. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +3 -2
  199. data/lib/spree/testing_support/factories/store_credit_factory.rb +2 -3
  200. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +6 -1
  201. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +3 -0
  202. data/lib/spree/testing_support/factories/store_factory.rb +4 -1
  203. data/lib/spree/testing_support/factories/tax_category_factory.rb +2 -1
  204. data/lib/spree/testing_support/factories/tax_rate_factory.rb +2 -3
  205. data/lib/spree/testing_support/factories/taxon_factory.rb +6 -1
  206. data/lib/spree/testing_support/factories/taxonomy_factory.rb +3 -0
  207. data/lib/spree/testing_support/factories/user_factory.rb +2 -3
  208. data/lib/spree/testing_support/factories/variant_factory.rb +2 -4
  209. data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +2 -2
  210. data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +2 -3
  211. data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +2 -2
  212. data/lib/spree/testing_support/factories/zone_factory.rb +3 -3
  213. data/lib/spree/testing_support/fixtures/blank.jpg +0 -0
  214. data/lib/spree/testing_support/job_helpers.rb +24 -0
  215. data/lib/spree/testing_support/order_walkthrough.rb +1 -1
  216. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  217. data/lib/spree/testing_support/preferences.rb +3 -1
  218. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  219. data/lib/spree/testing_support/translations.rb +25 -0
  220. data/{app/models → lib}/spree/user_class_handle.rb +0 -0
  221. data/lib/tasks/email.rake +3 -2
  222. data/solidus_core.gemspec +8 -5
  223. metadata +97 -374
  224. data/script/rails +0 -10
  225. data/spec/fixtures/thinking-cat.jpg +0 -0
  226. data/spec/helpers/base_helper_spec.rb +0 -168
  227. data/spec/helpers/products_helper_spec.rb +0 -202
  228. data/spec/helpers/taxons_helper_spec.rb +0 -43
  229. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  230. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  231. data/spec/lib/i18n_spec.rb +0 -97
  232. data/spec/lib/search/base_spec.rb +0 -91
  233. data/spec/lib/search/variant_spec.rb +0 -115
  234. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  235. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  236. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  237. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  238. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  239. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  240. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  241. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  242. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -48
  243. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  244. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  245. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  246. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  247. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
  248. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  249. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  250. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  251. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  252. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  253. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  254. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  255. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  256. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  257. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  258. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  259. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  260. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  261. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  262. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  263. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  264. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  265. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  266. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  267. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  268. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  269. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  270. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  271. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  272. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  273. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  274. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  275. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  276. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  277. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  278. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  279. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  280. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  281. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  282. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  283. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  284. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  285. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  286. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  287. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  288. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  289. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  290. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  291. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  292. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  293. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  294. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  295. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  296. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  297. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  298. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  299. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  300. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  301. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  302. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  303. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  304. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  305. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  306. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  307. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  308. data/spec/lib/spree/core/version_spec.rb +0 -19
  309. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  310. data/spec/lib/spree/event_spec.rb +0 -130
  311. data/spec/lib/spree/localized_number_spec.rb +0 -45
  312. data/spec/lib/spree/migrations_spec.rb +0 -32
  313. data/spec/lib/spree/money_spec.rb +0 -298
  314. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  315. data/spec/lib/spree/permitted_attributes_spec.rb +0 -41
  316. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  317. data/spec/lib/tasks/dummy_task.rake +0 -12
  318. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  319. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  320. data/spec/mailers/carton_mailer_spec.rb +0 -44
  321. data/spec/mailers/order_mailer_spec.rb +0 -117
  322. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  323. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  324. data/spec/mailers/test_mailer_spec.rb +0 -13
  325. data/spec/models/spree/ability_spec.rb +0 -279
  326. data/spec/models/spree/address_spec.rb +0 -399
  327. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  328. data/spec/models/spree/adjustment_spec.rb +0 -339
  329. data/spec/models/spree/asset_spec.rb +0 -25
  330. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  331. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  332. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  333. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  334. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  335. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  336. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  337. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  338. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  339. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  340. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  341. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  342. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  343. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  344. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
  345. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  346. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  347. data/spec/models/spree/calculator_spec.rb +0 -43
  348. data/spec/models/spree/carton_spec.rb +0 -145
  349. data/spec/models/spree/classification_spec.rb +0 -126
  350. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  351. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  352. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  353. data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
  354. data/spec/models/spree/country_spec.rb +0 -154
  355. data/spec/models/spree/credit_card_spec.rb +0 -373
  356. data/spec/models/spree/customer_return_spec.rb +0 -294
  357. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  358. data/spec/models/spree/exchange_spec.rb +0 -76
  359. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  360. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  361. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  362. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  363. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  364. data/spec/models/spree/gateway_spec.rb +0 -14
  365. data/spec/models/spree/image_spec.rb +0 -25
  366. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  367. data/spec/models/spree/line_item_spec.rb +0 -240
  368. data/spec/models/spree/option_type_spec.rb +0 -16
  369. data/spec/models/spree/option_value_spec.rb +0 -52
  370. data/spec/models/spree/order/address_spec.rb +0 -52
  371. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  372. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  373. data/spec/models/spree/order/checkout_spec.rb +0 -740
  374. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  375. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  376. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  377. data/spec/models/spree/order/payment_spec.rb +0 -280
  378. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  379. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  380. data/spec/models/spree/order/totals_spec.rb +0 -26
  381. data/spec/models/spree/order/validations_spec.rb +0 -17
  382. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  383. data/spec/models/spree/order_capturing_spec.rb +0 -16
  384. data/spec/models/spree/order_contents_spec.rb +0 -362
  385. data/spec/models/spree/order_inventory_spec.rb +0 -285
  386. data/spec/models/spree/order_merger_spec.rb +0 -162
  387. data/spec/models/spree/order_mutex_spec.rb +0 -89
  388. data/spec/models/spree/order_promotion_spec.rb +0 -33
  389. data/spec/models/spree/order_shipping_spec.rb +0 -247
  390. data/spec/models/spree/order_spec.rb +0 -1687
  391. data/spec/models/spree/order_taxation_spec.rb +0 -128
  392. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  393. data/spec/models/spree/order_updater_spec.rb +0 -556
  394. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  395. data/spec/models/spree/payment_create_spec.rb +0 -195
  396. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  397. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  398. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  399. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  400. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  401. data/spec/models/spree/payment_method_spec.rb +0 -408
  402. data/spec/models/spree/payment_spec.rb +0 -1270
  403. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  404. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  405. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  406. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  407. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  408. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  409. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  410. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  411. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  412. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  413. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  414. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  415. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  416. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  417. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  418. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
  419. data/spec/models/spree/preference_spec.rb +0 -79
  420. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  421. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  422. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  423. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  424. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  425. data/spec/models/spree/preferences/store_spec.rb +0 -40
  426. data/spec/models/spree/price_spec.rb +0 -150
  427. data/spec/models/spree/product/scopes_spec.rb +0 -164
  428. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  429. data/spec/models/spree/product_filter_spec.rb +0 -28
  430. data/spec/models/spree/product_property_spec.rb +0 -20
  431. data/spec/models/spree/product_spec.rb +0 -584
  432. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  433. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  434. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  435. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  436. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  437. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  438. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  439. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  440. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  441. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  442. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  443. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  444. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -227
  445. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  446. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  447. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  448. data/spec/models/spree/promotion_action_spec.rb +0 -44
  449. data/spec/models/spree/promotion_category_spec.rb +0 -19
  450. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  451. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  452. data/spec/models/spree/promotion_code_spec.rb +0 -206
  453. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  454. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  455. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  456. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  457. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  458. data/spec/models/spree/promotion_spec.rb +0 -945
  459. data/spec/models/spree/refund_spec.rb +0 -200
  460. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  461. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  462. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  463. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  464. data/spec/models/spree/reimbursement_spec.rb +0 -278
  465. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  466. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  467. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  468. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  469. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  470. data/spec/models/spree/return_authorization_spec.rb +0 -226
  471. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  472. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  473. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  474. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  475. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  476. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  477. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  478. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  479. data/spec/models/spree/return_item_spec.rb +0 -785
  480. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  481. data/spec/models/spree/shipment_spec.rb +0 -914
  482. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  483. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  484. data/spec/models/spree/shipping_method_spec.rb +0 -292
  485. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  486. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  487. data/spec/models/spree/state_spec.rb +0 -43
  488. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  489. data/spec/models/spree/stock/availability_spec.rb +0 -143
  490. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  491. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  492. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  493. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  494. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  495. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  496. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  497. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  498. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  499. data/spec/models/spree/stock/package_spec.rb +0 -182
  500. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  501. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  502. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  503. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  504. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  505. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  506. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  507. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  508. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  509. data/spec/models/spree/stock_item_spec.rb +0 -348
  510. data/spec/models/spree/stock_location_spec.rb +0 -288
  511. data/spec/models/spree/stock_movement_spec.rb +0 -58
  512. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  513. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  514. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  515. data/spec/models/spree/store_credit_spec.rb +0 -900
  516. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  517. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  518. data/spec/models/spree/store_spec.rb +0 -156
  519. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  520. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  521. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  522. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  523. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  524. data/spec/models/spree/tax_category_spec.rb +0 -50
  525. data/spec/models/spree/tax_rate_spec.rb +0 -317
  526. data/spec/models/spree/taxon_spec.rb +0 -197
  527. data/spec/models/spree/taxonomy_spec.rb +0 -15
  528. data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
  529. data/spec/models/spree/unit_cancel_spec.rb +0 -126
  530. data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
  531. data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
  532. data/spec/models/spree/user_spec.rb +0 -247
  533. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  534. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  535. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  536. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  537. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  538. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  539. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  540. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  541. data/spec/models/spree/variant_spec.rb +0 -862
  542. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  543. data/spec/models/spree/wallet_spec.rb +0 -155
  544. data/spec/models/spree/zone_spec.rb +0 -248
  545. data/spec/rails_helper.rb +0 -46
  546. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  547. data/spec/spec_helper.rb +0 -36
  548. data/spec/support/big_decimal.rb +0 -7
  549. data/spec/support/concerns/default_price.rb +0 -44
  550. data/spec/support/concerns/payment_source.rb +0 -66
  551. data/spec/support/concerns/working_factories.rb +0 -15
  552. 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!(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!(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!(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!(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