solidus_core 2.10.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (495) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js.erb +31 -2
  3. data/app/controllers/spree/base_controller.rb +1 -0
  4. data/app/mailers/spree/base_mailer.rb +4 -0
  5. data/app/mailers/spree/order_mailer.rb +1 -1
  6. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +69 -0
  7. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
  8. data/app/models/concerns/spree/active_storage_adapter.rb +116 -0
  9. data/app/models/concerns/spree/default_price.rb +1 -1
  10. data/app/models/concerns/spree/soft_deletable.rb +18 -0
  11. data/app/models/concerns/spree/user_address_book.rb +86 -32
  12. data/app/models/concerns/spree/user_methods.rb +3 -2
  13. data/app/models/spree/ability.rb +34 -10
  14. data/app/models/spree/address/name.rb +49 -0
  15. data/app/models/spree/address/state_validator.rb +71 -0
  16. data/app/models/spree/address.rb +94 -17
  17. data/app/models/spree/adjustment.rb +1 -1
  18. data/app/models/spree/base.rb +1 -0
  19. data/app/models/spree/calculator/default_tax.rb +1 -1
  20. data/app/models/spree/calculator/percent_per_item.rb +4 -4
  21. data/app/models/spree/calculator/price_sack.rb +1 -1
  22. data/app/models/spree/credit_card.rb +2 -2
  23. data/app/models/spree/customer_return.rb +4 -2
  24. data/app/models/spree/exchange.rb +1 -1
  25. data/app/models/spree/image/active_storage_attachment.rb +21 -0
  26. data/app/models/spree/inventory_unit.rb +1 -1
  27. data/app/models/spree/line_item.rb +13 -4
  28. data/app/models/spree/option_type.rb +1 -1
  29. data/app/models/spree/option_value.rb +2 -2
  30. data/app/models/spree/order/checkout.rb +1 -0
  31. data/app/models/spree/order.rb +91 -20
  32. data/app/models/spree/order_inventory.rb +16 -4
  33. data/app/models/spree/order_merger.rb +6 -4
  34. data/app/models/spree/order_promotion.rb +1 -1
  35. data/app/models/spree/order_updater.rb +11 -10
  36. data/app/models/spree/payment/cancellation.rb +3 -3
  37. data/app/models/spree/payment/processing.rb +54 -30
  38. data/app/models/spree/payment.rb +3 -3
  39. data/app/models/spree/payment_method.rb +8 -9
  40. data/app/models/spree/preference.rb +1 -1
  41. data/app/models/spree/price.rb +2 -8
  42. data/app/models/spree/product/scopes.rb +10 -5
  43. data/app/models/spree/product.rb +19 -14
  44. data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
  45. data/app/models/spree/promotion.rb +18 -7
  46. data/app/models/spree/promotion_action.rb +1 -7
  47. data/app/models/spree/promotion_code.rb +6 -1
  48. data/app/models/spree/promotion_code_batch.rb +1 -1
  49. data/app/models/spree/promotion_handler/coupon.rb +2 -2
  50. data/app/models/spree/promotion_rule.rb +1 -1
  51. data/app/models/spree/promotion_rule_role.rb +1 -1
  52. data/app/models/spree/refund.rb +54 -12
  53. data/app/models/spree/reimbursement.rb +27 -0
  54. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +10 -3
  55. data/app/models/spree/return_authorization.rb +1 -1
  56. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
  57. data/app/models/spree/return_item.rb +21 -10
  58. data/app/models/spree/role.rb +1 -1
  59. data/app/models/spree/shipment.rb +2 -2
  60. data/app/models/spree/shipping_calculator.rb +1 -1
  61. data/app/models/spree/shipping_manifest.rb +2 -2
  62. data/app/models/spree/shipping_method.rb +2 -9
  63. data/app/models/spree/shipping_rate.rb +1 -1
  64. data/app/models/spree/shipping_rate_tax.rb +1 -1
  65. data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
  66. data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
  67. data/app/models/spree/stock/package.rb +1 -1
  68. data/app/models/spree/stock/simple_coordinator.rb +1 -3
  69. data/app/models/spree/stock_item.rb +2 -8
  70. data/app/models/spree/stock_movement.rb +2 -0
  71. data/app/models/spree/store.rb +1 -1
  72. data/app/models/spree/store_credit.rb +1 -7
  73. data/app/models/spree/store_credit_category.rb +30 -3
  74. data/app/models/spree/store_credit_event.rb +1 -7
  75. data/app/models/spree/store_credit_reason.rb +0 -4
  76. data/app/models/spree/tax/tax_helpers.rb +1 -1
  77. data/app/models/spree/tax_category.rb +2 -8
  78. data/app/models/spree/tax_rate.rb +7 -7
  79. data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
  80. data/app/models/spree/taxon.rb +1 -1
  81. data/app/models/spree/user_address.rb +8 -2
  82. data/app/models/spree/variant.rb +7 -13
  83. data/app/models/spree/variant_property_rule.rb +5 -1
  84. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +8 -3
  85. data/app/models/spree/zone.rb +1 -1
  86. data/config/locales/en.yml +44 -5
  87. data/db/default/spree/countries.rb +1 -1
  88. data/db/default/spree/states.rb +12 -4
  89. data/db/default/spree/store_credit.rb +2 -2
  90. data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
  91. data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
  92. data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
  93. data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
  94. data/lib/generators/solidus/install/install_generator.rb +253 -0
  95. data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +36 -5
  96. data/lib/generators/spree/install/install_generator.rb +7 -189
  97. data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
  98. data/lib/spree/app_configuration.rb +117 -51
  99. data/lib/spree/awesome_nested_set_override.rb +44 -0
  100. data/lib/spree/core/controller_helpers/auth.rb +17 -4
  101. data/lib/spree/core/controller_helpers/current_host.rb +17 -0
  102. data/lib/spree/core/controller_helpers/order.rb +8 -7
  103. data/lib/spree/core/controller_helpers/strong_parameters.rb +21 -7
  104. data/lib/spree/core/engine.rb +39 -2
  105. data/lib/spree/core/importer/order.rb +26 -11
  106. data/lib/spree/core/permalinks.rb +1 -3
  107. data/lib/spree/core/product_filters.rb +6 -5
  108. data/lib/spree/core/state_machines/order.rb +249 -0
  109. data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
  110. data/lib/spree/core/state_machines.rb +20 -1
  111. data/lib/spree/core/version.rb +1 -1
  112. data/lib/spree/core.rb +5 -11
  113. data/lib/spree/encryptor.rb +25 -0
  114. data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
  115. data/lib/spree/event/configuration.rb +11 -6
  116. data/lib/spree/event/subscriber.rb +38 -18
  117. data/lib/spree/event/subscriber_registry.rb +92 -0
  118. data/lib/spree/event.rb +40 -7
  119. data/lib/spree/i18n.rb +1 -1
  120. data/lib/spree/mailer_previews/carton_preview.rb +2 -1
  121. data/lib/spree/paranoia_deprecations.rb +32 -12
  122. data/lib/spree/permission_sets/configuration_display.rb +14 -14
  123. data/lib/spree/permission_sets/default_customer.rb +16 -16
  124. data/lib/spree/permission_sets/order_display.rb +11 -11
  125. data/lib/spree/permission_sets/order_management.rb +1 -1
  126. data/lib/spree/permission_sets/product_display.rb +9 -9
  127. data/lib/spree/permission_sets/promotion_display.rb +5 -5
  128. data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
  129. data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
  130. data/lib/spree/permission_sets/stock_display.rb +2 -2
  131. data/lib/spree/permission_sets/stock_management.rb +1 -1
  132. data/lib/spree/permission_sets/user_display.rb +3 -3
  133. data/lib/spree/permission_sets/user_management.rb +4 -3
  134. data/lib/spree/permitted_attributes.rb +79 -9
  135. data/lib/spree/preferences/preferable.rb +4 -3
  136. data/lib/spree/preferences/preferable_class_methods.rb +22 -3
  137. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  138. data/lib/spree/testing_support/authorization_helpers.rb +1 -0
  139. data/lib/spree/testing_support/blacklist_urls.rb +23 -0
  140. data/lib/spree/testing_support/capybara_ext.rb +3 -0
  141. data/lib/spree/testing_support/common_rake.rb +3 -3
  142. data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
  143. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
  144. data/lib/spree/testing_support/dummy_app.rb +44 -23
  145. data/lib/spree/testing_support/factories/address_factory.rb +1 -2
  146. data/lib/spree/testing_support/factories/image_factory.rb +1 -1
  147. data/lib/spree/testing_support/factories/promotion_factory.rb +6 -0
  148. data/lib/spree/testing_support/factories/refund_factory.rb +1 -0
  149. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  150. data/lib/spree/testing_support/factories/return_item_factory.rb +0 -1
  151. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +8 -0
  152. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +1 -0
  153. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +3 -1
  154. data/lib/spree/testing_support/factories/taxon_factory.rb +4 -0
  155. data/lib/spree/testing_support/factories/user_factory.rb +4 -1
  156. data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
  157. data/lib/spree/testing_support/job_helpers.rb +24 -0
  158. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  159. data/lib/spree/testing_support/preferences.rb +3 -1
  160. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  161. data/lib/spree/testing_support/translations.rb +25 -0
  162. data/solidus_core.gemspec +8 -5
  163. metadata +81 -359
  164. data/script/rails +0 -10
  165. data/spec/fixtures/thinking-cat.jpg +0 -0
  166. data/spec/helpers/base_helper_spec.rb +0 -168
  167. data/spec/helpers/products_helper_spec.rb +0 -202
  168. data/spec/helpers/taxons_helper_spec.rb +0 -43
  169. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  170. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  171. data/spec/lib/i18n_spec.rb +0 -97
  172. data/spec/lib/search/base_spec.rb +0 -91
  173. data/spec/lib/search/variant_spec.rb +0 -115
  174. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  175. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  176. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  177. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  178. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  179. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  180. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  181. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  182. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -41
  183. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  184. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  185. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  186. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  187. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
  188. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  189. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  190. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  191. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  192. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  193. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  194. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  195. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  196. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  197. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  198. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  199. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  200. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  201. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  202. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  203. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  204. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  205. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  206. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  207. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  208. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  209. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  210. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  211. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  212. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  213. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  214. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  215. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  216. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  217. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  218. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  219. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  220. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  221. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  222. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  223. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  224. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  225. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  226. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  227. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  228. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  229. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  230. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  231. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  232. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  233. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  234. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  235. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  236. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  237. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  238. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  239. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  240. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  241. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  242. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  243. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  244. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  245. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  246. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  247. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  248. data/spec/lib/spree/core/version_spec.rb +0 -19
  249. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  250. data/spec/lib/spree/event_spec.rb +0 -130
  251. data/spec/lib/spree/localized_number_spec.rb +0 -45
  252. data/spec/lib/spree/migrations_spec.rb +0 -32
  253. data/spec/lib/spree/money_spec.rb +0 -298
  254. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  255. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  256. data/spec/lib/tasks/dummy_task.rake +0 -12
  257. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  258. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  259. data/spec/mailers/carton_mailer_spec.rb +0 -44
  260. data/spec/mailers/order_mailer_spec.rb +0 -117
  261. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  262. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  263. data/spec/mailers/test_mailer_spec.rb +0 -13
  264. data/spec/models/spree/ability_spec.rb +0 -279
  265. data/spec/models/spree/address_spec.rb +0 -399
  266. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  267. data/spec/models/spree/adjustment_spec.rb +0 -339
  268. data/spec/models/spree/asset_spec.rb +0 -25
  269. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  270. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  271. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  272. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  273. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  274. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  275. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  276. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  277. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  278. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  279. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  280. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  281. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  282. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  283. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
  284. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  285. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  286. data/spec/models/spree/calculator_spec.rb +0 -43
  287. data/spec/models/spree/carton_spec.rb +0 -145
  288. data/spec/models/spree/classification_spec.rb +0 -126
  289. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  290. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  291. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  292. data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
  293. data/spec/models/spree/country_spec.rb +0 -154
  294. data/spec/models/spree/credit_card_spec.rb +0 -373
  295. data/spec/models/spree/customer_return_spec.rb +0 -294
  296. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  297. data/spec/models/spree/exchange_spec.rb +0 -76
  298. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  299. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  300. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  301. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  302. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  303. data/spec/models/spree/gateway_spec.rb +0 -14
  304. data/spec/models/spree/image_spec.rb +0 -25
  305. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  306. data/spec/models/spree/line_item_spec.rb +0 -240
  307. data/spec/models/spree/option_type_spec.rb +0 -16
  308. data/spec/models/spree/option_value_spec.rb +0 -52
  309. data/spec/models/spree/order/address_spec.rb +0 -52
  310. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  311. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  312. data/spec/models/spree/order/checkout_spec.rb +0 -740
  313. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  314. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  315. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  316. data/spec/models/spree/order/payment_spec.rb +0 -280
  317. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  318. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  319. data/spec/models/spree/order/totals_spec.rb +0 -26
  320. data/spec/models/spree/order/validations_spec.rb +0 -17
  321. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  322. data/spec/models/spree/order_capturing_spec.rb +0 -16
  323. data/spec/models/spree/order_contents_spec.rb +0 -362
  324. data/spec/models/spree/order_inventory_spec.rb +0 -285
  325. data/spec/models/spree/order_merger_spec.rb +0 -162
  326. data/spec/models/spree/order_mutex_spec.rb +0 -89
  327. data/spec/models/spree/order_promotion_spec.rb +0 -33
  328. data/spec/models/spree/order_shipping_spec.rb +0 -247
  329. data/spec/models/spree/order_spec.rb +0 -1687
  330. data/spec/models/spree/order_taxation_spec.rb +0 -128
  331. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  332. data/spec/models/spree/order_updater_spec.rb +0 -556
  333. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  334. data/spec/models/spree/payment_create_spec.rb +0 -195
  335. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  336. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  337. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  338. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  339. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  340. data/spec/models/spree/payment_method_spec.rb +0 -408
  341. data/spec/models/spree/payment_spec.rb +0 -1270
  342. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  343. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  344. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  345. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  346. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  347. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  348. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  349. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  350. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  351. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  352. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  353. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  354. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  355. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  356. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  357. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
  358. data/spec/models/spree/preference_spec.rb +0 -79
  359. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  360. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  361. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  362. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  363. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  364. data/spec/models/spree/preferences/store_spec.rb +0 -40
  365. data/spec/models/spree/price_spec.rb +0 -150
  366. data/spec/models/spree/product/scopes_spec.rb +0 -164
  367. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  368. data/spec/models/spree/product_filter_spec.rb +0 -28
  369. data/spec/models/spree/product_property_spec.rb +0 -20
  370. data/spec/models/spree/product_spec.rb +0 -584
  371. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  372. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  373. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  374. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  375. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  376. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  377. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  378. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  379. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  380. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  381. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  382. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  383. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -226
  384. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  385. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  386. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  387. data/spec/models/spree/promotion_action_spec.rb +0 -44
  388. data/spec/models/spree/promotion_category_spec.rb +0 -19
  389. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  390. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  391. data/spec/models/spree/promotion_code_spec.rb +0 -206
  392. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  393. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  394. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  395. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  396. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  397. data/spec/models/spree/promotion_spec.rb +0 -945
  398. data/spec/models/spree/refund_spec.rb +0 -200
  399. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  400. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  401. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  402. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  403. data/spec/models/spree/reimbursement_spec.rb +0 -278
  404. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  405. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  406. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  407. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  408. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  409. data/spec/models/spree/return_authorization_spec.rb +0 -226
  410. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  411. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  412. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  413. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  414. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  415. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  416. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  417. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  418. data/spec/models/spree/return_item_spec.rb +0 -785
  419. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  420. data/spec/models/spree/shipment_spec.rb +0 -914
  421. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  422. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  423. data/spec/models/spree/shipping_method_spec.rb +0 -292
  424. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  425. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  426. data/spec/models/spree/state_spec.rb +0 -43
  427. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  428. data/spec/models/spree/stock/availability_spec.rb +0 -143
  429. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  430. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  431. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  432. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  433. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  434. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  435. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  436. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  437. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  438. data/spec/models/spree/stock/package_spec.rb +0 -182
  439. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  440. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  441. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  442. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  443. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  444. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  445. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  446. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  447. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  448. data/spec/models/spree/stock_item_spec.rb +0 -348
  449. data/spec/models/spree/stock_location_spec.rb +0 -288
  450. data/spec/models/spree/stock_movement_spec.rb +0 -58
  451. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  452. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  453. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  454. data/spec/models/spree/store_credit_spec.rb +0 -900
  455. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  456. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  457. data/spec/models/spree/store_spec.rb +0 -156
  458. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  459. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  460. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  461. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  462. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  463. data/spec/models/spree/tax_category_spec.rb +0 -50
  464. data/spec/models/spree/tax_rate_spec.rb +0 -317
  465. data/spec/models/spree/taxon_spec.rb +0 -197
  466. data/spec/models/spree/taxonomy_spec.rb +0 -15
  467. data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
  468. data/spec/models/spree/unit_cancel_spec.rb +0 -126
  469. data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
  470. data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
  471. data/spec/models/spree/user_spec.rb +0 -247
  472. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  473. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  474. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  475. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  476. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  477. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  478. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  479. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  480. data/spec/models/spree/variant_spec.rb +0 -862
  481. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  482. data/spec/models/spree/wallet_spec.rb +0 -155
  483. data/spec/models/spree/zone_spec.rb +0 -248
  484. data/spec/rails_helper.rb +0 -46
  485. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  486. data/spec/spec_helper.rb +0 -36
  487. data/spec/support/big_decimal.rb +0 -7
  488. data/spec/support/concerns/default_price.rb +0 -44
  489. data/spec/support/concerns/payment_source.rb +0 -66
  490. data/spec/support/concerns/working_factories.rb +0 -15
  491. data/spec/support/dummy_ability.rb +0 -7
  492. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
  493. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
  494. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
  495. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
