solidus_core 2.10.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (495) 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/attachment.rb +69 -0
  7. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
  8. data/app/models/concerns/spree/active_storage_adapter.rb +116 -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/name.rb +49 -0
  15. data/app/models/spree/address/state_validator.rb +71 -0
  16. data/app/models/spree/address.rb +94 -17
  17. data/app/models/spree/adjustment.rb +1 -1
  18. data/app/models/spree/base.rb +1 -0
  19. data/app/models/spree/calculator/default_tax.rb +1 -1
  20. data/app/models/spree/calculator/percent_per_item.rb +4 -4
  21. data/app/models/spree/calculator/price_sack.rb +1 -1
  22. data/app/models/spree/credit_card.rb +2 -2
  23. data/app/models/spree/customer_return.rb +4 -2
  24. data/app/models/spree/exchange.rb +1 -1
  25. data/app/models/spree/image/active_storage_attachment.rb +21 -0
  26. data/app/models/spree/inventory_unit.rb +1 -1
  27. data/app/models/spree/line_item.rb +13 -4
  28. data/app/models/spree/option_type.rb +1 -1
  29. data/app/models/spree/option_value.rb +2 -2
  30. data/app/models/spree/order/checkout.rb +1 -0
  31. data/app/models/spree/order.rb +91 -20
  32. data/app/models/spree/order_inventory.rb +16 -4
  33. data/app/models/spree/order_merger.rb +6 -4
  34. data/app/models/spree/order_promotion.rb +1 -1
  35. data/app/models/spree/order_updater.rb +11 -10
  36. data/app/models/spree/payment/cancellation.rb +3 -3
  37. data/app/models/spree/payment/processing.rb +54 -30
  38. data/app/models/spree/payment.rb +3 -3
  39. data/app/models/spree/payment_method.rb +8 -9
  40. data/app/models/spree/preference.rb +1 -1
  41. data/app/models/spree/price.rb +2 -8
  42. data/app/models/spree/product/scopes.rb +10 -5
  43. data/app/models/spree/product.rb +19 -14
  44. data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
  45. data/app/models/spree/promotion.rb +18 -7
  46. data/app/models/spree/promotion_action.rb +1 -7
  47. data/app/models/spree/promotion_code.rb +6 -1
  48. data/app/models/spree/promotion_code_batch.rb +1 -1
  49. data/app/models/spree/promotion_handler/coupon.rb +2 -2
  50. data/app/models/spree/promotion_rule.rb +1 -1
  51. data/app/models/spree/promotion_rule_role.rb +1 -1
  52. data/app/models/spree/refund.rb +54 -12
  53. data/app/models/spree/reimbursement.rb +27 -0
  54. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +10 -3
  55. data/app/models/spree/return_authorization.rb +1 -1
  56. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
  57. data/app/models/spree/return_item.rb +21 -10
  58. data/app/models/spree/role.rb +1 -1
  59. data/app/models/spree/shipment.rb +2 -2
  60. data/app/models/spree/shipping_calculator.rb +1 -1
  61. data/app/models/spree/shipping_manifest.rb +2 -2
  62. data/app/models/spree/shipping_method.rb +2 -9
  63. data/app/models/spree/shipping_rate.rb +1 -1
  64. data/app/models/spree/shipping_rate_tax.rb +1 -1
  65. data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
  66. data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
  67. data/app/models/spree/stock/package.rb +1 -1
  68. data/app/models/spree/stock/simple_coordinator.rb +1 -3
  69. data/app/models/spree/stock_item.rb +2 -8
  70. data/app/models/spree/stock_movement.rb +2 -0
  71. data/app/models/spree/store.rb +1 -1
  72. data/app/models/spree/store_credit.rb +1 -7
  73. data/app/models/spree/store_credit_category.rb +30 -3
  74. data/app/models/spree/store_credit_event.rb +1 -7
  75. data/app/models/spree/store_credit_reason.rb +0 -4
  76. data/app/models/spree/tax/tax_helpers.rb +1 -1
  77. data/app/models/spree/tax_category.rb +2 -8
  78. data/app/models/spree/tax_rate.rb +7 -7
  79. data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
  80. data/app/models/spree/taxon.rb +1 -1
  81. data/app/models/spree/user_address.rb +8 -2
  82. data/app/models/spree/variant.rb +7 -13
  83. data/app/models/spree/variant_property_rule.rb +5 -1
  84. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +8 -3
  85. data/app/models/spree/zone.rb +1 -1
  86. data/config/locales/en.yml +44 -5
  87. data/db/default/spree/countries.rb +1 -1
  88. data/db/default/spree/states.rb +12 -4
  89. data/db/default/spree/store_credit.rb +2 -2
  90. data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
  91. data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
  92. data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
  93. data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
  94. data/lib/generators/solidus/install/install_generator.rb +253 -0
  95. data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +36 -5
  96. data/lib/generators/spree/install/install_generator.rb +7 -189
  97. data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
  98. data/lib/spree/app_configuration.rb +117 -51
  99. data/lib/spree/awesome_nested_set_override.rb +44 -0
  100. data/lib/spree/core/controller_helpers/auth.rb +17 -4
  101. data/lib/spree/core/controller_helpers/current_host.rb +17 -0
  102. data/lib/spree/core/controller_helpers/order.rb +8 -7
  103. data/lib/spree/core/controller_helpers/strong_parameters.rb +21 -7
  104. data/lib/spree/core/engine.rb +39 -2
  105. data/lib/spree/core/importer/order.rb +26 -11
  106. data/lib/spree/core/permalinks.rb +1 -3
  107. data/lib/spree/core/product_filters.rb +6 -5
  108. data/lib/spree/core/state_machines/order.rb +249 -0
  109. data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
  110. data/lib/spree/core/state_machines.rb +20 -1
  111. data/lib/spree/core/version.rb +1 -1
  112. data/lib/spree/core.rb +5 -11
  113. data/lib/spree/encryptor.rb +25 -0
  114. data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
  115. data/lib/spree/event/configuration.rb +11 -6
  116. data/lib/spree/event/subscriber.rb +38 -18
  117. data/lib/spree/event/subscriber_registry.rb +92 -0
  118. data/lib/spree/event.rb +40 -7
  119. data/lib/spree/i18n.rb +1 -1
  120. data/lib/spree/mailer_previews/carton_preview.rb +2 -1
  121. data/lib/spree/paranoia_deprecations.rb +32 -12
  122. data/lib/spree/permission_sets/configuration_display.rb +14 -14
  123. data/lib/spree/permission_sets/default_customer.rb +16 -16
  124. data/lib/spree/permission_sets/order_display.rb +11 -11
  125. data/lib/spree/permission_sets/order_management.rb +1 -1
  126. data/lib/spree/permission_sets/product_display.rb +9 -9
  127. data/lib/spree/permission_sets/promotion_display.rb +5 -5
  128. data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
  129. data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
  130. data/lib/spree/permission_sets/stock_display.rb +2 -2
  131. data/lib/spree/permission_sets/stock_management.rb +1 -1
  132. data/lib/spree/permission_sets/user_display.rb +3 -3
  133. data/lib/spree/permission_sets/user_management.rb +4 -3
  134. data/lib/spree/permitted_attributes.rb +79 -9
  135. data/lib/spree/preferences/preferable.rb +4 -3
  136. data/lib/spree/preferences/preferable_class_methods.rb +22 -3
  137. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  138. data/lib/spree/testing_support/authorization_helpers.rb +1 -0
  139. data/lib/spree/testing_support/blacklist_urls.rb +23 -0
  140. data/lib/spree/testing_support/capybara_ext.rb +3 -0
  141. data/lib/spree/testing_support/common_rake.rb +3 -3
  142. data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
  143. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
  144. data/lib/spree/testing_support/dummy_app.rb +44 -23
  145. data/lib/spree/testing_support/factories/address_factory.rb +1 -2
  146. data/lib/spree/testing_support/factories/image_factory.rb +1 -1
  147. data/lib/spree/testing_support/factories/promotion_factory.rb +6 -0
  148. data/lib/spree/testing_support/factories/refund_factory.rb +1 -0
  149. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  150. data/lib/spree/testing_support/factories/return_item_factory.rb +0 -1
  151. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +8 -0
  152. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +1 -0
  153. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +3 -1
  154. data/lib/spree/testing_support/factories/taxon_factory.rb +4 -0
  155. data/lib/spree/testing_support/factories/user_factory.rb +4 -1
  156. data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
  157. data/lib/spree/testing_support/job_helpers.rb +24 -0
  158. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  159. data/lib/spree/testing_support/preferences.rb +3 -1
  160. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  161. data/lib/spree/testing_support/translations.rb +25 -0
  162. data/solidus_core.gemspec +8 -5
  163. metadata +81 -359
  164. data/script/rails +0 -10
  165. data/spec/fixtures/thinking-cat.jpg +0 -0
  166. data/spec/helpers/base_helper_spec.rb +0 -168
  167. data/spec/helpers/products_helper_spec.rb +0 -202
  168. data/spec/helpers/taxons_helper_spec.rb +0 -43
  169. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  170. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  171. data/spec/lib/i18n_spec.rb +0 -97
  172. data/spec/lib/search/base_spec.rb +0 -91
  173. data/spec/lib/search/variant_spec.rb +0 -115
  174. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  175. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  176. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  177. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  178. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  179. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  180. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  181. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  182. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -41
  183. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  184. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  185. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  186. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  187. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
  188. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  189. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  190. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  191. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  192. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  193. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  194. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  195. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  196. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  197. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  198. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  199. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  200. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  201. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  202. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  203. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  204. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  205. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  206. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  207. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  208. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  209. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  210. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  211. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  212. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  213. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  214. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  215. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  216. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  217. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  218. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  219. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  220. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  221. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  222. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  223. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  224. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  225. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  226. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  227. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  228. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  229. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  230. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  231. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  232. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  233. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  234. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  235. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  236. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  237. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  238. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  239. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  240. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  241. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  242. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  243. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  244. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  245. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  246. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  247. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  248. data/spec/lib/spree/core/version_spec.rb +0 -19
  249. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  250. data/spec/lib/spree/event_spec.rb +0 -130
  251. data/spec/lib/spree/localized_number_spec.rb +0 -45
  252. data/spec/lib/spree/migrations_spec.rb +0 -32
  253. data/spec/lib/spree/money_spec.rb +0 -298
  254. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  255. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  256. data/spec/lib/tasks/dummy_task.rake +0 -12
  257. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  258. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  259. data/spec/mailers/carton_mailer_spec.rb +0 -44
  260. data/spec/mailers/order_mailer_spec.rb +0 -117
  261. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  262. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  263. data/spec/mailers/test_mailer_spec.rb +0 -13
  264. data/spec/models/spree/ability_spec.rb +0 -279
  265. data/spec/models/spree/address_spec.rb +0 -399
  266. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  267. data/spec/models/spree/adjustment_spec.rb +0 -339
  268. data/spec/models/spree/asset_spec.rb +0 -25
  269. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  270. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  271. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  272. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  273. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  274. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  275. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  276. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  277. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  278. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  279. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  280. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  281. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  282. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  283. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
  284. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  285. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  286. data/spec/models/spree/calculator_spec.rb +0 -43
  287. data/spec/models/spree/carton_spec.rb +0 -145
  288. data/spec/models/spree/classification_spec.rb +0 -126
  289. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  290. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  291. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  292. data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
  293. data/spec/models/spree/country_spec.rb +0 -154
  294. data/spec/models/spree/credit_card_spec.rb +0 -373
  295. data/spec/models/spree/customer_return_spec.rb +0 -294
  296. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  297. data/spec/models/spree/exchange_spec.rb +0 -76
  298. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  299. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  300. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  301. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  302. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  303. data/spec/models/spree/gateway_spec.rb +0 -14
  304. data/spec/models/spree/image_spec.rb +0 -25
  305. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  306. data/spec/models/spree/line_item_spec.rb +0 -240
  307. data/spec/models/spree/option_type_spec.rb +0 -16
  308. data/spec/models/spree/option_value_spec.rb +0 -52
  309. data/spec/models/spree/order/address_spec.rb +0 -52
  310. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  311. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  312. data/spec/models/spree/order/checkout_spec.rb +0 -740
  313. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  314. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  315. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  316. data/spec/models/spree/order/payment_spec.rb +0 -280
  317. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  318. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  319. data/spec/models/spree/order/totals_spec.rb +0 -26
  320. data/spec/models/spree/order/validations_spec.rb +0 -17
  321. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  322. data/spec/models/spree/order_capturing_spec.rb +0 -16
  323. data/spec/models/spree/order_contents_spec.rb +0 -362
  324. data/spec/models/spree/order_inventory_spec.rb +0 -285
  325. data/spec/models/spree/order_merger_spec.rb +0 -162
  326. data/spec/models/spree/order_mutex_spec.rb +0 -89
  327. data/spec/models/spree/order_promotion_spec.rb +0 -33
  328. data/spec/models/spree/order_shipping_spec.rb +0 -247
  329. data/spec/models/spree/order_spec.rb +0 -1687
  330. data/spec/models/spree/order_taxation_spec.rb +0 -128
  331. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  332. data/spec/models/spree/order_updater_spec.rb +0 -556
  333. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  334. data/spec/models/spree/payment_create_spec.rb +0 -195
  335. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  336. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  337. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  338. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  339. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  340. data/spec/models/spree/payment_method_spec.rb +0 -408
  341. data/spec/models/spree/payment_spec.rb +0 -1270
  342. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  343. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  344. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  345. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  346. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  347. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  348. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  349. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  350. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  351. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  352. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  353. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  354. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  355. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  356. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  357. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
  358. data/spec/models/spree/preference_spec.rb +0 -79
  359. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  360. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  361. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  362. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  363. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  364. data/spec/models/spree/preferences/store_spec.rb +0 -40
  365. data/spec/models/spree/price_spec.rb +0 -150
  366. data/spec/models/spree/product/scopes_spec.rb +0 -164
  367. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  368. data/spec/models/spree/product_filter_spec.rb +0 -28
  369. data/spec/models/spree/product_property_spec.rb +0 -20
  370. data/spec/models/spree/product_spec.rb +0 -584
  371. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  372. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  373. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  374. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  375. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  376. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  377. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  378. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  379. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  380. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  381. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  382. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  383. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -226
  384. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  385. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  386. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  387. data/spec/models/spree/promotion_action_spec.rb +0 -44
  388. data/spec/models/spree/promotion_category_spec.rb +0 -19
  389. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  390. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  391. data/spec/models/spree/promotion_code_spec.rb +0 -206
  392. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  393. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  394. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  395. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  396. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  397. data/spec/models/spree/promotion_spec.rb +0 -945
  398. data/spec/models/spree/refund_spec.rb +0 -200
  399. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  400. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  401. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  402. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  403. data/spec/models/spree/reimbursement_spec.rb +0 -278
  404. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  405. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  406. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  407. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  408. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  409. data/spec/models/spree/return_authorization_spec.rb +0 -226
  410. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  411. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  412. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  413. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  414. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  415. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  416. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  417. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  418. data/spec/models/spree/return_item_spec.rb +0 -785
  419. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  420. data/spec/models/spree/shipment_spec.rb +0 -914
  421. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  422. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  423. data/spec/models/spree/shipping_method_spec.rb +0 -292
  424. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  425. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  426. data/spec/models/spree/state_spec.rb +0 -43
  427. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  428. data/spec/models/spree/stock/availability_spec.rb +0 -143
  429. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  430. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  431. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  432. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  433. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  434. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  435. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  436. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  437. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  438. data/spec/models/spree/stock/package_spec.rb +0 -182
  439. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  440. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  441. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  442. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  443. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  444. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  445. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  446. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  447. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  448. data/spec/models/spree/stock_item_spec.rb +0 -348
  449. data/spec/models/spree/stock_location_spec.rb +0 -288
  450. data/spec/models/spree/stock_movement_spec.rb +0 -58
  451. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  452. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  453. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  454. data/spec/models/spree/store_credit_spec.rb +0 -900
  455. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  456. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  457. data/spec/models/spree/store_spec.rb +0 -156
  458. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  459. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  460. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  461. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  462. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  463. data/spec/models/spree/tax_category_spec.rb +0 -50
  464. data/spec/models/spree/tax_rate_spec.rb +0 -317
  465. data/spec/models/spree/taxon_spec.rb +0 -197
  466. data/spec/models/spree/taxonomy_spec.rb +0 -15
  467. data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
  468. data/spec/models/spree/unit_cancel_spec.rb +0 -126
  469. data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
  470. data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
  471. data/spec/models/spree/user_spec.rb +0 -247
  472. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  473. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  474. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  475. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  476. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  477. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  478. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  479. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  480. data/spec/models/spree/variant_spec.rb +0 -862
  481. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  482. data/spec/models/spree/wallet_spec.rb +0 -155
  483. data/spec/models/spree/zone_spec.rb +0 -248
  484. data/spec/rails_helper.rb +0 -46
  485. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  486. data/spec/spec_helper.rb +0 -36
  487. data/spec/support/big_decimal.rb +0 -7
  488. data/spec/support/concerns/default_price.rb +0 -44
  489. data/spec/support/concerns/payment_source.rb +0 -66
  490. data/spec/support/concerns/working_factories.rb +0 -15
  491. data/spec/support/dummy_ability.rb +0 -7
  492. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
  493. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
  494. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
  495. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
