solidus_core 2.10.2 → 2.11.3

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.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 +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.rb +91 -20
  31. data/app/models/spree/order/checkout.rb +1 -0
  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.rb +3 -3
  37. data/app/models/spree/payment/cancellation.rb +3 -3
  38. data/app/models/spree/payment/processing.rb +54 -30
  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.rb +19 -14
  43. data/app/models/spree/product/scopes.rb +9 -4
  44. data/app/models/spree/promotion.rb +18 -7
  45. data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
  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 +60 -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.rb +21 -10
  57. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
  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.rb +1 -1
  80. data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
  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 → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
  97. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
  98. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
  99. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
  100. data/lib/generators/spree/install/install_generator.rb +7 -189
  101. data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
  102. data/lib/spree/app_configuration.rb +117 -51
  103. data/lib/spree/awesome_nested_set_override.rb +44 -0
  104. data/lib/spree/core.rb +5 -11
  105. data/lib/spree/core/controller_helpers/auth.rb +17 -4
  106. data/lib/spree/core/controller_helpers/current_host.rb +17 -0
  107. data/lib/spree/core/controller_helpers/order.rb +8 -7
  108. data/lib/spree/core/engine.rb +39 -2
  109. data/lib/spree/core/importer/order.rb +24 -10
  110. data/lib/spree/core/permalinks.rb +1 -3
  111. data/lib/spree/core/product_filters.rb +6 -5
  112. data/lib/spree/core/state_machines.rb +20 -1
  113. data/lib/spree/core/state_machines/order.rb +249 -0
  114. data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
  115. data/lib/spree/core/version.rb +1 -1
  116. data/lib/spree/encryptor.rb +25 -0
  117. data/lib/spree/event.rb +40 -7
  118. data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
  119. data/lib/spree/event/configuration.rb +11 -6
  120. data/lib/spree/event/subscriber.rb +38 -18
  121. data/lib/spree/event/subscriber_registry.rb +92 -0
  122. data/lib/spree/i18n.rb +1 -1
  123. data/lib/spree/mailer_previews/carton_preview.rb +2 -1
  124. data/lib/spree/paranoia_deprecations.rb +32 -12
  125. data/lib/spree/permission_sets/configuration_display.rb +14 -14
  126. data/lib/spree/permission_sets/default_customer.rb +16 -16
  127. data/lib/spree/permission_sets/order_display.rb +11 -11
  128. data/lib/spree/permission_sets/order_management.rb +1 -1
  129. data/lib/spree/permission_sets/product_display.rb +9 -9
  130. data/lib/spree/permission_sets/promotion_display.rb +5 -5
  131. data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
  132. data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
  133. data/lib/spree/permission_sets/stock_display.rb +2 -2
  134. data/lib/spree/permission_sets/stock_management.rb +1 -1
  135. data/lib/spree/permission_sets/user_display.rb +3 -3
  136. data/lib/spree/permission_sets/user_management.rb +4 -3
  137. data/lib/spree/permitted_attributes.rb +4 -3
  138. data/lib/spree/preferences/preferable.rb +4 -3
  139. data/lib/spree/preferences/preferable_class_methods.rb +22 -3
  140. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  141. data/lib/spree/testing_support/authorization_helpers.rb +1 -0
  142. data/lib/spree/testing_support/blacklist_urls.rb +23 -0
  143. data/lib/spree/testing_support/capybara_ext.rb +3 -0
  144. data/lib/spree/testing_support/common_rake.rb +3 -3
  145. data/lib/spree/testing_support/dummy_app.rb +44 -23
  146. data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
  147. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
  148. data/lib/spree/testing_support/factories/address_factory.rb +1 -2
  149. data/lib/spree/testing_support/factories/image_factory.rb +1 -1
  150. data/lib/spree/testing_support/factories/promotion_factory.rb +6 -0
  151. data/lib/spree/testing_support/factories/refund_factory.rb +1 -0
  152. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  153. data/lib/spree/testing_support/factories/return_item_factory.rb +0 -1
  154. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +8 -0
  155. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +1 -0
  156. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +3 -1
  157. data/lib/spree/testing_support/factories/taxon_factory.rb +4 -0
  158. data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
  159. data/lib/spree/testing_support/fixtures/blank.jpg +0 -0
  160. data/lib/spree/testing_support/job_helpers.rb +24 -0
  161. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  162. data/lib/spree/testing_support/preferences.rb +3 -1
  163. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  164. data/lib/spree/testing_support/translations.rb +25 -0
  165. data/solidus_core.gemspec +8 -5
  166. metadata +99 -377
  167. data/script/rails +0 -10
  168. data/spec/fixtures/thinking-cat.jpg +0 -0
  169. data/spec/helpers/base_helper_spec.rb +0 -168
  170. data/spec/helpers/products_helper_spec.rb +0 -202
  171. data/spec/helpers/taxons_helper_spec.rb +0 -43
  172. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  173. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  174. data/spec/lib/i18n_spec.rb +0 -97
  175. data/spec/lib/search/base_spec.rb +0 -91
  176. data/spec/lib/search/variant_spec.rb +0 -115
  177. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  178. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  179. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  180. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  181. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  182. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  183. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  184. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  185. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -48
  186. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  187. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  188. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  189. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  190. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
  191. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  192. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  193. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  194. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  195. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  196. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  197. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  198. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  199. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  200. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  201. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  202. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  203. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  204. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  205. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  206. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  207. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  208. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  209. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  210. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  211. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  212. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  213. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  214. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  215. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  216. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  217. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  218. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  219. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  220. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  221. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  222. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  223. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  224. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  225. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  226. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  227. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  228. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  229. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  230. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  231. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  232. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  233. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  234. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  235. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  236. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  237. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  238. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  239. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  240. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  241. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  242. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  243. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  244. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  245. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  246. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  247. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  248. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  249. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  250. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  251. data/spec/lib/spree/core/version_spec.rb +0 -19
  252. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  253. data/spec/lib/spree/event_spec.rb +0 -130
  254. data/spec/lib/spree/localized_number_spec.rb +0 -45
  255. data/spec/lib/spree/migrations_spec.rb +0 -32
  256. data/spec/lib/spree/money_spec.rb +0 -298
  257. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  258. data/spec/lib/spree/permitted_attributes_spec.rb +0 -41
  259. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  260. data/spec/lib/tasks/dummy_task.rake +0 -12
  261. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  262. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  263. data/spec/mailers/carton_mailer_spec.rb +0 -44
  264. data/spec/mailers/order_mailer_spec.rb +0 -117
  265. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  266. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  267. data/spec/mailers/test_mailer_spec.rb +0 -13
  268. data/spec/models/spree/ability_spec.rb +0 -279
  269. data/spec/models/spree/address_spec.rb +0 -399
  270. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  271. data/spec/models/spree/adjustment_spec.rb +0 -339
  272. data/spec/models/spree/asset_spec.rb +0 -25
  273. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  274. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  275. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  276. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  277. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  278. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  279. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  280. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  281. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  282. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  283. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  284. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  285. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  286. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  287. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
  288. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  289. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  290. data/spec/models/spree/calculator_spec.rb +0 -43
  291. data/spec/models/spree/carton_spec.rb +0 -145
  292. data/spec/models/spree/classification_spec.rb +0 -126
  293. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  294. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  295. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  296. data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
  297. data/spec/models/spree/country_spec.rb +0 -154
  298. data/spec/models/spree/credit_card_spec.rb +0 -373
  299. data/spec/models/spree/customer_return_spec.rb +0 -294
  300. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  301. data/spec/models/spree/exchange_spec.rb +0 -76
  302. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  303. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  304. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  305. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  306. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  307. data/spec/models/spree/gateway_spec.rb +0 -14
  308. data/spec/models/spree/image_spec.rb +0 -25
  309. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  310. data/spec/models/spree/line_item_spec.rb +0 -240
  311. data/spec/models/spree/option_type_spec.rb +0 -16
  312. data/spec/models/spree/option_value_spec.rb +0 -52
  313. data/spec/models/spree/order/address_spec.rb +0 -52
  314. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  315. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  316. data/spec/models/spree/order/checkout_spec.rb +0 -740
  317. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  318. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  319. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  320. data/spec/models/spree/order/payment_spec.rb +0 -280
  321. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  322. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  323. data/spec/models/spree/order/totals_spec.rb +0 -26
  324. data/spec/models/spree/order/validations_spec.rb +0 -17
  325. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  326. data/spec/models/spree/order_capturing_spec.rb +0 -16
  327. data/spec/models/spree/order_contents_spec.rb +0 -362
  328. data/spec/models/spree/order_inventory_spec.rb +0 -285
  329. data/spec/models/spree/order_merger_spec.rb +0 -162
  330. data/spec/models/spree/order_mutex_spec.rb +0 -89
  331. data/spec/models/spree/order_promotion_spec.rb +0 -33
  332. data/spec/models/spree/order_shipping_spec.rb +0 -247
  333. data/spec/models/spree/order_spec.rb +0 -1687
  334. data/spec/models/spree/order_taxation_spec.rb +0 -128
  335. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  336. data/spec/models/spree/order_updater_spec.rb +0 -556
  337. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  338. data/spec/models/spree/payment_create_spec.rb +0 -195
  339. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  340. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  341. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  342. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  343. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  344. data/spec/models/spree/payment_method_spec.rb +0 -408
  345. data/spec/models/spree/payment_spec.rb +0 -1270
  346. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  347. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  348. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  349. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  350. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  351. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  352. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  353. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  354. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  355. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  356. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  357. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  358. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  359. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  360. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  361. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
  362. data/spec/models/spree/preference_spec.rb +0 -79
  363. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  364. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  365. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  366. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  367. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  368. data/spec/models/spree/preferences/store_spec.rb +0 -40
  369. data/spec/models/spree/price_spec.rb +0 -150
  370. data/spec/models/spree/product/scopes_spec.rb +0 -164
  371. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  372. data/spec/models/spree/product_filter_spec.rb +0 -28
  373. data/spec/models/spree/product_property_spec.rb +0 -20
  374. data/spec/models/spree/product_spec.rb +0 -584
  375. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  376. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  377. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  378. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  379. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  380. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  381. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  382. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  383. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  384. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  385. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  386. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  387. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -227
  388. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  389. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  390. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  391. data/spec/models/spree/promotion_action_spec.rb +0 -44
  392. data/spec/models/spree/promotion_category_spec.rb +0 -19
  393. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  394. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  395. data/spec/models/spree/promotion_code_spec.rb +0 -206
  396. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  397. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  398. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  399. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  400. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  401. data/spec/models/spree/promotion_spec.rb +0 -945
  402. data/spec/models/spree/refund_spec.rb +0 -200
  403. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  404. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  405. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  406. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  407. data/spec/models/spree/reimbursement_spec.rb +0 -278
  408. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  409. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  410. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  411. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  412. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  413. data/spec/models/spree/return_authorization_spec.rb +0 -226
  414. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  415. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  416. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  417. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  418. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  419. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  420. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  421. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  422. data/spec/models/spree/return_item_spec.rb +0 -785
  423. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  424. data/spec/models/spree/shipment_spec.rb +0 -914
  425. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  426. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  427. data/spec/models/spree/shipping_method_spec.rb +0 -292
  428. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  429. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  430. data/spec/models/spree/state_spec.rb +0 -43
  431. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  432. data/spec/models/spree/stock/availability_spec.rb +0 -143
  433. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  434. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  435. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  436. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  437. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  438. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  439. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  440. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  441. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  442. data/spec/models/spree/stock/package_spec.rb +0 -182
  443. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  444. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  445. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  446. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  447. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  448. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  449. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  450. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  451. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  452. data/spec/models/spree/stock_item_spec.rb +0 -348
  453. data/spec/models/spree/stock_location_spec.rb +0 -288
  454. data/spec/models/spree/stock_movement_spec.rb +0 -58
  455. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  456. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  457. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  458. data/spec/models/spree/store_credit_spec.rb +0 -900
  459. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  460. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  461. data/spec/models/spree/store_spec.rb +0 -156
  462. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  463. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  464. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  465. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  466. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  467. data/spec/models/spree/tax_category_spec.rb +0 -50
  468. data/spec/models/spree/tax_rate_spec.rb +0 -317
  469. data/spec/models/spree/taxon_spec.rb +0 -197
  470. data/spec/models/spree/taxonomy_spec.rb +0 -15
  471. data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
  472. data/spec/models/spree/unit_cancel_spec.rb +0 -126
  473. data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
  474. data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
  475. data/spec/models/spree/user_spec.rb +0 -247
  476. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  477. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  478. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  479. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  480. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  481. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  482. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  483. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  484. data/spec/models/spree/variant_spec.rb +0 -862
  485. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  486. data/spec/models/spree/wallet_spec.rb +0 -155
  487. data/spec/models/spree/zone_spec.rb +0 -248
  488. data/spec/rails_helper.rb +0 -46
  489. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  490. data/spec/spec_helper.rb +0 -36
  491. data/spec/support/big_decimal.rb +0 -7
  492. data/spec/support/concerns/default_price.rb +0 -44
  493. data/spec/support/concerns/payment_source.rb +0 -66
  494. data/spec/support/concerns/working_factories.rb +0 -15
  495. data/spec/support/dummy_ability.rb +0 -7
