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,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- module Stock
7
- module LocationSorter
8
- RSpec.describe DefaultFirst, type: :model do
9
- subject { described_class.new(stock_locations) }
10
-
11
- let!(:first_stock_location) { create(:stock_location, default: false) }
12
- let!(:second_stock_location) { create(:stock_location, default: true) }
13
- let(:stock_locations) { Spree::StockLocation.all }
14
- let(:sorted_stock_locations) { stock_locations.reverse }
15
-
16
- it 'returns the default stock location first' do
17
- expect(subject.sort).to eq(sorted_stock_locations)
18
- end
19
- end
20
- end
21
- end
22
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- module Stock
7
- module LocationSorter
8
- RSpec.describe Unsorted, type: :model do
9
- subject { described_class.new(stock_locations) }
10
-
11
- let!(:first_stock_location) { create(:stock_location) }
12
- let!(:second_stock_location) { create(:stock_location) }
13
- let(:stock_locations) { Spree::StockLocation.all }
14
-
15
- it 'returns the original stock locations unsorted' do
16
- expect(subject.sort).to eq(stock_locations)
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,182 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- module Stock
7
- RSpec.describe Package, type: :model do
8
- let(:variant) { build(:variant, weight: 25.0) }
9
- let(:stock_location) { build(:stock_location) }
10
- let(:order) { build(:order) }
11
- let(:line_item) { build(:line_item, order: order) }
12
-
13
- subject { Package.new(stock_location) }
14
-
15
- def build_inventory_unit
16
- build(:inventory_unit, variant: variant, line_item: line_item)
17
- end
18
-
19
- it 'calculates the weight of all the contents' do
20
- 4.times { subject.add build_inventory_unit }
21
- expect(subject.weight).to eq(100.0)
22
- end
23
-
24
- it 'filters by on_hand and backordered' do
25
- 4.times { subject.add build_inventory_unit }
26
- 3.times { subject.add build_inventory_unit, :backordered }
27
- expect(subject.on_hand.count).to eq 4
28
- expect(subject.backordered.count).to eq 3
29
- end
30
-
31
- it 'calculates the quantity by state' do
32
- 4.times { subject.add build_inventory_unit }
33
- 3.times { subject.add build_inventory_unit, :backordered }
34
-
35
- expect(subject.quantity).to eq 7
36
- expect(subject.quantity(:on_hand)).to eq 4
37
- expect(subject.quantity(:backordered)).to eq 3
38
- end
39
-
40
- it 'returns nil for content item not found' do
41
- unit = build_inventory_unit
42
- item = subject.find_item(unit, :on_hand)
43
- expect(item).to be_nil
44
- end
45
-
46
- it 'finds content item for an inventory unit' do
47
- unit = build_inventory_unit
48
- subject.add unit
49
- item = subject.find_item(unit, :on_hand)
50
- expect(item.quantity).to eq 1
51
- end
52
-
53
- it 'builds the correct list of shipping methods based on stock location and categories' do
54
- category_one = create(:shipping_category)
55
- category_two = create(:shipping_category)
56
- method_one = create(:shipping_method, available_to_all: true)
57
- method_two = create(:shipping_method, stock_locations: [stock_location])
58
- method_one.shipping_categories = [category_one, category_two]
59
- method_two.shipping_categories = [category_one, category_two]
60
- variant_one = mock_model(Variant, shipping_category_id: category_one.id)
61
- variant_two = mock_model(Variant, shipping_category_id: category_two.id)
62
- variant_three = mock_model(Variant, shipping_category_id: nil)
63
- contents = [ContentItem.new(build(:inventory_unit, variant: variant_one)),
64
- ContentItem.new(build(:inventory_unit, variant: variant_one)),
65
- ContentItem.new(build(:inventory_unit, variant: variant_two)),
66
- ContentItem.new(build(:inventory_unit, variant: variant_three))]
67
-
68
- package = Package.new(stock_location, contents)
69
- expect(package.shipping_methods).to match_array([method_one, method_two])
70
- end
71
- # Contains regression test for https://github.com/spree/spree/issues/2804
72
- it 'builds a list of shipping methods common to all categories' do
73
- category_one = create(:shipping_category)
74
- category_two = create(:shipping_category)
75
- method_one = create(:shipping_method)
76
- method_two = create(:shipping_method)
77
- method_one.shipping_categories = [category_one, category_two]
78
- method_two.shipping_categories = [category_one]
79
- variant_one = mock_model(Variant, shipping_category_id: category_one.id)
80
- variant_two = mock_model(Variant, shipping_category_id: category_two.id)
81
- variant_three = mock_model(Variant, shipping_category_id: nil)
82
- contents = [ContentItem.new(build(:inventory_unit, variant: variant_one)),
83
- ContentItem.new(build(:inventory_unit, variant: variant_one)),
84
- ContentItem.new(build(:inventory_unit, variant: variant_two)),
85
- ContentItem.new(build(:inventory_unit, variant: variant_three))]
86
-
87
- package = Package.new(stock_location, contents)
88
- expect(package.shipping_methods).to match_array([method_one])
89
- end
90
-
91
- it 'builds an empty list of shipping methods when no categories' do
92
- variant = mock_model(Variant, shipping_category_id: nil)
93
- contents = [ContentItem.new(build(:inventory_unit, variant: variant))]
94
- package = Package.new(stock_location, contents)
95
- expect(package.shipping_methods).to be_empty
96
- end
97
-
98
- it "can convert to a shipment" do
99
- 2.times { subject.add build_inventory_unit }
100
- subject.add build_inventory_unit, :backordered
101
-
102
- shipping_method = build(:shipping_method)
103
-
104
- shipment = subject.to_shipment
105
- shipment.shipping_rates = [Spree::ShippingRate.new(shipping_method: shipping_method, cost: 10.00, selected: true)]
106
- expect(shipment.stock_location).to eq subject.stock_location
107
- expect(shipment.inventory_units.size).to eq 3
108
-
109
- first_unit = shipment.inventory_units.first
110
- expect(first_unit.variant).to eq variant
111
- expect(first_unit.state).to eq 'on_hand'
112
- expect(first_unit).to be_pending
113
-
114
- last_unit = shipment.inventory_units.last
115
- expect(last_unit.variant).to eq variant
116
- expect(last_unit.state).to eq 'backordered'
117
-
118
- expect(shipment.shipping_method).to eq shipping_method
119
- end
120
-
121
- it 'does not add an inventory unit to a package twice' do
122
- # since inventory units currently don't have a quantity
123
- unit = build_inventory_unit
124
- subject.add unit
125
- subject.add unit
126
- expect(subject.quantity).to eq 1
127
- expect(subject.contents.first.inventory_unit).to eq unit
128
- expect(subject.contents.first.quantity).to eq 1
129
- end
130
-
131
- describe "#add_multiple" do
132
- it "adds multiple inventory units" do
133
- expect { subject.add_multiple [build_inventory_unit, build_inventory_unit] }.to change { subject.quantity }.by(2)
134
- end
135
-
136
- it "allows adding with a state" do
137
- expect { subject.add_multiple [build_inventory_unit, build_inventory_unit], :backordered }.to change { subject.backordered.count }.by(2)
138
- end
139
-
140
- it "defaults to adding with the on hand state" do
141
- expect { subject.add_multiple [build_inventory_unit, build_inventory_unit] }.to change { subject.on_hand.count }.by(2)
142
- end
143
- end
144
-
145
- describe "#remove" do
146
- let(:unit) { build_inventory_unit }
147
- context "there is a content item for the inventory unit" do
148
- before { subject.add unit }
149
-
150
- it "removes that content item" do
151
- expect { subject.remove(unit) }.to change { subject.quantity }.by(-1)
152
- expect(subject.contents.map(&:inventory_unit)).not_to include unit
153
- end
154
- end
155
-
156
- context "there is no content item for the inventory unit" do
157
- it "doesn't change the set of content items" do
158
- expect { subject.remove(unit) }.not_to change { subject.quantity }
159
- end
160
- end
161
- end
162
-
163
- describe "#order" do
164
- let(:unit) { build_inventory_unit }
165
- context "there is an inventory unit" do
166
- before { subject.add unit }
167
-
168
- it "returns an order" do
169
- expect(subject.order).to be_a_kind_of Spree::Order
170
- expect(subject.order).to eq order
171
- end
172
- end
173
-
174
- context "there is no inventory unit" do
175
- it "returns nil" do
176
- expect(subject.order).to eq nil
177
- end
178
- end
179
- end
180
- end
181
- end
182
- end
@@ -1,113 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.shared_examples_for 'unlimited supply' do
6
- it 'can_supply? any amount' do
7
- expect(subject.can_supply?(1)).to eq true
8
- expect(subject.can_supply?(101)).to eq true
9
- expect(subject.can_supply?(100_001)).to eq true
10
- end
11
- end
12
-
13
- module Spree
14
- module Stock
15
- RSpec.describe Quantifier, type: :model do
16
- let(:target_stock_location) { nil }
17
- let!(:stock_location) { create :stock_location_with_items }
18
- let!(:stock_item) { stock_location.stock_items.order(:id).first }
19
-
20
- subject { described_class.new(stock_item.variant, target_stock_location) }
21
-
22
- specify { expect(subject.stock_items).to eq([stock_item]) }
23
-
24
- context 'with a single stock location/item' do
25
- it 'total_on_hand should match stock_item' do
26
- expect(subject.total_on_hand).to eq stock_item.count_on_hand
27
- end
28
-
29
- context 'when track_inventory_levels is false' do
30
- before { stub_spree_preferences(track_inventory_levels: false) }
31
-
32
- specify { expect(subject.total_on_hand).to eq(Float::INFINITY) }
33
-
34
- it_should_behave_like 'unlimited supply'
35
- end
36
-
37
- context 'when variant inventory tracking is off' do
38
- before { stock_item.variant.track_inventory = false }
39
-
40
- specify { expect(subject.total_on_hand).to eq(Float::INFINITY) }
41
-
42
- it_should_behave_like 'unlimited supply'
43
- end
44
-
45
- context 'when stock item allows backordering' do
46
- specify { expect(subject.backorderable?).to be true }
47
-
48
- it_should_behave_like 'unlimited supply'
49
- end
50
-
51
- context 'when stock item prevents backordering' do
52
- before { stock_item.update(backorderable: false) }
53
-
54
- specify { expect(subject.backorderable?).to be false }
55
-
56
- it 'can_supply? only upto total_on_hand' do
57
- expect(subject.can_supply?(1)).to be true
58
- expect(subject.can_supply?(10)).to be true
59
- expect(subject.can_supply?(11)).to be false
60
- end
61
- end
62
- end
63
-
64
- context 'with multiple stock locations/items' do
65
- let!(:stock_location_2) { create :stock_location }
66
- let!(:stock_location_3) { create :stock_location, active: false }
67
-
68
- before do
69
- stock_location_2.stock_items.where(variant_id: stock_item.variant).update_all(count_on_hand: 5, backorderable: false)
70
- stock_location_3.stock_items.where(variant_id: stock_item.variant).update_all(count_on_hand: 5, backorderable: false)
71
- end
72
-
73
- it 'total_on_hand should total all active stock_items' do
74
- expect(subject.total_on_hand).to eq(15)
75
- end
76
-
77
- context 'when any stock item allows backordering' do
78
- specify { expect(subject.backorderable?).to be true }
79
-
80
- it_should_behave_like 'unlimited supply'
81
- end
82
-
83
- context 'when all stock items prevent backordering' do
84
- before { stock_item.update(backorderable: false) }
85
-
86
- specify { expect(subject.backorderable?).to be false }
87
-
88
- it 'can_supply? upto total_on_hand' do
89
- expect(subject.can_supply?(1)).to be true
90
- expect(subject.can_supply?(15)).to be true
91
- expect(subject.can_supply?(16)).to be false
92
- end
93
- end
94
- end
95
-
96
- context 'with a specific stock location' do
97
- let!(:stock_location_2) { create :stock_location }
98
- let!(:stock_location_3) { create :stock_location, active: false }
99
- let(:target_stock_location) { stock_location_3 }
100
-
101
- before do
102
- Spree::StockItem.update_all(count_on_hand: 0, backorderable: false)
103
- stock_location_3.stock_items.where(variant_id: stock_item.variant).update_all(count_on_hand: 5, backorderable: false)
104
- end
105
-
106
- it 'can_supply? only upto total_on_hand' do
107
- expect(subject.can_supply?(5)).to eq true
108
- expect(subject.can_supply?(6)).to eq false
109
- end
110
- end
111
- end
112
- end
113
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Stock::ShippingRateSelector do
6
- describe '#sort' do
7
- it 'sorts by increasing cost' do
8
- cheapest_shipping_rate = Spree::ShippingRate.new(cost: 1.00)
9
- middle_shipping_rate = Spree::ShippingRate.new(cost: 5.00)
10
- expensive_shipping_rate = Spree::ShippingRate.new(cost: 42.00)
11
- shipping_rates = [expensive_shipping_rate, middle_shipping_rate, cheapest_shipping_rate]
12
-
13
- sorter = Spree::Stock::ShippingRateSelector.new(shipping_rates)
14
-
15
- expect(sorter.find_default).to eq(cheapest_shipping_rate)
16
- end
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Stock::ShippingRateSorter do
6
- describe '#sort' do
7
- it 'sorts by increasing cost' do
8
- cheapest_shipping_rate = Spree::ShippingRate.new(cost: 1.00)
9
- middle_shipping_rate = Spree::ShippingRate.new(cost: 5.00)
10
- expensive_shipping_rate = Spree::ShippingRate.new(cost: 42.00)
11
- shipping_rates = [expensive_shipping_rate, middle_shipping_rate, cheapest_shipping_rate]
12
-
13
- sorter = Spree::Stock::ShippingRateSorter.new(shipping_rates)
14
-
15
- expect(sorter.sort).to eq([cheapest_shipping_rate, middle_shipping_rate, expensive_shipping_rate])
16
- end
17
- end
18
- end
@@ -1,264 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- module Stock
7
- RSpec.describe SimpleCoordinator, type: :model do
8
- let(:order) { create(:order_with_line_items, line_items_count: 2) }
9
-
10
- subject { SimpleCoordinator.new(order) }
11
-
12
- describe "#shipments" do
13
- it 'uses the pluggable estimator class' do
14
- expect(Spree::Config.stock).to receive(:estimator_class).and_call_original
15
- subject.shipments
16
- end
17
-
18
- it 'uses the configured stock location filter' do
19
- expect(Spree::Config.stock).to receive(:location_filter_class).and_call_original
20
- subject.shipments
21
- end
22
-
23
- it 'uses the configured stock location sorter' do
24
- expect(Spree::Config.stock).to receive(:location_sorter_class).and_call_original
25
- subject.shipments
26
- end
27
-
28
- it 'uses the pluggable allocator class' do
29
- expect(Spree::Config.stock).to receive(:allocator_class).and_call_original
30
- subject.shipments
31
- end
32
-
33
- it 'builds shipments' do
34
- expect(subject.shipments.size).to eq(1)
35
- end
36
-
37
- it "builds a shipment for all active stock locations" do
38
- subject.shipments.count == StockLocation.count
39
- end
40
-
41
- context "missing stock items in active stock location" do
42
- let!(:another_location) { create(:stock_location, propagate_all_variants: false) }
43
-
44
- it "builds shipments only for valid active stock locations" do
45
- expect(subject.shipments.count).to eq(StockLocation.count - 1)
46
- end
47
- end
48
-
49
- it "does not unintentionally add shipments to the order" do
50
- subject.shipments
51
- expect {
52
- order.recalculate
53
- }.not_to change {
54
- order.shipments.count
55
- }
56
- end
57
- end
58
-
59
- describe "#allocate_inventory" do
60
- it 'is deprecated' do
61
- expect(Spree::Deprecation).to receive(:warn)
62
- subject.send :allocate_inventory, subject.instance_variable_get(:@availability).on_hand_by_stock_location_id
63
- end
64
- end
65
-
66
- # regression spec
67
- context "when there is one unit that has stock in a stock location that a non-tracked unit has no stock item in" do
68
- let!(:stock_location_1) { create(:stock_location, propagate_all_variants: false, active: true) }
69
- let!(:stock_location_2) { create(:stock_location, propagate_all_variants: false, active: true) }
70
-
71
- let!(:variant_1) do
72
- create(:variant, track_inventory: true).tap do |variant|
73
- variant.stock_items.destroy_all
74
- stock_item = variant.stock_items.create!(stock_location: stock_location_1)
75
- stock_item.set_count_on_hand(10)
76
- end
77
- end
78
- let!(:variant_2) do
79
- create(:variant, track_inventory: false).tap do |variant|
80
- variant.stock_items.destroy_all
81
- stock_item = variant.stock_items.create!(stock_location: stock_location_2)
82
- stock_item.set_count_on_hand(0)
83
- end
84
- end
85
-
86
- let!(:order) { create(:order, line_items: [create(:line_item, variant: variant_1), create(:line_item, variant: variant_2)]) }
87
-
88
- it "splits the inventory units to stock locations that they have stock items for" do
89
- shipments = subject.shipments
90
-
91
- expect(shipments.size).to eq 2
92
-
93
- location_1_shipment = shipments.detect { |shipment| shipment.stock_location == stock_location_1 }
94
- location_2_shipment = shipments.detect { |shipment| shipment.stock_location == stock_location_2 }
95
-
96
- expect(location_1_shipment).to be_present
97
- expect(location_2_shipment).to be_present
98
-
99
- expect(location_1_shipment.inventory_units.map(&:variant)).to eq [variant_1]
100
- expect(location_2_shipment.inventory_units.map(&:variant)).to eq [variant_2]
101
- end
102
- end
103
-
104
- context "with no backordering" do
105
- let!(:stock_location_1) { create(:stock_location, propagate_all_variants: false, active: true) }
106
-
107
- let!(:variant) { create(:variant, track_inventory: true) }
108
-
109
- before do
110
- stock_item_one = variant.stock_items.create!(stock_location: stock_location_1, backorderable: false)
111
- stock_item_one.set_count_on_hand(location_1_inventory)
112
- end
113
-
114
- let!(:order) { create(:order) }
115
- let!(:line_item) { create(:line_item, order: order, variant: variant, quantity: 5) }
116
- before { order.reload }
117
- let(:shipments) { subject.shipments }
118
-
119
- shared_examples "a fulfillable package" do
120
- it "packages correctly" do
121
- expect(shipments).not_to be_empty
122
- inventory_units = shipments.flat_map { |shipment| shipment.inventory_units }
123
- expect(inventory_units.size).to eq(5)
124
- expect(inventory_units.uniq.size).to eq(5)
125
- end
126
- end
127
-
128
- shared_examples "an unfulfillable package" do
129
- it "raises exception" do
130
- expect{ shipments }.to raise_error(Spree::Order::InsufficientStock)
131
- end
132
- end
133
-
134
- context 'with no stock locations' do
135
- let(:location_1_inventory) { 0 }
136
- before { variant.stock_items.each(&:really_destroy!) }
137
- it_behaves_like "an unfulfillable package"
138
- end
139
-
140
- context 'with a single stock location' do
141
- context "with no inventory" do
142
- let(:location_1_inventory) { 0 }
143
- it_behaves_like "an unfulfillable package"
144
- end
145
-
146
- context "with insufficient inventory" do
147
- let(:location_1_inventory) { 1 }
148
- it_behaves_like "an unfulfillable package"
149
- end
150
-
151
- context "with sufficient inventory" do
152
- let(:location_1_inventory) { 5 }
153
- it_behaves_like "a fulfillable package"
154
- end
155
- end
156
-
157
- context 'with two stock locations' do
158
- let!(:stock_location_2) { create(:stock_location, propagate_all_variants: false, active: true) }
159
- before do
160
- stock_item_two = variant.stock_items.create!(stock_location: stock_location_2, backorderable: false)
161
- stock_item_two.set_count_on_hand(location_2_inventory)
162
- end
163
-
164
- context "with no inventory" do
165
- let(:location_1_inventory) { 0 }
166
- let(:location_2_inventory) { 0 }
167
- it_behaves_like "an unfulfillable package"
168
- end
169
-
170
- context "with some but insufficient inventory in each location" do
171
- let(:location_1_inventory) { 1 }
172
- let(:location_2_inventory) { 1 }
173
- it_behaves_like "an unfulfillable package"
174
- end
175
-
176
- context "has sufficient inventory in the first location" do
177
- let(:location_1_inventory) { 5 }
178
- let(:location_2_inventory) { 0 }
179
- it_behaves_like "a fulfillable package"
180
- end
181
-
182
- context "has sufficient inventory in the second location" do
183
- let(:location_1_inventory) { 0 }
184
- let(:location_2_inventory) { 5 }
185
- it_behaves_like "a fulfillable package"
186
- end
187
-
188
- context "with sufficient inventory only across both locations" do
189
- let(:location_1_inventory) { 2 }
190
- let(:location_2_inventory) { 3 }
191
- it_behaves_like "a fulfillable package"
192
- end
193
-
194
- context "has sufficient inventory in the second location and some in the first" do
195
- let(:location_1_inventory) { 2 }
196
- let(:location_2_inventory) { 5 }
197
- it_behaves_like "a fulfillable package"
198
- end
199
-
200
- context "has sufficient inventory in the first location and some in the second" do
201
- let(:location_1_inventory) { 5 }
202
- let(:location_2_inventory) { 2 }
203
- it_behaves_like "a fulfillable package"
204
- end
205
-
206
- context "with sufficient inventory in both locations" do
207
- let(:location_1_inventory) { 5 }
208
- let(:location_2_inventory) { 5 }
209
- it_behaves_like "a fulfillable package"
210
- end
211
- end
212
-
213
- context 'with three stock locations' do
214
- let!(:stock_location_2) { create(:stock_location, propagate_all_variants: false, active: true) }
215
- let!(:stock_location_3) { create(:stock_location, propagate_all_variants: false, active: true) }
216
- before do
217
- stock_item_two = variant.stock_items.create!(stock_location: stock_location_2, backorderable: false)
218
- stock_item_two.set_count_on_hand(location_2_inventory)
219
-
220
- stock_item_three = variant.stock_items.create!(stock_location: stock_location_3, backorderable: false)
221
- stock_item_three.set_count_on_hand(location_3_inventory)
222
- end
223
-
224
- # Regression test for https://github.com/solidusio/solidus/issues/2122
225
- context "with sufficient inventory in first two locations" do
226
- let(:location_1_inventory) { 3 }
227
- let(:location_2_inventory) { 3 }
228
- let(:location_3_inventory) { 3 }
229
-
230
- it_behaves_like "a fulfillable package"
231
-
232
- it "creates only two packages" do
233
- expect(shipments.count).to eq(2)
234
- end
235
- end
236
-
237
- context "with sufficient inventory only across all three locations" do
238
- let(:location_1_inventory) { 2 }
239
- let(:location_2_inventory) { 2 }
240
- let(:location_3_inventory) { 2 }
241
-
242
- it_behaves_like "a fulfillable package"
243
-
244
- it "creates three packages" do
245
- expect(shipments.count).to eq(3)
246
- end
247
- end
248
-
249
- context "with sufficient inventory only across all three locations" do
250
- let(:location_1_inventory) { 2 }
251
- let(:location_2_inventory) { 2 }
252
- let(:location_3_inventory) { 2 }
253
-
254
- it_behaves_like "a fulfillable package"
255
-
256
- it "creates three packages" do
257
- expect(shipments.count).to eq(3)
258
- end
259
- end
260
- end
261
- end
262
- end
263
- end
264
- end