@@ -1,241 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- module Stock
7
- RSpec.describe Estimator, type: :model do
8
- let(:shipping_rate) { 4.00 }
9
- let!(:shipping_method) { create(:shipping_method, cost: shipping_rate, currency: currency) }
10
- let(:package) do
11
- build(:stock_package, contents: inventory_units.map { |unit| ContentItem.new(unit) }).tap do |package|
12
- package.shipment = package.to_shipment
13
- end
14
- end
15
- let(:order) { create(:order_with_line_items, shipping_method: shipping_method) }
16
- let(:inventory_units) { order.inventory_units }
17
-
18
- subject { Estimator.new }
19
-
20
- context "#shipping rates" do
21
- before(:each) do
22
- shipping_method.zones.first.members.create(zoneable: order.ship_address.country)
23
- end
24
-
25
- let(:currency) { "USD" }
26
-
27
- context 'without a shipment' do
28
- before { package.shipment = nil }
29
- it 'raises an error' do
30
- expect {
31
- subject.shipping_rates(package)
32
- }.to raise_error(Spree::Stock::Estimator::ShipmentRequired)
33
- end
34
- end
35
-
36
- context 'without an order' do
37
- before { package.shipment.order = nil }
38
- it 'raises an error' do
39
- expect {
40
- subject.shipping_rates(package)
41
- }.to raise_error(Spree::Stock::Estimator::OrderRequired)
42
- end
43
- end
44
-
45
- shared_examples_for "shipping rate matches" do
46
- it "returns shipping rates" do
47
- shipping_rates = subject.shipping_rates(package)
48
- expect(shipping_rates.first.cost).to eq 4.00
49
- end
50
- end
51
-
52
- shared_examples_for "shipping rate doesn't match" do
53
- it "does not return shipping rates" do
54
- shipping_rates = subject.shipping_rates(package)
55
- expect(shipping_rates).to eq([])
56
- end
57
- end
58
-
59
- context "when the order's ship address is in the same zone" do
60
- it_should_behave_like "shipping rate matches"
61
- end
62
-
63
- context "when the order's ship address is in a different zone" do
64
- before { shipping_method.zones.each{ |zone| zone.members.delete_all } }
65
- it_should_behave_like "shipping rate doesn't match"
66
- end
67
-
68
- context "when the currency is nil" do
69
- let(:currency) { nil }
70
- it_should_behave_like "shipping rate matches"
71
- end
72
-
73
- context "when the currency is an empty string" do
74
- let(:currency) { "" }
75
- it_should_behave_like "shipping rate matches"
76
- end
77
-
78
- context "when the current matches the order's currency" do
79
- it_should_behave_like "shipping rate matches"
80
- end
81
-
82
- context "if the currency is different than the order's currency" do
83
- let(:currency) { "GBP" }
84
- it_should_behave_like "shipping rate doesn't match"
85
- end
86
-
87
- it "sorts shipping rates by cost" do
88
- ShippingMethod.all.each(&:really_destroy!)
89
- create(:shipping_method, cost: 5)
90
- create(:shipping_method, cost: 3)
91
- create(:shipping_method, cost: 4)
92
-
93
- expect(subject.shipping_rates(package).map(&:cost)).to eq [3.00, 4.00, 5.00]
94
- end
95
-
96
- context "general shipping methods" do
97
- before { Spree::ShippingMethod.all.each(&:really_destroy!) }
98
-
99
- context 'with two shipping methods of different cost' do
100
- let!(:shipping_methods) do
101
- [
102
- create(:shipping_method, cost: 5),
103
- create(:shipping_method, cost: 3)
104
- ]
105
- end
106
-
107
- it "selects the most affordable shipping rate" do
108
- expect(subject.shipping_rates(package).sort_by(&:cost).map(&:selected)).to eq [true, false]
109
- end
110
- end
111
-
112
- context 'with one of the shipping methods having nil cost' do
113
- let!(:shipping_methods) do
114
- [
115
- create(:shipping_method, cost: 1),
116
- create(:shipping_method, cost: nil)
117
- ]
118
- end
119
-
120
- it "selects the most affordable shipping rate and doesn't raise exception over nil cost" do
121
- allow(shipping_methods[1]).to receive_message_chain(:calculator, :compute).and_return(nil)
122
- allow(subject).to receive(:shipping_methods).and_return(shipping_methods)
123
-
124
- expect(subject.shipping_rates(package).map(&:shipping_method)).to eq([shipping_methods[0]])
125
- end
126
- end
127
- end
128
-
129
- context "involves backend only shipping methods" do
130
- before{ Spree::ShippingMethod.all.each(&:really_destroy!) }
131
- let!(:backend_method) { create(:shipping_method, available_to_users: false, cost: 0.00) }
132
- let!(:generic_method) { create(:shipping_method, cost: 5.00) }
133
-
134
- it "does not return backend rates at all" do
135
- expect(subject.shipping_rates(package).map(&:shipping_method_id)).to eq([generic_method.id])
136
- end
137
-
138
- # regression for https://github.com/spree/spree/issues/3287
139
- it "doesn't select backend rates even if they're more affordable" do
140
- expect(subject.shipping_rates(package).map(&:selected)).to eq [true]
141
- end
142
- end
143
-
144
- context "excludes shipping methods from other stores" do
145
- before{ Spree::ShippingMethod.all.each(&:really_destroy!) }
146
-
147
- let!(:other_method) do
148
- create(
149
- :shipping_method,
150
- cost: 0.00,
151
- stores: [build(:store, name: "Other")]
152
- )
153
- end
154
-
155
- let!(:main_method) do
156
- create(
157
- :shipping_method,
158
- cost: 5.00,
159
- stores: [order.store]
160
- )
161
- end
162
-
163
- it "does not return the other rate at all" do
164
- expect(subject.shipping_rates(package).map(&:shipping_method_id)).to eq([main_method.id])
165
- end
166
-
167
- it "doesn't select the other rate even if it's more affordable" do
168
- expect(subject.shipping_rates(package).map(&:selected)).to eq [true]
169
- end
170
- end
171
-
172
- context "includes tax adjustments if applicable" do
173
- let(:zone) { create(:zone, countries: [order.tax_address.country]) }
174
-
175
- let!(:tax_rate) { create(:tax_rate, zone: zone) }
176
-
177
- before do
178
- shipping_method.update!(tax_category: tax_rate.tax_categories.first)
179
- end
180
-
181
- it "links the shipping rate and the tax rate" do
182
- shipping_rates = subject.shipping_rates(package)
183
- expect(shipping_rates.first.taxes.first.tax_rate).to eq(tax_rate)
184
- end
185
- end
186
-
187
- it 'uses the configured shipping rate selector' do
188
- shipping_rate = build(:shipping_rate)
189
- allow(Spree::ShippingRate).to receive(:new).and_return(shipping_rate)
190
-
191
- selector_class = Class.new do
192
- def initialize(_); end;
193
-
194
- def find_default
195
- Spree::ShippingRate.new
196
- end
197
- end
198
- stub_spree_preferences(shipping_rate_selector_class: selector_class)
199
-
200
- subject.shipping_rates(package)
201
-
202
- expect(shipping_rate.selected).to eq(true)
203
- end
204
-
205
- it 'uses the configured shipping rate sorter' do
206
- class Spree::Stock::TestSorter
207
- def initialize(_rates)
208
- end
209
- end
210
-
211
- stub_spree_preferences(shipping_rate_sorter_class: Spree::Stock::TestSorter)
212
-
213
- sorter = double(:sorter, sort: nil)
214
- allow(Spree::Stock::TestSorter).to receive(:new) { sorter }
215
-
216
- subject.shipping_rates(package)
217
-
218
- expect(sorter).to have_received(:sort)
219
- end
220
-
221
- it 'uses the configured shipping rate taxer' do
222
- class Spree::Tax::TestTaxCalculator
223
- def initialize(_order)
224
- end
225
-
226
- def calculate(_shipping_rate)
227
- [
228
- Spree::Tax::ItemTax.new(label: "TAX", amount: 5)
229
- ]
230
- end
231
- end
232
-
233
- stub_spree_preferences(shipping_rate_tax_calculator_class: Spree::Tax::TestTaxCalculator)
234
-
235
- expect(Spree::Tax::TestTaxCalculator).to receive(:new).and_call_original
236
- subject.shipping_rates(package)
237
- end
238
- end
239
- end
240
- end
241
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- module Stock
7
- RSpec.describe InventoryUnitBuilder, type: :model do
8
- let(:line_item_1) { build(:line_item) }
9
- let(:line_item_2) { build(:line_item, quantity: 2) }
10
- let(:order) { build(:order, line_items: [line_item_1, line_item_2]) }
11
-
12
- subject { InventoryUnitBuilder.new(order) }
13
-
14
- describe "#units" do
15
- it "returns an inventory unit for each quantity for the order's line items" do
16
- units = subject.units
17
- expect(units.count).to eq 3
18
- expect(units.first.line_item).to eq line_item_1
19
- expect(units.first.variant).to eq line_item_1.variant
20
-
21
- expect(units[1].line_item).to eq line_item_2
22
- expect(units[1].variant).to eq line_item_2.variant
23
-
24
- expect(units[2].line_item).to eq line_item_2
25
- expect(units[2].variant).to eq line_item_2.variant
26
- end
27
-
28
- it "builds the inventory units as pending" do
29
- expect(subject.units.map(&:pending).uniq).to eq [true]
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,58 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- module Stock
7
- RSpec.describe InventoryUnitsFinalizer, type: :model do
8
- context "when finalizing an order with one line_item" do
9
- let(:order) { build(:order_with_line_items) }
10
- let(:inventory_unit) { build(:inventory_unit, order: order, variant: order.line_items.first.variant, shipment: order.shipments.first) }
11
- let(:stock_item) { inventory_unit.variant.stock_items.first }
12
-
13
- before do
14
- stock_item.set_count_on_hand(10)
15
- stock_item.update!(backorderable: false)
16
- inventory_unit.update!(pending: true)
17
- end
18
-
19
- subject { described_class.new([inventory_unit]).run! }
20
-
21
- it "updates the associated inventory units" do
22
- inventory_unit.update_columns(updated_at: 1.hour.ago)
23
- expect { subject }.to change { inventory_unit.reload.updated_at }
24
- end
25
-
26
- it "updates the inventory units to not be pending" do
27
- expect { subject }.to change { inventory_unit.reload.pending }.to(false)
28
- end
29
-
30
- it "unstocks the variant" do
31
- expect { subject }.to change { stock_item.reload.count_on_hand }.from(10).to(9)
32
- end
33
- end
34
-
35
- context "when finalizing an order with multiple line_items" do
36
- let(:order) { build(:order_with_line_items, line_items_count: 2) }
37
- let(:inventory_unit) { build(:inventory_unit, order: order, variant: order.line_items.first.variant, shipment: order.shipments.first) }
38
- let(:inventory_unit_2) { build(:inventory_unit, order: order, variant: order.line_items.second.variant, shipment: order.shipments.first) }
39
- let(:stock_item) { inventory_unit.variant.stock_items.first }
40
- let(:stock_item_2) { inventory_unit.variant.stock_items.first }
41
-
42
- before do
43
- stock_item.set_count_on_hand(10)
44
- stock_item_2.set_count_on_hand(10)
45
- inventory_unit.update!(pending: true)
46
- inventory_unit_2.update!(pending: true)
47
- end
48
-
49
- subject { described_class.new([inventory_unit, inventory_unit_2]).run! }
50
-
51
- it "unstocks the variant with the correct quantity" do
52
- expect { subject }.to change { stock_item.reload.count_on_hand }.from(10).to(9)
53
- .and change { stock_item_2.reload.count_on_hand }.from(10).to(9)
54
- end
55
- end
56
- end
57
- end
58
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- module Stock
7
- module LocationFilter
8
- RSpec.describe Active, type: :model do
9
- subject { described_class.new(stock_locations, order) }
10
-
11
- let!(:active_stock_location) { create(:stock_location) }
12
- let!(:inactive_stock_location) { create(:stock_location, active: false) }
13
- let(:stock_locations) { Spree::StockLocation.all }
14
- let(:order) { instance_double('Spree::Order') }
15
-
16
- it 'returns only active stock locations' do
17
- expect(subject.filter).to eq([active_stock_location])
18
- end
19
- end
20
- end
21
- end
22
- end
@@ -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