@@ -1,110 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- RSpec.describe ReimbursementType::OriginalPayment, type: :model do
7
- let(:reimbursement) { create(:reimbursement, return_items_count: 1) }
8
- let(:return_item) { reimbursement.return_items.first }
9
- let(:payment) { reimbursement.order.payments.first }
10
- let(:simulate) { false }
11
- let!(:default_refund_reason) { Spree::RefundReason.find_or_create_by!(name: Spree::RefundReason::RETURN_PROCESSING_REASON, mutable: false) }
12
- let(:created_by_user) { create(:user, email: 'user@email.com') }
13
-
14
- subject { Spree::ReimbursementType::OriginalPayment.reimburse(reimbursement, [return_item], simulate, created_by: created_by_user) }
15
-
16
- before { reimbursement.update!(total: reimbursement.calculated_total) }
17
-
18
- describe ".reimburse" do
19
- context "simulate is true" do
20
- let(:simulate) { true }
21
-
22
- it "returns an array of readonly refunds" do
23
- expect(subject.map(&:class)).to eq [Spree::Refund]
24
- expect(subject.map(&:readonly?)).to eq [true]
25
- end
26
- end
27
-
28
- context "simulate is false" do
29
- it 'performs the refund' do
30
- expect {
31
- subject
32
- }.to change { payment.refunds.count }.by(1)
33
- expect(payment.refunds.sum(:amount)).to eq reimbursement.return_items.to_a.sum(&:total)
34
- end
35
- end
36
-
37
- context 'when no credit is allowed on the payment' do
38
- before do
39
- expect_any_instance_of(Spree::Payment).to receive(:credit_allowed).and_return 0
40
- end
41
-
42
- it 'returns an empty array' do
43
- expect(subject).to eq []
44
- end
45
- end
46
-
47
- context 'when a payment is negative' do
48
- before do
49
- expect_any_instance_of(Spree::Payment).to receive(:amount).and_return(-100)
50
- end
51
-
52
- it 'returns an empty array' do
53
- expect(subject).to eq []
54
- end
55
- end
56
-
57
- context "multiple payment methods" do
58
- let(:simulate) { true }
59
- let!(:check_payment) { create(:check_payment, order: reimbursement.order, amount: 5.0, state: "completed") }
60
- let(:payment) { reimbursement.order.payments.detect { |item| item.payment_method.is_a? Spree::PaymentMethod::BogusCreditCard } }
61
- let(:refund_amount) { 10.0 }
62
-
63
- let(:refund_payment_methods) { subject.map { |refund| refund.payment.payment_method } }
64
-
65
- before do
66
- reimbursement.order.payments.first.update!(amount: 5.0)
67
- return_item.update!(amount: refund_amount)
68
- end
69
-
70
- it "includes refunds all payment type" do
71
- expect(refund_payment_methods).to include payment.payment_method
72
- expect(refund_payment_methods).to include check_payment.payment_method
73
- end
74
-
75
- context "filtering payment methods" do
76
- around do |example|
77
- original = described_class.eligible_refund_methods
78
- described_class.eligible_refund_methods = [check_payment.payment_method.class]
79
- example.run
80
- described_class.eligible_refund_methods = original
81
- end
82
-
83
- it "does not refund to ineligible payment methods" do
84
- expect(refund_payment_methods).to eq [check_payment.payment_method]
85
- end
86
- end
87
-
88
- context "sorting payment methods" do
89
- around do |example|
90
- original = described_class.eligible_refund_methods
91
- described_class.eligible_refund_methods = [check_payment.payment_method.class, payment.payment_method.class]
92
- example.run
93
- described_class.eligible_refund_methods = original
94
- end
95
-
96
- it "respects configured payment type sort order" do
97
- expect(refund_payment_methods).to eq [check_payment.payment_method, payment.payment_method]
98
- end
99
-
100
- context "only one refund is necessary" do
101
- let(:refund_amount) { 4.0 }
102
- it "only returns refunds to satisfy the refund amount" do
103
- expect(refund_payment_methods).to eq [check_payment.payment_method]
104
- end
105
- end
106
- end
107
- end
108
- end
109
- end
110
- end
@@ -1,111 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- RSpec.describe ReimbursementType::StoreCredit do
7
- let(:reimbursement) { create(:reimbursement, return_items_count: 2) }
8
- let(:return_item) { reimbursement.return_items.first }
9
- let(:return_item2) { reimbursement.return_items.last }
10
- let(:payment) { reimbursement.order.payments.first }
11
- let(:simulate) { false }
12
- let!(:default_refund_reason) { Spree::RefundReason.find_or_create_by!(name: Spree::RefundReason::RETURN_PROCESSING_REASON, mutable: false) }
13
-
14
- let!(:primary_credit_type) { create(:primary_credit_type) }
15
- let(:created_by_user) { create(:user, email: 'user@email.com') }
16
- let!(:default_reimbursement_category) { create(:store_credit_category) }
17
-
18
- subject { Spree::ReimbursementType::StoreCredit.reimburse(reimbursement, [return_item, return_item2], simulate, created_by: created_by_user) }
19
-
20
- before do
21
- reimbursement.update!(total: reimbursement.calculated_total)
22
- end
23
-
24
- describe '.reimburse' do
25
- context 'simulate is true' do
26
- let(:simulate) { true }
27
-
28
- context 'for store credits that the customer used' do
29
- before do
30
- expect(Spree::ReimbursementType::StoreCredit).to receive(:store_credit_payments).and_return([payment])
31
- end
32
-
33
- it 'creates readonly refunds for all store credit payments' do
34
- expect(subject.map(&:class)).to eq [Spree::Refund]
35
- expect(subject.map(&:readonly?)).to eq [true]
36
- end
37
-
38
- it 'does not save to the database' do
39
- expect { subject }.to_not change { payment.refunds.count }
40
- end
41
- end
42
-
43
- context 'for return items that were not paid for with store credit' do
44
- before do
45
- expect(Spree::ReimbursementType::StoreCredit).to receive(:store_credit_payments).and_return([])
46
- end
47
-
48
- context 'creates one readonly lump credit for all outstanding balance payable to the customer' do
49
- it 'creates a credit that is read only' do
50
- expect(subject.map(&:class)).to eq [Spree::Reimbursement::Credit]
51
- expect(subject.map(&:readonly?)).to eq [true]
52
- end
53
-
54
- it 'creates a credit which amounts to the sum of the return items rounded down' do
55
- expect(return_item).to receive(:total).and_return(10.0076)
56
- expect(return_item2).to receive(:total).and_return(10.0023)
57
- expect(subject.sum(&:amount)).to eq 20.0
58
- end
59
- end
60
-
61
- it 'does not save to the database' do
62
- expect { subject }.to_not change { Spree::Reimbursement::Credit.count }
63
- end
64
- end
65
- end
66
-
67
- context 'simulate is false' do
68
- let(:simulate) { false }
69
-
70
- context 'for store credits that the customer used' do
71
- before do
72
- expect(Spree::ReimbursementType::StoreCredit).to receive(:store_credit_payments).and_return([payment])
73
- end
74
-
75
- it 'performs refunds for all store credit payments' do
76
- expect { subject }.to change { payment.refunds.count }.by(1)
77
- expect(payment.refunds.sum(:amount)).to eq reimbursement.return_items.to_a.sum(&:total)
78
- end
79
- end
80
-
81
- context 'for return items that were not paid for with store credit' do
82
- before do
83
- expect(Spree::ReimbursementType::StoreCredit).to receive(:store_credit_payments).and_return([])
84
- end
85
-
86
- it 'creates one lump credit for all outstanding balance payable to the customer' do
87
- expect { subject }.to change { Spree::Reimbursement::Credit.count }.by(1)
88
- expect(subject.sum(&:amount)).to eq reimbursement.return_items.to_a.sum(&:total)
89
- end
90
-
91
- it "creates a store credit with the same currency as the reimbursement's order" do
92
- expect { subject }.to change { Spree::StoreCredit.count }.by(1)
93
- expect(Spree::StoreCredit.last.currency).to eq reimbursement.order.currency
94
- end
95
-
96
- context 'without a user with email address "spree@example.com" in the database' do
97
- before do
98
- default_user = Spree::LegacyUser.find_by(email: "spree@example.com")
99
- default_user.destroy if default_user
100
- end
101
-
102
- it "creates a store credit with the same currency as the reimbursement's order" do
103
- expect { subject }.to change { Spree::StoreCredit.count }.by(1)
104
- expect(Spree::StoreCredit.last.currency).to eq reimbursement.order.currency
105
- end
106
- end
107
- end
108
- end
109
- end
110
- end
111
- end
@@ -1,226 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::ReturnAuthorization, type: :model do
6
- let(:order) { create(:shipped_order) }
7
- let(:stock_location) { create(:stock_location) }
8
- let(:rma_reason) { create(:return_reason) }
9
- let(:inventory_unit_1) { order.inventory_units.first }
10
-
11
- let(:variant) { order.variants.first }
12
- let(:return_authorization) do
13
- Spree::ReturnAuthorization.new(order: order,
14
- stock_location_id: stock_location.id,
15
- return_reason_id: rma_reason.id)
16
- end
17
-
18
- context "save" do
19
- let(:order) { Spree::Order.create }
20
-
21
- it "should be invalid when order has no inventory units" do
22
- order.inventory_units.each(&:delete)
23
- return_authorization.save
24
- expect(return_authorization.errors[:order]).to eq(["has no shipped units"])
25
- end
26
-
27
- context "an inventory unit is already being exchanged" do
28
- let(:order) { create(:shipped_order, line_items_count: 2) }
29
- let!(:previous_exchange_return_item) { create(:exchange_return_item, inventory_unit: order.inventory_units.last) }
30
- let(:return_item) { create(:return_item, inventory_unit: order.inventory_units.last) }
31
- let(:return_authorization) { build(:return_authorization, order: order, return_items: [return_item]) }
32
-
33
- it "should be invalid" do
34
- return_authorization.save
35
- expect(return_authorization.errors['base']).to include('Return items cannot be created for inventory units that are already awaiting exchange.')
36
- end
37
- end
38
-
39
- context "an inventory unit is not being exchanged" do
40
- let(:order) { create(:shipped_order, line_items_count: 2) }
41
- let(:return_item) { create(:return_item, inventory_unit: order.inventory_units.last) }
42
- let(:return_authorization) { build(:return_authorization, order: order, return_items: [return_item]) }
43
-
44
- it "is valid" do
45
- return_authorization.save
46
- expect(return_authorization.errors['base'].size).to eq 0
47
- end
48
- end
49
- end
50
-
51
- describe ".before_create" do
52
- describe "#generate_number" do
53
- context "number is assigned" do
54
- let(:return_authorization) { Spree::ReturnAuthorization.new(number: '123') }
55
-
56
- it "should return the assigned number" do
57
- return_authorization.save
58
- expect(return_authorization.number).to eq('123')
59
- end
60
- end
61
-
62
- context "number is not assigned" do
63
- let(:return_authorization) { Spree::ReturnAuthorization.new(number: nil) }
64
-
65
- before { allow(return_authorization).to receive_messages valid?: true }
66
-
67
- it "should assign number with random RA number" do
68
- return_authorization.save
69
- expect(return_authorization.number).to match(/RA\d{9}/)
70
- end
71
- end
72
- end
73
- end
74
-
75
- context "#currency" do
76
- before { allow(order).to receive(:currency) { "ABC" } }
77
- it "returns the order currency" do
78
- expect(return_authorization.currency).to eq("ABC")
79
- end
80
- end
81
-
82
- describe "#total_excluding_vat" do
83
- let(:amount_1) { 15.0 }
84
- let!(:return_item_1) { create(:return_item, return_authorization: return_authorization, amount: amount_1) }
85
-
86
- let(:amount_2) { 50.0 }
87
- let!(:return_item_2) { create(:return_item, return_authorization: return_authorization, amount: amount_2) }
88
-
89
- let(:amount_3) { 5.0 }
90
- let!(:return_item_3) { create(:return_item, return_authorization: return_authorization, amount: amount_3) }
91
-
92
- subject { return_authorization.reload.total_excluding_vat }
93
-
94
- it "sums it's associated return_item's amounts" do
95
- expect(subject).to eq(amount_1 + amount_2 + amount_3)
96
- end
97
- end
98
-
99
- describe "#display_total_excluding_vat" do
100
- it "returns a Spree::Money" do
101
- allow(return_authorization).to receive_messages(total_excluding_vat: 21.22)
102
- expect(return_authorization.display_total_excluding_vat).to eq(Spree::Money.new(21.22))
103
- end
104
- end
105
-
106
- describe "#amount" do
107
- let(:return_item1) { create(:return_item, amount: 10) }
108
- let(:return_item2) { create(:return_item, amount: 5) }
109
- let(:return_authorization) { create(:return_authorization, return_items: [return_item1, return_item2]) }
110
-
111
- subject { return_authorization.amount }
112
-
113
- it "sums the return items' amounts" do
114
- expect(subject).to eq(15)
115
- end
116
- end
117
-
118
- describe "#refundable_amount" do
119
- let(:line_item_price) { 5.0 }
120
- let(:line_item_count) { return_authorization.order.line_items.count }
121
-
122
- subject { return_authorization.refundable_amount }
123
-
124
- before do
125
- return_authorization.order.line_items.update_all(price: line_item_price)
126
- return_authorization.order.update_attribute(:promo_total, promo_total)
127
- end
128
-
129
- context "no promotions" do
130
- let(:promo_total) { 0.0 }
131
- it "returns the pre-tax line item total" do
132
- expect(subject).to eq(line_item_price * line_item_count)
133
- end
134
- end
135
-
136
- context "promotions" do
137
- let(:promo_total) { -10.0 }
138
- it "returns the pre-tax line item total minus the order level promotion value" do
139
- expect(subject).to eq((line_item_price * line_item_count) + promo_total)
140
- end
141
- end
142
- end
143
-
144
- describe "#customer_returned_items?" do
145
- before do
146
- allow_any_instance_of(Spree::Order).to receive_messages(return!: true)
147
- end
148
-
149
- subject { return_authorization.customer_returned_items? }
150
-
151
- context "has associated customer returns" do
152
- let(:customer_return) { create(:customer_return) }
153
- let(:return_authorization) { customer_return.return_authorizations.first }
154
-
155
- it "returns true" do
156
- expect(subject).to eq true
157
- end
158
- end
159
-
160
- context "does not have associated customer returns" do
161
- let(:return_authorization) { create(:return_authorization) }
162
-
163
- it "returns false" do
164
- expect(subject).to eq false
165
- end
166
- end
167
- end
168
-
169
- describe 'cancel_return_items' do
170
- let(:return_authorization) { create(:return_authorization, return_items: return_items) }
171
- let(:return_items) { [return_item] }
172
- let(:return_item) { create(:return_item) }
173
-
174
- subject {
175
- return_authorization.cancel!
176
- }
177
-
178
- it 'cancels the associated return items' do
179
- subject
180
- expect(return_item.reception_status).to eq 'cancelled'
181
- end
182
-
183
- context 'some return items cannot be cancelled' do
184
- let(:return_items) { [return_item, return_item_2] }
185
- let(:return_item_2) { create(:return_item, reception_status: 'received') }
186
-
187
- it 'cancels those that can be cancelled' do
188
- subject
189
- expect(return_item.reception_status).to eq 'cancelled'
190
- expect(return_item_2.reception_status).to eq 'received'
191
- end
192
- end
193
- end
194
-
195
- describe '#can_cancel?' do
196
- subject { create(:return_authorization, return_items: return_items).can_cancel? }
197
- let(:return_items) { [return_item_1, return_item_2] }
198
- let(:return_item_1) { create(:return_item) }
199
- let(:return_item_2) { create(:return_item) }
200
-
201
- context 'all items can be cancelled' do
202
- it 'returns true' do
203
- expect(subject).to eq true
204
- end
205
- end
206
-
207
- context 'at least one return item can be cancelled' do
208
- let(:return_item_2) { create(:return_item, reception_status: 'received') }
209
-
210
- it { is_expected.to eq true }
211
- end
212
-
213
- context 'no items can be cancelled' do
214
- let(:return_item_1) { create(:return_item, reception_status: 'received') }
215
- let(:return_item_2) { create(:return_item, reception_status: 'received') }
216
-
217
- it { is_expected.to eq false }
218
- end
219
-
220
- context 'when return_authorization has no return_items' do
221
- let(:return_items) { [] }
222
-
223
- it { is_expected.to eq true }
224
- end
225
- end
226
- end
@@ -1,79 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::ReturnItem::EligibilityValidator::Default, type: :model do
6
- let(:return_item) { create(:return_item) }
7
- let(:validator) { Spree::ReturnItem::EligibilityValidator::Default.new(return_item) }
8
-
9
- let(:time_eligibility_class) { double("TimeEligibilityValidatorClass") }
10
- let(:rma_eligibility_class) { double("RMAEligibilityValidatorClass") }
11
-
12
- let(:time_eligibility_instance) { double(errors: time_error) }
13
- let(:rma_eligibility_instance) { double(errors: rma_error) }
14
-
15
- let(:time_error) { {} }
16
- let(:rma_error) { {} }
17
-
18
- before do
19
- validator.permitted_eligibility_validators = [time_eligibility_class, rma_eligibility_class]
20
-
21
- expect(time_eligibility_class).to receive(:new).and_return(time_eligibility_instance)
22
- expect(rma_eligibility_class).to receive(:new).and_return(rma_eligibility_instance)
23
- end
24
-
25
- describe "#eligible_for_return?" do
26
- subject { validator.eligible_for_return? }
27
-
28
- it "checks that all permitted eligibility validators are eligible for return" do
29
- expect(time_eligibility_instance).to receive(:eligible_for_return?).and_return(true)
30
- expect(rma_eligibility_instance).to receive(:eligible_for_return?).and_return(true)
31
-
32
- expect(subject).to be true
33
- end
34
- end
35
-
36
- describe "#requires_manual_intervention?" do
37
- subject { validator.requires_manual_intervention? }
38
-
39
- context "any of the permitted eligibility validators require manual intervention" do
40
- it "returns true" do
41
- expect(time_eligibility_instance).to receive(:requires_manual_intervention?).and_return(false)
42
- expect(rma_eligibility_instance).to receive(:requires_manual_intervention?).and_return(true)
43
-
44
- expect(subject).to be true
45
- end
46
- end
47
-
48
- context "no permitted eligibility validators require manual intervention" do
49
- it "returns false" do
50
- expect(time_eligibility_instance).to receive(:requires_manual_intervention?).and_return(false)
51
- expect(rma_eligibility_instance).to receive(:requires_manual_intervention?).and_return(false)
52
-
53
- expect(subject).to be false
54
- end
55
- end
56
- end
57
-
58
- describe "#errors" do
59
- subject { validator.errors }
60
-
61
- context "the validator errors are empty" do
62
- it "returns an empty hash" do
63
- expect(subject).to eq({})
64
- end
65
- end
66
-
67
- context "the validators have errors" do
68
- let(:time_error) { { time: time_error_text } }
69
- let(:rma_error) { { rma: rma_error_text } }
70
-
71
- let(:time_error_text) { "Time eligibility error" }
72
- let(:rma_error_text) { "RMA eligibility error" }
73
-
74
- it "gathers all errors from permitted eligibility validators into a single errors hash" do
75
- expect(subject).to eq({ time: time_error_text, rma: rma_error_text })
76
- end
77
- end
78
- end
79
- end