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,373 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::CreditCard, type: :model do
6
- let(:valid_credit_card_attributes) do
7
- {
8
- number: '4111111111111111',
9
- verification_value: '123',
10
- expiry: "12 / #{(Time.current.year + 1).to_s.last(2)}",
11
- name: 'Spree Commerce'
12
- }
13
- end
14
-
15
- def self.payment_states
16
- Spree::Payment.state_machine.states.keys
17
- end
18
-
19
- let(:credit_card) { Spree::CreditCard.new }
20
-
21
- it_behaves_like 'a payment source'
22
-
23
- before(:each) do
24
- @order = create(:order)
25
- @payment = Spree::Payment.create(amount: 100, order: @order)
26
-
27
- @success_response = double('gateway_response', success?: true, authorization: '123', avs_result: { 'code' => 'avs-code' })
28
- @fail_response = double('gateway_response', success?: false)
29
-
30
- @payment_gateway = mock_model(Spree::PaymentMethod,
31
- payment_profiles_supported?: true,
32
- authorize: @success_response,
33
- purchase: @success_response,
34
- capture: @success_response,
35
- void: @success_response,
36
- credit: @success_response)
37
-
38
- allow(@payment).to receive_messages payment_method: @payment_gateway
39
- end
40
-
41
- describe "#valid?" do
42
- it "should validate presence of number" do
43
- credit_card.attributes = valid_credit_card_attributes.except(:number)
44
- expect(credit_card).not_to be_valid
45
- expect(credit_card.errors[:number]).to eq(["can't be blank"])
46
- end
47
-
48
- it "should validate presence of security code" do
49
- credit_card.attributes = valid_credit_card_attributes.except(:verification_value)
50
- expect(credit_card).not_to be_valid
51
- expect(credit_card.errors[:verification_value]).to eq(["can't be blank"])
52
- end
53
-
54
- it "validates name presence" do
55
- credit_card.valid?
56
- expect(credit_card.errors[:name].size).to eq(1)
57
- end
58
-
59
- it "should only validate on create" do
60
- credit_card.attributes = valid_credit_card_attributes
61
- credit_card.save
62
- expect(credit_card).to be_valid
63
- end
64
-
65
- context "encrypted data is present" do
66
- it "does not validate presence of number or cvv" do
67
- credit_card.encrypted_data = "$fdgsfgdgfgfdg&gfdgfdgsf-"
68
- credit_card.valid?
69
- expect(credit_card.errors[:number]).to be_empty
70
- expect(credit_card.errors[:verification_value]).to be_empty
71
- end
72
- end
73
-
74
- context "imported is true" do
75
- it "does not validate presence of number or cvv" do
76
- credit_card.imported = true
77
- credit_card.valid?
78
- expect(credit_card.errors[:number]).to be_empty
79
- expect(credit_card.errors[:verification_value]).to be_empty
80
- end
81
- end
82
- end
83
-
84
- describe "#save" do
85
- before do
86
- credit_card.attributes = valid_credit_card_attributes
87
- credit_card.save!
88
- end
89
-
90
- let!(:persisted_card) { Spree::CreditCard.find(credit_card.id) }
91
- let(:valid_address_attributes) do
92
- {
93
- firstname: "Hugo",
94
- lastname: "Furst",
95
- address1: "123 Main",
96
- city: "Somewhere",
97
- country_id: 1,
98
- zipcode: 55_555,
99
- phone: "1234567890"
100
- }
101
- end
102
-
103
- it "should not actually store the number" do
104
- expect(persisted_card.number).to be_blank
105
- end
106
-
107
- it "should not actually store the security code" do
108
- expect(persisted_card.verification_value).to be_blank
109
- end
110
-
111
- it "should save and update addresses through nested attributes" do
112
- persisted_card.update({ address_attributes: valid_address_attributes })
113
- persisted_card.save!
114
- updated_attributes = { id: persisted_card.address.id, address1: "123 Main St." }
115
- persisted_card.update({ address_attributes: updated_attributes })
116
- expect(persisted_card.address.address1).to eq "123 Main St."
117
- end
118
- end
119
-
120
- describe "#number=" do
121
- it "should strip non-numeric characters from card input" do
122
- credit_card.number = "6011000990139424"
123
- expect(credit_card.number).to eq("6011000990139424")
124
-
125
- credit_card.number = " 6011-0009-9013-9424 "
126
- expect(credit_card.number).to eq("6011000990139424")
127
- end
128
-
129
- it "should not raise an exception on non-string input" do
130
- credit_card.number = {}
131
- expect(credit_card.number).to be_nil
132
- end
133
- end
134
-
135
- describe "#verification_value=" do
136
- it "accepts a valid 3-digit value" do
137
- credit_card.verification_value = "123"
138
- expect(credit_card.verification_value).to eq("123")
139
- end
140
-
141
- it "accepts a valid 4-digit value" do
142
- credit_card.verification_value = "1234"
143
- expect(credit_card.verification_value).to eq("1234")
144
- end
145
-
146
- it "stringifies an integer" do
147
- credit_card.verification_value = 123
148
- expect(credit_card.verification_value).to eq("123")
149
- end
150
-
151
- it "strips any whitespace" do
152
- credit_card.verification_value = ' 1 2 3 '
153
- expect(credit_card.verification_value).to eq('123')
154
- end
155
- end
156
-
157
- # Regression test for https://github.com/spree/spree/issues/3847 and https://github.com/spree/spree/issues/3896
158
- describe "#expiry=" do
159
- it "can set with a 2-digit month and year" do
160
- credit_card.expiry = '04 / 15'
161
- expect(credit_card.month).to eq('4')
162
- expect(credit_card.year).to eq('2015')
163
- end
164
-
165
- it "can set with a 2-digit month and 4-digit year" do
166
- credit_card.expiry = '04 / 2015'
167
- expect(credit_card.month).to eq('4')
168
- expect(credit_card.year).to eq('2015')
169
- end
170
-
171
- it "can set with a 2-digit month and 4-digit year without whitespace" do
172
- credit_card.expiry = '04/15'
173
- expect(credit_card.month).to eq('4')
174
- expect(credit_card.year).to eq('2015')
175
- end
176
-
177
- it "can set with a 2-digit month and 4-digit year without whitespace" do
178
- credit_card.expiry = '04/2015'
179
- expect(credit_card.month).to eq('4')
180
- expect(credit_card.year).to eq('2015')
181
- end
182
-
183
- it "can set with a 2-digit month and 4-digit year without whitespace and slash" do
184
- credit_card.expiry = '042015'
185
- expect(credit_card.month).to eq('4')
186
- expect(credit_card.year).to eq('2015')
187
- end
188
-
189
- it "can set with a 2-digit month and 2-digit year without whitespace and slash" do
190
- credit_card.expiry = '0415'
191
- expect(credit_card.month).to eq('4')
192
- expect(credit_card.year).to eq('2015')
193
- end
194
-
195
- it "does not blow up when passed an empty string" do
196
- credit_card.expiry = ''
197
- end
198
-
199
- # Regression test for https://github.com/spree/spree/issues/4725
200
- it "does not blow up when passed one number" do
201
- credit_card.expiry = '12'
202
- end
203
- end
204
-
205
- describe "#cc_type=" do
206
- it "converts between the different types" do
207
- credit_card.cc_type = 'mastercard'
208
- expect(credit_card.cc_type).to eq('master')
209
-
210
- credit_card.cc_type = 'maestro'
211
- expect(credit_card.cc_type).to eq('master')
212
-
213
- credit_card.cc_type = 'amex'
214
- expect(credit_card.cc_type).to eq('american_express')
215
-
216
- credit_card.cc_type = 'dinersclub'
217
- expect(credit_card.cc_type).to eq('diners_club')
218
-
219
- credit_card.cc_type = 'some_outlandish_cc_type'
220
- expect(credit_card.cc_type).to eq('some_outlandish_cc_type')
221
- end
222
-
223
- it "assigns the type based on card number in the event of js failure" do
224
- credit_card.number = '4242424242424242'
225
- credit_card.cc_type = ''
226
- expect(credit_card.cc_type).to eq('visa')
227
-
228
- credit_card.number = '5555555555554444'
229
- credit_card.cc_type = ''
230
- expect(credit_card.cc_type).to eq('master')
231
-
232
- credit_card.number = '2221000000000000'
233
- credit_card.cc_type = ''
234
- expect(credit_card.cc_type).to eq('master')
235
-
236
- credit_card.number = '378282246310005'
237
- credit_card.cc_type = ''
238
- expect(credit_card.cc_type).to eq('american_express')
239
-
240
- credit_card.number = '30569309025904'
241
- credit_card.cc_type = ''
242
- expect(credit_card.cc_type).to eq('diners_club')
243
-
244
- credit_card.number = '3530111333300000'
245
- credit_card.cc_type = ''
246
- expect(credit_card.cc_type).to eq('jcb')
247
-
248
- credit_card.number = ''
249
- credit_card.cc_type = ''
250
- expect(credit_card.cc_type).to eq('')
251
-
252
- credit_card.number = nil
253
- credit_card.cc_type = ''
254
- expect(credit_card.cc_type).to eq('')
255
- end
256
- end
257
-
258
- describe "#to_active_merchant" do
259
- before do
260
- credit_card.number = "4111111111111111"
261
- credit_card.year = Time.current.year
262
- credit_card.month = Time.current.month
263
- credit_card.name = "Ludwig van Beethoven"
264
- credit_card.verification_value = 123
265
- end
266
-
267
- it "converts to an ActiveMerchant::Billing::CreditCard object" do
268
- am_card = credit_card.to_active_merchant
269
- expect(am_card.number).to eq("4111111111111111")
270
- expect(am_card.year).to eq(Time.current.year)
271
- expect(am_card.month).to eq(Time.current.month)
272
- expect(am_card.first_name).to eq("Ludwig")
273
- expect(am_card.last_name).to eq("van Beethoven")
274
- expect(am_card.verification_value).to eq("123")
275
- end
276
- end
277
-
278
- # TODO: Remove these specs once default is removed
279
- describe 'default' do
280
- def default_with_silence(card)
281
- Spree::Deprecation.silence { card.default }
282
- end
283
-
284
- context 'with a user' do
285
- let(:user) { create(:user) }
286
- let(:credit_card) { create(:credit_card, user: user) }
287
-
288
- it 'uses the wallet information' do
289
- wallet_payment_source = user.wallet.add(credit_card)
290
- user.wallet.default_wallet_payment_source = wallet_payment_source
291
-
292
- expect(default_with_silence(credit_card)).to be_truthy
293
- end
294
- end
295
-
296
- context 'without a user' do
297
- let(:credit_card) { create(:credit_card) }
298
-
299
- it 'returns false' do
300
- expect(default_with_silence(credit_card)).to eq(false)
301
- end
302
- end
303
- end
304
-
305
- # TODO: Remove these specs once default= is removed
306
- describe 'default=' do
307
- def default_with_silence(card)
308
- Spree::Deprecation.silence { card.default }
309
- end
310
-
311
- context 'with a user' do
312
- let(:user) { create(:user) }
313
- let(:credit_card) { create(:credit_card, user: user) }
314
-
315
- it 'updates the wallet information' do
316
- Spree::Deprecation.silence do
317
- credit_card.default = true
318
- end
319
- expect(user.wallet.default_wallet_payment_source.payment_source).to eq(credit_card)
320
- end
321
- end
322
-
323
- context 'with multiple cards for one user' do
324
- let(:user) { create(:user) }
325
- let(:first_card) { create(:credit_card, user: user) }
326
- let(:second_card) { create(:credit_card, user: user) }
327
-
328
- it 'ensures only one default' do
329
- Spree::Deprecation.silence do
330
- first_card.default = true
331
- second_card.default = true
332
- end
333
-
334
- expect(default_with_silence(first_card)).to be_falsey
335
- expect(default_with_silence(second_card)).to be_truthy
336
-
337
- Spree::Deprecation.silence do
338
- first_card.default = true
339
- end
340
-
341
- expect(default_with_silence(first_card)).to be_truthy
342
- expect(default_with_silence(second_card)).to be_falsey
343
- end
344
- end
345
-
346
- context 'with multiple cards for different users' do
347
- let(:first_card) { create(:credit_card, user: create(:user)) }
348
- let(:second_card) { create(:credit_card, user: create(:user)) }
349
-
350
- it 'allows multiple defaults' do
351
- Spree::Deprecation.silence do
352
- first_card.default = true
353
- second_card.default = true
354
- end
355
-
356
- expect(default_with_silence(first_card)).to be_truthy
357
- expect(default_with_silence(second_card)).to be_truthy
358
- end
359
- end
360
-
361
- context 'without a user' do
362
- let(:credit_card) { create(:credit_card) }
363
-
364
- it 'raises' do
365
- expect {
366
- Spree::Deprecation.silence do
367
- credit_card.default = true
368
- end
369
- }.to raise_error("Cannot set 'default' on a credit card without a user")
370
- end
371
- end
372
- end
373
- end
@@ -1,294 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::CustomerReturn, type: :model do
6
- before do
7
- allow_any_instance_of(Spree::Order).to receive_messages(return!: true)
8
- end
9
-
10
- describe ".validation" do
11
- describe "#return_items_belong_to_same_order" do
12
- let(:customer_return) { build(:customer_return) }
13
-
14
- let(:first_order) { create(:order_with_line_items) }
15
- let(:second_order) { first_order }
16
-
17
- let(:first_shipment) { first_order.shipments.first }
18
- let(:second_shipment) { second_order.shipments.first }
19
-
20
- let(:first_inventory_unit) { build(:inventory_unit, shipment: first_shipment) }
21
- let(:first_return_item) { build(:return_item, inventory_unit: first_inventory_unit) }
22
-
23
- let(:second_inventory_unit) { build(:inventory_unit, shipment: second_shipment) }
24
- let(:second_return_item) { build(:return_item, inventory_unit: second_inventory_unit) }
25
-
26
- subject { customer_return.valid? }
27
-
28
- before do
29
- customer_return.return_items << first_return_item
30
- customer_return.return_items << second_return_item
31
- end
32
-
33
- context "return items are part of different orders" do
34
- let(:second_order) { create(:order_with_line_items) }
35
-
36
- it "is not valid" do
37
- expect(subject).to eq false
38
- end
39
-
40
- it "adds an error message" do
41
- subject
42
- expect(customer_return.errors.full_messages).to include(I18n.t('spree.return_items_cannot_be_associated_with_multiple_orders'))
43
- end
44
- end
45
-
46
- context "return items are part of the same order" do
47
- let(:second_order) { first_order }
48
-
49
- it "is valid" do
50
- expect(subject).to eq true
51
- end
52
- end
53
- end
54
- end
55
-
56
- describe ".before_create" do
57
- describe "#generate_number" do
58
- context "number is assigned" do
59
- let(:customer_return) { Spree::CustomerReturn.new(number: '123') }
60
-
61
- it "should return the assigned number" do
62
- customer_return.save
63
- expect(customer_return.number).to eq('123')
64
- end
65
- end
66
-
67
- context "number is not assigned" do
68
- let(:customer_return) { Spree::CustomerReturn.new(number: nil) }
69
-
70
- before do
71
- allow(customer_return).to receive_messages(valid?: true, process_return!: true)
72
- end
73
-
74
- it "should assign number with random CR number" do
75
- customer_return.save
76
- expect(customer_return.number).to match(/CR\d{9}/)
77
- end
78
- end
79
- end
80
- end
81
-
82
- describe "#total" do
83
- let(:amount) { 15.0 }
84
- let(:tax_amount) { 5.0 }
85
- let(:customer_return) { create(:customer_return, line_items_count: 2) }
86
-
87
- before do
88
- Spree::ReturnItem.where(customer_return_id: customer_return.id).update_all(amount: amount, additional_tax_total: tax_amount)
89
- customer_return.reload
90
- end
91
-
92
- subject { customer_return.total }
93
-
94
- it "returns the sum of the return item's total amount" do
95
- expect(subject).to eq((amount * 2) + (tax_amount * 2))
96
- end
97
- end
98
-
99
- describe "#display_total" do
100
- let(:customer_return) { stub_model(Spree::CustomerReturn, total: 21.22, currency: "GBP") }
101
-
102
- it "returns a Spree::Money" do
103
- expect(customer_return.display_total).to eq(Spree::Money.new(21.22, currency: "GBP"))
104
- end
105
- end
106
-
107
- describe "#currency" do
108
- let(:order) { stub_model(Spree::Order, currency: "GBP") }
109
- let(:customer_return) { stub_model(Spree::CustomerReturn, order: order) }
110
-
111
- it 'returns the order currency' do
112
- expect(Spree::Config.currency).to eq("USD")
113
- expect(customer_return.currency).to eq("GBP")
114
- end
115
- end
116
-
117
- describe "#amount" do
118
- let(:amount) { 15.0 }
119
- let(:customer_return) { create(:customer_return, line_items_count: 2) }
120
-
121
- before do
122
- Spree::ReturnItem.where(customer_return_id: customer_return.id).update_all(amount: amount)
123
- end
124
-
125
- subject { customer_return.amount }
126
-
127
- it "returns the sum of the return item's amount" do
128
- expect(subject).to eq(amount * 2)
129
- end
130
- end
131
-
132
- describe "#display_amount" do
133
- let(:customer_return) { stub_model(Spree::CustomerReturn, amount: 21.22, currency: "RUB") }
134
-
135
- it "returns a Spree::Money" do
136
- expect(customer_return.display_amount).to eq(Spree::Money.new(21.22, currency: "RUB"))
137
- end
138
- end
139
-
140
- describe "#order" do
141
- let(:return_item) { create(:return_item) }
142
- let(:customer_return) { build(:customer_return, return_items: [return_item]) }
143
-
144
- subject { customer_return.order }
145
-
146
- it "returns the order associated with the return item's inventory unit" do
147
- expect(subject).to eq return_item.inventory_unit.order
148
- end
149
- end
150
-
151
- describe "#order_id" do
152
- subject { customer_return.order_id }
153
-
154
- context "return item is not associated yet" do
155
- let(:customer_return) { build(:customer_return) }
156
-
157
- it "is nil" do
158
- expect(subject).to be_nil
159
- end
160
- end
161
-
162
- context "has an associated return item" do
163
- let(:return_item) { create(:return_item) }
164
- let(:customer_return) { build(:customer_return, return_items: [return_item]) }
165
-
166
- it "is the return item's inventory unit's order id" do
167
- expect(subject).to eq return_item.inventory_unit.order.id
168
- end
169
- end
170
- end
171
-
172
- context ".after_save" do
173
- let(:inventory_unit) { create(:inventory_unit, state: 'shipped', order: create(:shipped_order)) }
174
- let(:return_item) { build(:return_item, inventory_unit: inventory_unit) }
175
-
176
- context "to the initial stock location" do
177
- it "should mark the received inventory units are returned" do
178
- create(:customer_return_without_return_items, return_items: [return_item], stock_location_id: inventory_unit.shipment.stock_location_id)
179
- return_item.receive!
180
- expect(inventory_unit.reload.state).to eq 'returned'
181
- end
182
-
183
- it "should update the stock item counts in the stock location" do
184
- expect do
185
- create(:customer_return_without_return_items, return_items: [return_item], stock_location_id: inventory_unit.shipment.stock_location_id)
186
- return_item.receive!
187
- end.to change { inventory_unit.find_stock_item.count_on_hand }.by(1)
188
- end
189
-
190
- context 'with Config.track_inventory_levels == false' do
191
- before do
192
- stub_spree_preferences(track_inventory_levels: false)
193
- expect(Spree::StockItem).not_to receive(:find_by)
194
- expect(Spree::StockMovement).not_to receive(:create!)
195
- end
196
-
197
- it "should NOT update the stock item counts in the stock location" do
198
- count_on_hand = inventory_unit.find_stock_item.count_on_hand
199
- create(:customer_return_without_return_items, return_items: [return_item], stock_location_id: inventory_unit.shipment.stock_location_id)
200
- expect(inventory_unit.find_stock_item.count_on_hand).to eql count_on_hand
201
- end
202
- end
203
- end
204
-
205
- context "to a different stock location" do
206
- let(:new_stock_location) { create(:stock_location, name: "other") }
207
-
208
- it "should update the stock item counts in new stock location" do
209
- expect {
210
- create(:customer_return_without_return_items, return_items: [return_item], stock_location_id: new_stock_location.id)
211
- return_item.receive!
212
- }.to change {
213
- Spree::StockItem.where(variant_id: inventory_unit.variant_id, stock_location_id: new_stock_location.id).first.count_on_hand
214
- }.by(1)
215
- end
216
-
217
- it "should NOT raise an error when no stock item exists in the stock location" do
218
- inventory_unit.find_stock_item.really_destroy!
219
- create(:customer_return_without_return_items, return_items: [return_item], stock_location_id: new_stock_location.id)
220
- end
221
-
222
- it "should NOT raise an error when a soft-deleted stock item exists in the stock location" do
223
- inventory_unit.find_stock_item.discard
224
- create(:customer_return_without_return_items, return_items: [return_item], stock_location_id: new_stock_location.id)
225
- end
226
-
227
- it "should not update the stock item counts in the original stock location" do
228
- count_on_hand = inventory_unit.find_stock_item.count_on_hand
229
- create(:customer_return_without_return_items, return_items: [return_item], stock_location_id: new_stock_location.id)
230
- expect(inventory_unit.find_stock_item.count_on_hand).to eq(count_on_hand)
231
- end
232
- end
233
-
234
- context "it was not received" do
235
- before do
236
- return_item.update!(reception_status: "lost_in_transit")
237
- end
238
-
239
- it 'should not updated inventory unit to returned' do
240
- create(:customer_return_without_return_items, return_items: [return_item], stock_location_id: inventory_unit.shipment.stock_location_id)
241
- expect(inventory_unit.reload.state).to eq 'shipped'
242
- end
243
-
244
- it "should not update the stock item counts in the stock location" do
245
- expect do
246
- create(:customer_return_without_return_items, return_items: [return_item], stock_location_id: inventory_unit.shipment.stock_location_id)
247
- end.to_not change { inventory_unit.find_stock_item.count_on_hand }
248
- end
249
- end
250
- end
251
-
252
- describe '#fully_reimbursed?' do
253
- let(:customer_return) { create(:customer_return) }
254
-
255
- let!(:default_refund_reason) { Spree::RefundReason.find_or_create_by!(name: Spree::RefundReason::RETURN_PROCESSING_REASON, mutable: false) }
256
-
257
- subject { customer_return.fully_reimbursed? }
258
-
259
- context 'when some return items are undecided' do
260
- it { is_expected.to be false }
261
- end
262
-
263
- context 'when all return items are decided' do
264
- context 'when all return items are rejected' do
265
- before { customer_return.return_items.each(&:reject!) }
266
-
267
- it { is_expected.to be true }
268
- end
269
-
270
- context 'when all return items are accepted' do
271
- before { customer_return.return_items.each(&:accept!) }
272
-
273
- context 'when some return items have no reimbursement' do
274
- it { is_expected.to be false }
275
- end
276
-
277
- context 'when all return items have a reimbursement' do
278
- let!(:reimbursement) { create(:reimbursement, customer_return: customer_return) }
279
-
280
- context 'when some reimbursements are not reimbursed' do
281
- it { is_expected.to be false }
282
- end
283
-
284
- context 'when all reimbursements are reimbursed' do
285
- let(:created_by_user) { create(:user, email: 'user@email.com') }
286
- before { reimbursement.perform!(created_by: created_by_user) }
287
-
288
- it { is_expected.to be true }
289
- end
290
- end
291
- end
292
- end
293
- end
294
- end