solidus_core 2.10.1 → 2.11.2

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 (496) 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/controller_helpers/strong_parameters.rb +21 -7
  109. data/lib/spree/core/engine.rb +39 -2
  110. data/lib/spree/core/importer/order.rb +26 -11
  111. data/lib/spree/core/permalinks.rb +1 -3
  112. data/lib/spree/core/product_filters.rb +6 -5
  113. data/lib/spree/core/state_machines.rb +20 -1
  114. data/lib/spree/core/state_machines/order.rb +249 -0
  115. data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
  116. data/lib/spree/core/version.rb +1 -1
  117. data/lib/spree/encryptor.rb +25 -0
  118. data/lib/spree/event.rb +40 -7
  119. data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
  120. data/lib/spree/event/configuration.rb +11 -6
  121. data/lib/spree/event/subscriber.rb +38 -18
  122. data/lib/spree/event/subscriber_registry.rb +92 -0
  123. data/lib/spree/i18n.rb +1 -1
  124. data/lib/spree/mailer_previews/carton_preview.rb +2 -1
  125. data/lib/spree/paranoia_deprecations.rb +32 -12
  126. data/lib/spree/permission_sets/configuration_display.rb +14 -14
  127. data/lib/spree/permission_sets/default_customer.rb +16 -16
  128. data/lib/spree/permission_sets/order_display.rb +11 -11
  129. data/lib/spree/permission_sets/order_management.rb +1 -1
  130. data/lib/spree/permission_sets/product_display.rb +9 -9
  131. data/lib/spree/permission_sets/promotion_display.rb +5 -5
  132. data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
  133. data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
  134. data/lib/spree/permission_sets/stock_display.rb +2 -2
  135. data/lib/spree/permission_sets/stock_management.rb +1 -1
  136. data/lib/spree/permission_sets/user_display.rb +3 -3
  137. data/lib/spree/permission_sets/user_management.rb +4 -3
  138. data/lib/spree/permitted_attributes.rb +79 -9
  139. data/lib/spree/preferences/preferable.rb +4 -3
  140. data/lib/spree/preferences/preferable_class_methods.rb +22 -3
  141. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  142. data/lib/spree/testing_support/authorization_helpers.rb +1 -0
  143. data/lib/spree/testing_support/blacklist_urls.rb +23 -0
  144. data/lib/spree/testing_support/capybara_ext.rb +3 -0
  145. data/lib/spree/testing_support/common_rake.rb +3 -3
  146. data/lib/spree/testing_support/dummy_app.rb +44 -23
  147. data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
  148. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
  149. data/lib/spree/testing_support/factories/address_factory.rb +1 -2
  150. data/lib/spree/testing_support/factories/image_factory.rb +1 -1
  151. data/lib/spree/testing_support/factories/promotion_factory.rb +6 -0
  152. data/lib/spree/testing_support/factories/refund_factory.rb +1 -0
  153. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  154. data/lib/spree/testing_support/factories/return_item_factory.rb +0 -1
  155. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +8 -0
  156. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +1 -0
  157. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +3 -1
  158. data/lib/spree/testing_support/factories/taxon_factory.rb +4 -0
  159. data/lib/spree/testing_support/factories/user_factory.rb +4 -1
  160. data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
  161. data/lib/spree/testing_support/fixtures/blank.jpg +0 -0
  162. data/lib/spree/testing_support/job_helpers.rb +24 -0
  163. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  164. data/lib/spree/testing_support/preferences.rb +3 -1
  165. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  166. data/lib/spree/testing_support/translations.rb +25 -0
  167. data/solidus_core.gemspec +8 -5
  168. metadata +99 -376
  169. data/script/rails +0 -10
  170. data/spec/fixtures/thinking-cat.jpg +0 -0
  171. data/spec/helpers/base_helper_spec.rb +0 -168
  172. data/spec/helpers/products_helper_spec.rb +0 -202
  173. data/spec/helpers/taxons_helper_spec.rb +0 -43
  174. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  175. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  176. data/spec/lib/i18n_spec.rb +0 -97
  177. data/spec/lib/search/base_spec.rb +0 -91
  178. data/spec/lib/search/variant_spec.rb +0 -115
  179. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  180. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  181. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  182. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  183. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  184. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  185. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  186. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  187. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -41
  188. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  189. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  190. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  191. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  192. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
  193. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  194. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  195. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  196. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  197. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  198. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  199. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  200. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  201. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  202. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  203. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  204. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  205. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  206. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  207. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  208. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  209. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  210. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  211. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  212. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  213. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  214. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  215. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  216. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  217. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  218. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  219. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  220. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  221. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  222. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  223. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  224. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  225. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  226. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  227. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  228. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  229. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  230. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  231. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  232. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  233. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  234. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  235. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  236. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  237. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  238. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  239. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  240. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  241. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  242. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  243. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  244. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  245. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  246. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  247. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  248. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  249. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  250. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  251. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  252. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  253. data/spec/lib/spree/core/version_spec.rb +0 -19
  254. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  255. data/spec/lib/spree/event_spec.rb +0 -130
  256. data/spec/lib/spree/localized_number_spec.rb +0 -45
  257. data/spec/lib/spree/migrations_spec.rb +0 -32
  258. data/spec/lib/spree/money_spec.rb +0 -298
  259. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  260. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  261. data/spec/lib/tasks/dummy_task.rake +0 -12
  262. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  263. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  264. data/spec/mailers/carton_mailer_spec.rb +0 -44
  265. data/spec/mailers/order_mailer_spec.rb +0 -117
  266. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  267. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  268. data/spec/mailers/test_mailer_spec.rb +0 -13
  269. data/spec/models/spree/ability_spec.rb +0 -279
  270. data/spec/models/spree/address_spec.rb +0 -399
  271. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  272. data/spec/models/spree/adjustment_spec.rb +0 -339
  273. data/spec/models/spree/asset_spec.rb +0 -25
  274. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  275. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  276. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  277. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  278. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  279. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  280. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  281. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  282. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  283. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  284. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  285. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  286. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  287. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  288. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
  289. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  290. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  291. data/spec/models/spree/calculator_spec.rb +0 -43
  292. data/spec/models/spree/carton_spec.rb +0 -145
  293. data/spec/models/spree/classification_spec.rb +0 -126
  294. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  295. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  296. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  297. data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
  298. data/spec/models/spree/country_spec.rb +0 -154
  299. data/spec/models/spree/credit_card_spec.rb +0 -373
  300. data/spec/models/spree/customer_return_spec.rb +0 -294
  301. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  302. data/spec/models/spree/exchange_spec.rb +0 -76
  303. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  304. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  305. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  306. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  307. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  308. data/spec/models/spree/gateway_spec.rb +0 -14
  309. data/spec/models/spree/image_spec.rb +0 -25
  310. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  311. data/spec/models/spree/line_item_spec.rb +0 -240
  312. data/spec/models/spree/option_type_spec.rb +0 -16
  313. data/spec/models/spree/option_value_spec.rb +0 -52
  314. data/spec/models/spree/order/address_spec.rb +0 -52
  315. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  316. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  317. data/spec/models/spree/order/checkout_spec.rb +0 -740
  318. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  319. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  320. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  321. data/spec/models/spree/order/payment_spec.rb +0 -280
  322. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  323. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  324. data/spec/models/spree/order/totals_spec.rb +0 -26
  325. data/spec/models/spree/order/validations_spec.rb +0 -17
  326. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  327. data/spec/models/spree/order_capturing_spec.rb +0 -16
  328. data/spec/models/spree/order_contents_spec.rb +0 -362
  329. data/spec/models/spree/order_inventory_spec.rb +0 -285
  330. data/spec/models/spree/order_merger_spec.rb +0 -162
  331. data/spec/models/spree/order_mutex_spec.rb +0 -89
  332. data/spec/models/spree/order_promotion_spec.rb +0 -33
  333. data/spec/models/spree/order_shipping_spec.rb +0 -247
  334. data/spec/models/spree/order_spec.rb +0 -1687
  335. data/spec/models/spree/order_taxation_spec.rb +0 -128
  336. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  337. data/spec/models/spree/order_updater_spec.rb +0 -556
  338. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  339. data/spec/models/spree/payment_create_spec.rb +0 -195
  340. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  341. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  342. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  343. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  344. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  345. data/spec/models/spree/payment_method_spec.rb +0 -408
  346. data/spec/models/spree/payment_spec.rb +0 -1270
  347. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  348. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  349. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  350. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  351. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  352. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  353. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  354. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  355. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  356. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  357. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  358. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  359. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  360. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  361. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  362. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
  363. data/spec/models/spree/preference_spec.rb +0 -79
  364. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  365. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  366. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  367. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  368. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  369. data/spec/models/spree/preferences/store_spec.rb +0 -40
  370. data/spec/models/spree/price_spec.rb +0 -150
  371. data/spec/models/spree/product/scopes_spec.rb +0 -164
  372. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  373. data/spec/models/spree/product_filter_spec.rb +0 -28
  374. data/spec/models/spree/product_property_spec.rb +0 -20
  375. data/spec/models/spree/product_spec.rb +0 -584
  376. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  377. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  378. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  379. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  380. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  381. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  382. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  383. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  384. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  385. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  386. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  387. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  388. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -226
  389. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  390. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  391. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  392. data/spec/models/spree/promotion_action_spec.rb +0 -44
  393. data/spec/models/spree/promotion_category_spec.rb +0 -19
  394. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  395. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  396. data/spec/models/spree/promotion_code_spec.rb +0 -206
  397. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  398. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  399. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  400. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  401. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  402. data/spec/models/spree/promotion_spec.rb +0 -945
  403. data/spec/models/spree/refund_spec.rb +0 -200
  404. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  405. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  406. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  407. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  408. data/spec/models/spree/reimbursement_spec.rb +0 -278
  409. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  410. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  411. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  412. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  413. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  414. data/spec/models/spree/return_authorization_spec.rb +0 -226
  415. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  416. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  417. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  418. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  419. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  420. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  421. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  422. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  423. data/spec/models/spree/return_item_spec.rb +0 -785
  424. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  425. data/spec/models/spree/shipment_spec.rb +0 -914
  426. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  427. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  428. data/spec/models/spree/shipping_method_spec.rb +0 -292
  429. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  430. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  431. data/spec/models/spree/state_spec.rb +0 -43
  432. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  433. data/spec/models/spree/stock/availability_spec.rb +0 -143
  434. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  435. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  436. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  437. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  438. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  439. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  440. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  441. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  442. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  443. data/spec/models/spree/stock/package_spec.rb +0 -182
  444. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  445. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  446. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  447. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  448. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  449. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  450. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  451. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  452. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  453. data/spec/models/spree/stock_item_spec.rb +0 -348
  454. data/spec/models/spree/stock_location_spec.rb +0 -288
  455. data/spec/models/spree/stock_movement_spec.rb +0 -58
  456. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  457. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  458. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  459. data/spec/models/spree/store_credit_spec.rb +0 -900
  460. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  461. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  462. data/spec/models/spree/store_spec.rb +0 -156
  463. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  464. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  465. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  466. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  467. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  468. data/spec/models/spree/tax_category_spec.rb +0 -50
  469. data/spec/models/spree/tax_rate_spec.rb +0 -317
  470. data/spec/models/spree/taxon_spec.rb +0 -197
  471. data/spec/models/spree/taxonomy_spec.rb +0 -15
  472. data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
  473. data/spec/models/spree/unit_cancel_spec.rb +0 -126
  474. data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
  475. data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
  476. data/spec/models/spree/user_spec.rb +0 -247
  477. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  478. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  479. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  480. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  481. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  482. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  483. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  484. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  485. data/spec/models/spree/variant_spec.rb +0 -862
  486. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  487. data/spec/models/spree/wallet_spec.rb +0 -155
  488. data/spec/models/spree/zone_spec.rb +0 -248
  489. data/spec/rails_helper.rb +0 -46
  490. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  491. data/spec/spec_helper.rb +0 -36
  492. data/spec/support/big_decimal.rb +0 -7
  493. data/spec/support/concerns/default_price.rb +0 -44
  494. data/spec/support/concerns/payment_source.rb +0 -66
  495. data/spec/support/concerns/working_factories.rb +0 -15
  496. 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