@@ -1,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
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::ReturnItem::EligibilityValidator::InventoryShipped do
6
- let(:return_item) { create(:return_item) }
7
- let(:validator) { Spree::ReturnItem::EligibilityValidator::InventoryShipped.new(return_item) }
8
-
9
- describe "#eligible_for_return?" do
10
- before { allow(return_item.inventory_unit).to receive(:shipped?).and_return(true) }
11
-
12
- subject { validator.eligible_for_return? }
13
-
14
- context "the associated inventory unit is shipped" do
15
- it "returns true" do
16
- expect(subject).to eq true
17
- end
18
- end
19
-
20
- context "the associated inventory unit is not shipped" do
21
- before { allow(return_item.inventory_unit).to receive(:shipped?).and_return(false) }
22
-
23
- it "returns false" do
24
- expect(subject).to eq false
25
- end
26
-
27
- it "sets an error" do
28
- subject
29
- expect(validator.errors[:inventory_unit_shipped]).to eq I18n.t('spree.return_item_inventory_unit_ineligible')
30
- end
31
- end
32
- end
33
-
34
- describe "#requires_manual_intervention?" do
35
- subject { validator.requires_manual_intervention? }
36
-
37
- context "not eligible for return" do
38
- before do
39
- allow(return_item.inventory_unit).to receive(:shipped?).and_return(false)
40
- validator.eligible_for_return?
41
- end
42
-
43
- it 'returns true if errors were added' do
44
- expect(subject).to eq true
45
- end
46
- end
47
-
48
- context "eligible for return" do
49
- before do
50
- allow(return_item.inventory_unit).to receive(:shipped?).and_return(true)
51
- validator.eligible_for_return?
52
- end
53
-
54
- it 'returns false if no errors were added' do
55
- expect(subject).to eq false
56
- end
57
- end
58
- end
59
- end
@@ -1,86 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::ReturnItem::EligibilityValidator::NoReimbursements do
6
- let(:validator) { Spree::ReturnItem::EligibilityValidator::NoReimbursements.new(return_item) }
7
-
8
- describe "#eligible_for_return?" do
9
- subject { validator.eligible_for_return? }
10
-
11
- context "inventory unit has already been reimbursed" do
12
- let(:reimbursement) { create(:reimbursement) }
13
- let(:return_item) { reimbursement.return_items.last }
14
-
15
- it "returns false" do
16
- expect(subject).to eq false
17
- end
18
-
19
- it "sets an error" do
20
- subject
21
- expect(validator.errors[:inventory_unit_reimbursed]).to eq I18n.t('spree.return_item_inventory_unit_reimbursed')
22
- end
23
-
24
- context "but the return item has been expired" do
25
- before { return_item.expired }
26
-
27
- it "returns true" do
28
- expect(subject).to eq true
29
- end
30
- end
31
-
32
- context "but the return item has been canceled" do
33
- before { return_item.cancel }
34
-
35
- it "returns true" do
36
- expect(subject).to eq true
37
- end
38
- end
39
-
40
- context "but the return item has been unexchanged" do
41
- before { return_item.unexchange }
42
-
43
- it "returns true" do
44
- expect(subject).to eq true
45
- end
46
- end
47
- end
48
-
49
- context "inventory unit has not been reimbursed" do
50
- let(:return_item) { create(:return_item) }
51
-
52
- it "returns true" do
53
- expect(subject).to eq true
54
- end
55
- end
56
- end
57
-
58
- describe "#requires_manual_intervention?" do
59
- subject { validator.requires_manual_intervention? }
60
-
61
- context "not eligible for return" do
62
- let(:reimbursement) { create(:reimbursement) }
63
- let(:return_item) { reimbursement.return_items.last }
64
-
65
- before do
66
- validator.eligible_for_return?
67
- end
68
-
69
- it 'returns true if errors were added' do
70
- expect(subject).to eq true
71
- end
72
- end
73
-
74
- context "eligible for return" do
75
- let(:return_item) { create(:return_item) }
76
-
77
- before do
78
- validator.eligible_for_return?
79
- end
80
-
81
- it 'returns false if no errors were added' do
82
- expect(subject).to eq false
83
- end
84
- end
85
- end
86
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::ReturnItem::EligibilityValidator::OrderCompleted do
6
- let(:shipment) { create(:shipment, order: order) }
7
- let(:inventory_unit) { create(:inventory_unit, shipment: shipment) }
8
- let(:return_item) { create(:return_item, inventory_unit: inventory_unit) }
9
- let(:validator) { Spree::ReturnItem::EligibilityValidator::OrderCompleted.new(return_item) }
10
-
11
- describe "#eligible_for_return?" do
12
- subject { validator.eligible_for_return? }
13
-
14
- context "the order was completed" do
15
- let(:order) { create(:completed_order_with_totals) }
16
-
17
- it "returns true" do
18
- expect(subject).to be true
19
- end
20
- end
21
-
22
- context "the order is not completed" do
23
- let(:order) { create(:order) }
24
-
25
- it "returns false" do
26
- expect(subject).to be false
27
- end
28
-
29
- it "sets an error" do
30
- subject
31
- expect(validator.errors[:order_not_completed]).to eq I18n.t('spree.return_item_order_not_completed')
32
- end
33
- end
34
- end
35
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::ReturnItem::EligibilityValidator::RMARequired, type: :model do
6
- let(:return_item) { create(:return_item) }
7
- let(:validator) { Spree::ReturnItem::EligibilityValidator::RMARequired.new(return_item) }
8
-
9
- describe "#eligible_for_return?" do
10
- subject { validator.eligible_for_return? }
11
-
12
- context "there is an rma on the return item" do
13
- it "returns true" do
14
- expect(subject).to be true
15
- end
16
- end
17
-
18
- context "there is no rma on the return item" do
19
- before { allow(return_item).to receive(:return_authorization).and_return(nil) }
20
-
21
- it "returns false" do
22
- expect(subject).to be false
23
- end
24
-
25
- it "sets an error" do
26
- subject
27
- expect(validator.errors[:rma_required]).to eq I18n.t('spree.return_item_rma_ineligible')
28
- end
29
- end
30
- end
31
- end
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::ReturnItem::EligibilityValidator::TimeSincePurchase, type: :model do
6
- include ActiveSupport::Testing::TimeHelpers
7
-
8
- let(:return_item) { instance_double(Spree::ReturnItem) }
9
- let(:validator) { described_class.new(return_item) }
10
-
11
- describe "#eligible_for_return?" do
12
- subject { validator.eligible_for_return? }
13
-
14
- let(:interval) { Spree::Config[:return_eligibility_number_of_days] }
15
-
16
- before do
17
- allow(return_item).
18
- to receive_message_chain('inventory_unit.order.completed_at').
19
- and_return(completed_at)
20
- end
21
-
22
- around(:each) do |e|
23
- travel_to(Time.current) { e.run }
24
- end
25
-
26
- context "it is within the return timeframe" do
27
- let(:completed_at) { 1.day.ago }
28
- it { is_expected.to be_truthy }
29
- end
30
-
31
- context "it is past the return timeframe" do
32
- let(:completed_at) { interval.day.ago }
33
-
34
- it { is_expected.to be_falsy }
35
-
36
- it "sets an error" do
37
- subject
38
- expect(validator.errors[:number_of_days]).to eq I18n.t('spree.return_item_time_period_ineligible')
39
- end
40
- end
41
- end
42
- end
@@ -1,66 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- module ReturnItem::ExchangeVariantEligibility
7
- RSpec.describe SameOptionValue, type: :model do
8
- describe ".eligible_variants" do
9
- let(:color_option_type) { create(:option_type, name: "color") }
10
- let(:waist_option_type) { create(:option_type, name: "waist") }
11
- let(:inseam_option_type) { create(:option_type, name: "inseam") }
12
-
13
- let(:blue_option_value) { create(:option_value, name: "blue", option_type: color_option_type) }
14
- let(:red_option_value) { create(:option_value, name: "red", option_type: color_option_type) }
15
-
16
- let(:three_two_waist_option_value) { create(:option_value, name: 32, option_type: waist_option_type) }
17
- let(:three_four_waist_option_value) { create(:option_value, name: 34, option_type: waist_option_type) }
18
-
19
- let(:three_zero_inseam_option_value) { create(:option_value, name: 30, option_type: inseam_option_type) }
20
- let(:three_one_inseam_option_value) { create(:option_value, name: 31, option_type: inseam_option_type) }
21
-
22
- let(:product) { create(:product, option_types: [color_option_type, waist_option_type, inseam_option_type]) }
23
-
24
- let!(:variant) { create(:variant, product: product, option_values: [blue_option_value, three_two_waist_option_value, three_zero_inseam_option_value]) }
25
- let!(:same_option_values_variant) { create(:variant, product: product, option_values: [blue_option_value, three_two_waist_option_value, three_one_inseam_option_value]) }
26
- let!(:different_color_option_value_variant) { create(:variant, product: product, option_values: [red_option_value, three_two_waist_option_value, three_one_inseam_option_value]) }
27
- let!(:different_waist_option_value_variant) { create(:variant, product: product, option_values: [blue_option_value, three_four_waist_option_value, three_one_inseam_option_value]) }
28
-
29
- before do
30
- @original_option_type_restrictions = SameOptionValue.option_type_restrictions
31
- SameOptionValue.option_type_restrictions = ["color", "waist"]
32
- end
33
-
34
- after { SameOptionValue.option_type_restrictions = @original_option_type_restrictions }
35
-
36
- subject { SameOptionValue.eligible_variants(variant.reload) }
37
-
38
- it "returns all other variants for the same product with the same option value for the specified option type" do
39
- Spree::StockItem.update_all(count_on_hand: 10)
40
-
41
- expect(subject.sort).to eq [variant, same_option_values_variant].sort
42
- end
43
-
44
- it "does not return variants for another product" do
45
- other_product_variant = create(:variant)
46
- expect(subject).not_to include other_product_variant
47
- end
48
-
49
- context "no option value restrictions are specified" do
50
- before do
51
- @original_option_type_restrictions = SameOptionValue.option_type_restrictions
52
- SameOptionValue.option_type_restrictions = []
53
- end
54
-
55
- after { SameOptionValue.option_type_restrictions = @original_option_type_restrictions }
56
-
57
- it "returns all variants for the product" do
58
- Spree::StockItem.update_all(count_on_hand: 10)
59
-
60
- expect(subject.sort).to eq [variant, same_option_values_variant, different_waist_option_value_variant, different_color_option_value_variant].sort
61
- end
62
- end
63
- end
64
- end
65
- end
66
- end
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- module ReturnItem::ExchangeVariantEligibility
7
- RSpec.describe SameProduct, type: :model do
8
- describe ".eligible_variants" do
9
- context "product has no variants" do
10
- it "returns the master variant for the same product" do
11
- product = create(:product)
12
- product.master.stock_items.first.update_column(:count_on_hand, 10)
13
-
14
- expect(SameProduct.eligible_variants(product.master)).to eq [product.master]
15
- end
16
- end
17
-
18
- context "product has variants" do
19
- it "returns all variants for the same product" do
20
- product = create(:product, variants: Array.new(3) { create(:variant) })
21
- product.variants.map { |value| value.stock_items.first.update_column(:count_on_hand, 10) }
22
-
23
- expect(SameProduct.eligible_variants(product.variants.first).sort).to eq product.variants.sort
24
- end
25
- end
26
-
27
- it "does not return variants for another product" do
28
- variant = create(:variant)
29
- other_product_variant = create(:variant)
30
- expect(SameProduct.eligible_variants(variant)).not_to include other_product_variant
31
- end
32
-
33
- it "only returns variants that are on hand" do
34
- product = create(:product, variants: Array.new(2) { create(:variant) })
35
- in_stock_variant = product.variants.first
36
-
37
- in_stock_variant.stock_items.first.update_column(:count_on_hand, 10)
38
- expect(SameProduct.eligible_variants(in_stock_variant)).to eq [in_stock_variant]
39
- end
40
- end
41
- end
42
- end
43
- end