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,126 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::UnitCancel do
6
- let(:unit_cancel) { described_class.create!(inventory_unit: inventory_unit, reason: described_class::SHORT_SHIP) }
7
- let(:inventory_unit) { create(:inventory_unit) }
8
-
9
- describe '#adjust!' do
10
- subject { unit_cancel.adjust! }
11
-
12
- it "creates an adjustment with the correct attributes" do
13
- expect { subject }.to change{ Spree::Adjustment.count }.by(1)
14
-
15
- adjustment = Spree::Adjustment.last
16
- expect(adjustment.adjustable).to eq inventory_unit.line_item
17
- expect(adjustment.amount).to eq(-10.0)
18
- expect(adjustment.order).to eq inventory_unit.order
19
- expect(adjustment.label).to eq "Cancellation - Short Ship"
20
- expect(adjustment).to be_eligible
21
- expect(adjustment).to be_finalized
22
- end
23
-
24
- context "when an adjustment has already been created" do
25
- before { unit_cancel.adjust! }
26
-
27
- it "raises" do
28
- expect { subject }.to raise_error("Adjustment is already created")
29
- end
30
- end
31
- end
32
-
33
- describe '#compute_amount' do
34
- subject { unit_cancel.compute_amount(line_item) }
35
-
36
- let(:line_item) { inventory_unit.line_item }
37
- let!(:inventory_unit2) { create(:inventory_unit, line_item: inventory_unit.line_item) }
38
-
39
- context "all inventory on the line item are not canceled" do
40
- it "divides the line item total by the inventory units size" do
41
- expect(subject).to eq(-5.0)
42
- end
43
- end
44
-
45
- context "some inventory on the line item is canceled" do
46
- before { inventory_unit2.cancel! }
47
-
48
- it "divides the line item total by the uncanceled units size" do
49
- expect(subject).to eq(-10.0)
50
- end
51
-
52
- it "raises an error if dividing by 0" do
53
- inventory_unit.cancel!
54
- expect { subject }.to raise_error ZeroDivisionError, "Line Item does not have any inventory units available to cancel"
55
- end
56
- end
57
-
58
- context "it is called with a line item that doesnt belong to the inventory unit" do
59
- let(:line_item) { create(:line_item) }
60
-
61
- it "raises an error" do
62
- expect { subject }.to raise_error RuntimeError, "Adjustable does not match line item"
63
- end
64
- end
65
-
66
- context "multiple inventory units" do
67
- let(:quantity) { 4 }
68
- let(:order) { create(:order_with_line_items, line_items_attributes: [{ quantity: quantity }]) }
69
- let(:line_item) { order.line_items.first }
70
- let(:inventory_units) { line_item.inventory_units }
71
-
72
- it "has the right amount of inventory units" do
73
- expect(inventory_units.size).to eq quantity
74
- end
75
-
76
- it "properly creates adjustments for line_item" do
77
- inventory_units.each do |inventory_unit|
78
- described_class.create!(inventory_unit: inventory_unit, reason: described_class::SHORT_SHIP).adjust!
79
- inventory_unit.cancel!
80
- end
81
- expect(line_item.reload.total.to_d).to eq(0)
82
- end
83
- end
84
-
85
- context 'when line item has additional taxes' do
86
- let(:world_zone) { create(:zone, :with_country) }
87
- let(:tax_category) { create :tax_category }
88
- let(:product) { create :product, tax_category: tax_category }
89
- let!(:additional_tax_rate) do
90
- create(
91
- :tax_rate,
92
- name: 'Additional tax',
93
- tax_categories: [tax_category],
94
- zone: world_zone,
95
- included_in_price: false,
96
- amount: 0.15
97
- )
98
- end
99
- let(:shipping_category) { create :shipping_category }
100
- let(:shipping_method) do
101
- create :shipping_method,
102
- cost: 8.00,
103
- shipping_categories: [shipping_category],
104
- tax_category: tax_category,
105
- zones: [world_zone]
106
- end
107
- let(:shipping_address) { create :address, country_iso_code: world_zone.countries.first.iso }
108
- let(:order) do
109
- create(
110
- :order_with_line_items,
111
- ship_address: shipping_address,
112
- line_items_attributes: [{ product: product }]
113
- )
114
- end
115
- let(:line_item) { order.line_items.first }
116
- let(:inventory_unit) { line_item.inventory_units.first }
117
-
118
- before { order.recalculate }
119
-
120
- it 'does not include line item additional taxes' do
121
- expect(line_item.additional_tax_total).not_to eq 0
122
- expect(subject).to eq(-5.0)
123
- end
124
- end
125
- end
126
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::UserLastUrlStorer::Rules::AuthenticationRule do
6
- describe '#match?' do
7
- let(:login_path) { '/sign_in' }
8
- let(:request) { double(fullpath: fullpath) }
9
- let(:controller) do
10
- double(
11
- request: request,
12
- spree_login_path: login_path,
13
- controller_name: 'controller_double'
14
- )
15
- end
16
-
17
- subject { described_class.match?(controller) }
18
-
19
- context 'when the request full path is an authentication route' do
20
- let!(:fullpath) { login_path }
21
-
22
- it { is_expected.to be true }
23
- end
24
-
25
- context 'when the request full path is not an authentication route' do
26
- let!(:fullpath) { '/products/baseball-cap' }
27
-
28
- it { is_expected.to be false }
29
- end
30
- end
31
- end
@@ -1,60 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::UserLastUrlStorer do
6
- subject { described_class.new(controller) }
7
-
8
- let(:fullpath) { '/products/baseball-cap' }
9
- let(:session) { {} }
10
- let(:request) { double(fullpath: fullpath) }
11
- let(:controller) do
12
- instance_double(
13
- ApplicationController,
14
- request: request,
15
- session: session,
16
- controller_name: 'app_controller_double'
17
- )
18
- end
19
-
20
- module CustomRule
21
- def self.match?(_controller)
22
- true
23
- end
24
- end
25
-
26
- after :each do
27
- described_class.rules.delete('CustomRule')
28
- end
29
-
30
- describe '::rules' do
31
- it 'includes default rules' do
32
- rule = Spree::UserLastUrlStorer::Rules::AuthenticationRule
33
- expect(described_class.rules).to include(rule)
34
- end
35
-
36
- it 'can add new rules' do
37
- described_class.rules << CustomRule
38
- expect(described_class.rules).to include(CustomRule)
39
- end
40
- end
41
-
42
- describe '#store_location' do
43
- context 'when at least one rule matches' do
44
- it 'does not set the path value into the session' do
45
- described_class.rules << CustomRule
46
- subject.store_location
47
- expect(session[:spree_user_return_to]).to be_nil
48
- end
49
- end
50
-
51
- context 'when no rule matches' do
52
- it 'sets the path value into the session' do
53
- described_class.rules << CustomRule
54
- described_class.rules.delete('CustomRule')
55
- subject.store_location
56
- expect(session[:spree_user_return_to]).to eql fullpath
57
- end
58
- end
59
- end
60
- end
@@ -1,247 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::LegacyUser, type: :model do
6
- context "#last_incomplete_order" do
7
- let!(:user) { create(:user) }
8
-
9
- it "excludes orders that are not frontend_viewable" do
10
- create(:order, user: user, frontend_viewable: false)
11
- expect(user.last_incomplete_spree_order).to eq nil
12
- end
13
-
14
- it "can include orders that are not frontend viewable" do
15
- order = create(:order, user: user, frontend_viewable: false)
16
- expect(user.last_incomplete_spree_order(only_frontend_viewable: false)).to eq order
17
- end
18
-
19
- it "can scope to a store" do
20
- store = create(:store)
21
- store_1_order = create(:order, user: user, store: store)
22
- create(:order, user: user, store: create(:store))
23
- expect(user.last_incomplete_spree_order(store: store)).to eq store_1_order
24
- end
25
-
26
- it "excludes completed orders" do
27
- create(:completed_order_with_totals, user: user, created_by: user)
28
- expect(user.last_incomplete_spree_order).to eq nil
29
- end
30
-
31
- it "excludes orders created prior to the user's last completed order" do
32
- create(:order, user: user, created_by: user, created_at: 1.second.ago)
33
- create(:completed_order_with_totals, user: user, created_by: user)
34
- expect(user.last_incomplete_spree_order).to eq nil
35
- end
36
-
37
- context "with completable_order_created_cutoff set" do
38
- before do
39
- stub_spree_preferences(completable_order_created_cutoff_days: 1)
40
- end
41
-
42
- it "excludes orders updated outside of the cutoff date" do
43
- create(:order, user: user, created_by: user, created_at: 3.days.ago, updated_at: 2.days.ago)
44
- expect(user.last_incomplete_spree_order).to eq nil
45
- end
46
- end
47
-
48
- context "with completable_order_created_cutoff set" do
49
- before do
50
- stub_spree_preferences(completable_order_updated_cutoff_days: 1)
51
- end
52
-
53
- it "excludes orders updated outside of the cutoff date" do
54
- create(:order, user: user, created_by: user, created_at: 3.days.ago, updated_at: 2.days.ago)
55
- expect(user.last_incomplete_spree_order).to eq nil
56
- end
57
- end
58
-
59
- it "chooses the most recently created incomplete order" do
60
- create(:order, user: user, created_at: 1.second.ago)
61
- order_2 = create(:order, user: user)
62
- expect(user.last_incomplete_spree_order).to eq order_2
63
- end
64
-
65
- context "persists order address" do
66
- let(:bill_address) { create(:address) }
67
- let(:ship_address) { create(:address) }
68
- let(:order) { create(:order, user: user, bill_address: bill_address, ship_address: ship_address) }
69
-
70
- it "doesn't create new addresses" do
71
- user.user_addresses.create(address: bill_address)
72
- user.user_addresses.create(address: ship_address)
73
- user.reload
74
-
75
- expect {
76
- user.persist_order_address(order)
77
- }.not_to change { Spree::Address.count }
78
- end
79
-
80
- it "associates both the bill and ship address to the user" do
81
- user.persist_order_address(order)
82
- user.save!
83
- user.user_addresses.reload
84
-
85
- expect(user.user_addresses.find_first_by_address_values(order.bill_address.attributes)).to_not be_nil
86
- expect(user.user_addresses.find_first_by_address_values(order.ship_address.attributes)).to_not be_nil
87
- end
88
- end
89
-
90
- context "payment source" do
91
- let(:payment_method) { create(:credit_card_payment_method) }
92
- let!(:cc) do
93
- create(:credit_card, user_id: user.id, payment_method: payment_method, gateway_customer_profile_id: "2342343")
94
- end
95
-
96
- it "has payment sources" do
97
- Spree::Deprecation.silence do
98
- expect(user.payment_sources.first.gateway_customer_profile_id).not_to be_empty
99
- end
100
- end
101
- end
102
- end
103
- end
104
-
105
- RSpec.describe Spree.user_class, type: :model do
106
- context "reporting" do
107
- let(:order_value) { BigDecimal("80.94") }
108
- let(:order_count) { 4 }
109
- let(:orders) { Array.new(order_count, double(total: order_value)) }
110
-
111
- before do
112
- allow(orders).to receive(:pluck).with(:total).and_return(orders.map(&:total))
113
- allow(orders).to receive(:count).and_return(orders.length)
114
- end
115
-
116
- def load_orders
117
- allow(subject).to receive(:spree_orders).and_return(double(complete: orders))
118
- end
119
-
120
- describe "#lifetime_value" do
121
- context "with orders" do
122
- before { load_orders }
123
- it "returns the total of completed orders for the user" do
124
- expect(subject.lifetime_value).to eq(order_count * order_value)
125
- end
126
- end
127
- context "without orders" do
128
- it "returns 0.00" do
129
- expect(subject.lifetime_value).to eq BigDecimal("0.00")
130
- end
131
- end
132
- end
133
-
134
- describe "#display_lifetime_value" do
135
- it "returns a Spree::Money version of lifetime_value" do
136
- value = BigDecimal("500.05")
137
- allow(subject).to receive(:lifetime_value).and_return(value)
138
- expect(subject.display_lifetime_value).to eq Spree::Money.new(value)
139
- end
140
- end
141
-
142
- describe "#order_count" do
143
- before { load_orders }
144
- it "returns the count of completed orders for the user" do
145
- expect(subject.order_count).to eq order_count
146
- end
147
- end
148
-
149
- describe "#average_order_value" do
150
- context "with orders" do
151
- before { load_orders }
152
- it "returns the average completed order price for the user" do
153
- expect(subject.average_order_value).to eq order_value
154
- end
155
- end
156
- context "without orders" do
157
- it "returns 0.00" do
158
- expect(subject.average_order_value).to eq BigDecimal("0.00")
159
- end
160
- end
161
- end
162
-
163
- describe "#display_average_order_value" do
164
- before { load_orders }
165
- it "returns a Spree::Money version of average_order_value" do
166
- value = BigDecimal("500.05")
167
- allow(subject).to receive(:average_order_value).and_return(value)
168
- expect(subject.display_average_order_value).to eq Spree::Money.new(value)
169
- end
170
- end
171
- end
172
-
173
- # TODO: Remove this after the method has been fully removed
174
- describe "#total_available_store_credit" do
175
- before do
176
- allow_any_instance_of(Spree::LegacyUser).to receive(:total_available_store_credit).and_wrap_original do |method, *args|
177
- Spree::Deprecation.silence do
178
- method.call(*args)
179
- end
180
- end
181
- end
182
-
183
- context "user does not have any associated store credits" do
184
- subject { create(:user) }
185
-
186
- it "returns 0" do
187
- expect(subject.total_available_store_credit).to be_zero
188
- end
189
- end
190
-
191
- context "user has several associated store credits" do
192
- let(:user) { create(:user) }
193
- let(:amount) { 120.25 }
194
- let(:additional_amount) { 55.75 }
195
- let(:store_credit) { create(:store_credit, user: user, amount: amount, amount_used: 0.0) }
196
- let!(:additional_store_credit) { create(:store_credit, user: user, amount: additional_amount, amount_used: 0.0) }
197
-
198
- subject { store_credit.user }
199
-
200
- context "part of the store credit has been used" do
201
- let(:amount_used) { 35.00 }
202
-
203
- before { store_credit.update(amount_used: amount_used) }
204
-
205
- context "part of the store credit has been authorized" do
206
- let(:authorized_amount) { 10 }
207
-
208
- before { additional_store_credit.update(amount_authorized: authorized_amount) }
209
-
210
- it "returns sum of amounts minus used amount and authorized amount" do
211
- expect(subject.total_available_store_credit.to_f).to eq(amount + additional_amount - amount_used - authorized_amount)
212
- end
213
- end
214
-
215
- context "there are no authorized amounts on any of the store credits" do
216
- it "returns sum of amounts minus used amount" do
217
- expect(subject.total_available_store_credit.to_f).to eq(amount + additional_amount - amount_used)
218
- end
219
- end
220
- end
221
-
222
- context "store credits have never been used" do
223
- context "part of the store credit has been authorized" do
224
- let(:authorized_amount) { 10 }
225
-
226
- before { additional_store_credit.update(amount_authorized: authorized_amount) }
227
-
228
- it "returns sum of amounts minus authorized amount" do
229
- expect(subject.total_available_store_credit.to_f).to eq(amount + additional_amount - authorized_amount)
230
- end
231
- end
232
-
233
- context "there are no authorized amounts on any of the store credits" do
234
- it "returns sum of amounts" do
235
- expect(subject.total_available_store_credit.to_f).to eq(amount + additional_amount)
236
- end
237
- end
238
- end
239
-
240
- context "all store credits have never been used or authorized" do
241
- it "returns sum of amounts" do
242
- expect(subject.total_available_store_credit.to_f).to eq(amount + additional_amount)
243
- end
244
- end
245
- end
246
- end
247
- end
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Validations::DbMaximumLengthValidator, type: :model do
6
- with_model 'LimitedProduct', scope: :all do
7
- table do |t|
8
- t.string :slug, limit: 255
9
- end
10
-
11
- model do
12
- validates_with Spree::Validations::DbMaximumLengthValidator, field: :slug
13
- end
14
- end
15
-
16
- let(:record) { LimitedProduct.new(slug: slug) }
17
-
18
- context "when slug is below limit" do
19
- let(:slug) { 'a' * 255 }
20
- it 'should be valid' do
21
- expect(record).to be_valid
22
- expect(record.errors).to be_empty
23
- end
24
- end
25
-
26
- context "when slug is too long" do
27
- let(:slug) { 'a' * 256 }
28
- it 'should be invalid and set error' do
29
- expect(record).not_to be_valid
30
- expect(record.errors[:slug]).to include(I18n.t("errors.messages.too_long", count: 255))
31
- end
32
- end
33
- end
@@ -1,90 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Variant::PriceSelector do
6
- let(:variant) { build_stubbed(:variant) }
7
-
8
- subject { described_class.new(variant) }
9
-
10
- it { is_expected.to respond_to(:variant) }
11
- it { is_expected.to respond_to(:price_for) }
12
-
13
- describe ".pricing_options_class" do
14
- it "returns the standard pricing options class" do
15
- expect(described_class.pricing_options_class).to eq(Spree::Variant::PricingOptions)
16
- end
17
- end
18
-
19
- describe "#price_for(options)" do
20
- let(:variant) { create(:variant, price: 12.34) }
21
-
22
- context "with the default currency" do
23
- let(:pricing_options) { described_class.pricing_options_class.new(currency: "USD") }
24
-
25
- it "returns the correct (default) price as a Spree::Money object" do
26
- expect(subject.price_for(pricing_options)).to eq(Spree::Money.new(12.34, currency: "USD"))
27
- end
28
-
29
- context "with the another country iso" do
30
- let(:country) { create(:country, iso: "DE") }
31
-
32
- let(:pricing_options) do
33
- described_class.pricing_options_class.new(currency: "USD", country_iso: "DE")
34
- end
35
-
36
- context "with a price for that country present" do
37
- before do
38
- variant.prices.create(amount: 44.44, country: country, currency: Spree::Config.currency)
39
- end
40
-
41
- it "returns the correct price" do
42
- expect(subject.price_for(pricing_options)).to eq(Spree::Money.new(44.44, currency: "USD"))
43
- end
44
- end
45
-
46
- context "with no price for that country present" do
47
- context "and no fallback price for the variant present" do
48
- before do
49
- variant.prices.delete_all
50
- end
51
-
52
- it "returns nil" do
53
- expect(subject.price_for(pricing_options)).to be_nil
54
- end
55
- end
56
-
57
- context "and a fallback price for the variant present" do
58
- before do
59
- variant.prices.create(amount: 55.44, country: nil, currency: Spree::Config.currency)
60
- end
61
-
62
- it "returns the fallback price" do
63
- expect(subject.price_for(pricing_options)).to eq(Spree::Money.new(55.44, currency: "USD"))
64
- end
65
- end
66
- end
67
- end
68
- end
69
-
70
- context "with a different currency" do
71
- let(:pricing_options) { described_class.pricing_options_class.new(currency: "EUR") }
72
-
73
- context "when there is a price for that currency" do
74
- before do
75
- variant.prices.create(amount: 99.00, currency: "EUR")
76
- end
77
-
78
- it "returns the price in the correct currency as a Spree::Money object" do
79
- expect(subject.price_for(pricing_options)).to eq(Spree::Money.new(99.00, currency: "EUR"))
80
- end
81
- end
82
-
83
- context "when there is no price for that currency" do
84
- it "returns nil" do
85
- expect(subject.price_for(pricing_options)).to be_nil
86
- end
87
- end
88
- end
89
- end
90
- end