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,358 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- RSpec.describe UserAddressBook do
7
- #
8
- # Using LegacyUser as a subject
9
- # since it uses the UserAddressBookExtension
10
- #
11
- let!(:user) { create(:user) }
12
-
13
- describe "#save_in_address_book" do
14
- context "saving a default address" do
15
- let(:user_address) { user.user_addresses.find_first_by_address_values(address.attributes) }
16
-
17
- subject { user.save_in_address_book(address.attributes, true) }
18
-
19
- context "the address is a new record" do
20
- let(:address) { build(:address) }
21
-
22
- it "creates a new Address" do
23
- expect { subject }.to change { Spree::Address.count }.by(1)
24
- end
25
-
26
- it "creates a UserAddress" do
27
- expect { subject }.to change { Spree::UserAddress.count }.by(1)
28
- end
29
-
30
- it "sets the UserAddress default flag to true" do
31
- subject
32
- expect(user_address.default).to eq true
33
- end
34
-
35
- it "adds the address to the user's the associated addresses" do
36
- expect { subject }.to change { user.reload.addresses.count }.by(1)
37
- end
38
- end
39
-
40
- context "user already has a default address" do
41
- let(:address) { create(:address) }
42
- let(:original_default_address) { create(:ship_address) }
43
- let(:original_user_address) { user.user_addresses.find_first_by_address_values(original_default_address.attributes) }
44
-
45
- before do
46
- user.user_addresses.create(address: original_default_address, default: true)
47
- end
48
-
49
- it "makes all the other associated addresses not be the default" do
50
- expect { subject }.to change { original_user_address.reload.default }.from(true).to(false)
51
- end
52
-
53
- context "an odd flip-flop corner case discovered running backfill rake task" do
54
- before do
55
- user.save_in_address_book(original_default_address.attributes, true)
56
- user.save_in_address_book(address.attributes, true)
57
- end
58
-
59
- it "handles setting 2 addresses as default without a reload of user" do
60
- user.save_in_address_book(original_default_address.attributes, true)
61
- user.save_in_address_book(address.attributes, true)
62
- expect(user.addresses.count).to eq 2
63
- expect(user.default_address.address1).to eq address.address1
64
- end
65
- end
66
- end
67
-
68
- context "changing existing address to default" do
69
- let(:address) { create(:address) }
70
-
71
- before do
72
- user.user_addresses.create(address: address, default: false)
73
- end
74
-
75
- it "properly sets the default flag" do
76
- expect(subject).to eq user.default_address
77
- end
78
-
79
- context "and changing another address field at the same time" do
80
- let(:updated_address_attributes) { address.attributes.tap { |value| value[:first_name] = "Newbie" } }
81
-
82
- subject { user.save_in_address_book(updated_address_attributes, true) }
83
-
84
- it "changes first name" do
85
- expect(subject.first_name).to eq updated_address_attributes[:first_name]
86
- end
87
-
88
- it "preserves last name" do
89
- expect(subject.last_name).to eq address.last_name
90
- end
91
-
92
- it "is a new immutable address instance" do
93
- expect(subject.id).to_not eq address.id
94
- end
95
-
96
- it "is the new default" do
97
- expect(subject).to eq user.default_address
98
- end
99
- end
100
- end
101
- end
102
-
103
- context "updating an address and making default at once" do
104
- let(:address1) { create(:address) }
105
- let(:address2) { create(:address, firstname: "Different") }
106
- let(:updated_attrs) do
107
- address2.attributes.tap { |value| value[:firstname] = "Johnny" }
108
- end
109
-
110
- before do
111
- user.save_in_address_book(address1.attributes, true)
112
- user.save_in_address_book(address2.attributes, false)
113
- end
114
-
115
- it "returns the edit as the first address" do
116
- user.save_in_address_book(updated_attrs, true)
117
- expect(user.user_addresses.first.address.firstname).to eq "Johnny"
118
- end
119
- end
120
-
121
- context "saving a non-default address" do
122
- let(:user_address) { user.user_addresses.find_first_by_address_values(address.attributes) }
123
-
124
- subject { user.save_in_address_book(address.attributes) }
125
-
126
- context "the address is a new record" do
127
- let(:address) { build(:address) }
128
-
129
- it "creates a new Address" do
130
- expect { subject }.to change { Spree::Address.count }.by(1)
131
- end
132
-
133
- it "creates a UserAddress" do
134
- expect { subject }.to change { Spree::UserAddress.count }.by(1)
135
- end
136
-
137
- context "it is not the first address" do
138
- before { user.user_addresses.create!(address: create(:address)) }
139
- it "sets the UserAddress default flag to false" do
140
- expect { subject }.to change { Spree::UserAddress.count }.by(1)
141
- expect(user_address.default).to eq false
142
- end
143
- end
144
-
145
- context "it is the first address" do
146
- it "sets the UserAddress default flag to true" do
147
- subject
148
- expect(user_address.default).to eq true
149
- end
150
- end
151
-
152
- it "adds the address to the user's the associated addresses" do
153
- expect { subject }.to change { user.reload.addresses.count }.by(1)
154
- end
155
- end
156
- end
157
-
158
- context "resurrecting a previously saved (but now archived) address" do
159
- let(:address) { create(:address) }
160
- before do
161
- user.save_in_address_book(address.attributes, true)
162
- user.remove_from_address_book(address.id)
163
- end
164
- subject { user.save_in_address_book(address.attributes, true) }
165
-
166
- it "returns the address" do
167
- expect(subject).to eq address
168
- end
169
-
170
- it "sets it as default" do
171
- subject
172
- expect(user.default_address).to eq address
173
- end
174
-
175
- context "via an edit to another address" do
176
- let(:address2) { create(:address, firstname: "Different") }
177
- let(:edited_attributes) do
178
- # conceptually edit address2 to match the values of address
179
- edited_attributes = address.attributes
180
- edited_attributes[:id] = address2.id
181
- edited_attributes
182
- end
183
-
184
- before { user.save_in_address_book(address2.attributes, true) }
185
-
186
- subject { user.save_in_address_book(edited_attributes) }
187
-
188
- it "returns the address" do
189
- expect(subject).to eq address
190
- end
191
-
192
- it "archives address2" do
193
- subject
194
- user_address_two = user.user_addresses.all_historical.find_by(address_id: address2.id)
195
- expect(user_address_two.archived).to be true
196
- end
197
-
198
- context "via a new address that matches an archived one" do
199
- let(:added_attributes) do
200
- added_attributes = address.attributes
201
- added_attributes.delete(:id)
202
- added_attributes
203
- end
204
-
205
- subject { user.save_in_address_book(added_attributes) }
206
-
207
- it "returns the address" do
208
- expect(subject).to eq address
209
- end
210
-
211
- it "no longer has archived user_addresses" do
212
- subject
213
- expect(user.user_addresses.all_historical).to eq user.user_addresses
214
- end
215
- end
216
- end
217
- end
218
- end
219
-
220
- context "#remove_from_address_book" do
221
- let(:address1) { create(:address) }
222
- let(:address2) { create(:address, firstname: "Different") }
223
- let(:remove_id) { address1.id }
224
- subject { user.remove_from_address_book(remove_id) }
225
-
226
- before do
227
- user.save_in_address_book(address1.attributes)
228
- user.save_in_address_book(address2.attributes)
229
- end
230
-
231
- it "removes the address from user_addresses" do
232
- subject
233
- expect(user.user_addresses.find_first_by_address_values(address1.attributes)).to be_nil
234
- end
235
-
236
- it "leaves user_address record in an archived state" do
237
- subject
238
- archived_user_address = user.user_addresses.all_historical.find_first_by_address_values(address1.attributes)
239
- expect(archived_user_address).to be_archived
240
- end
241
-
242
- it "returns false if the addresses is not there" do
243
- expect(user.remove_from_address_book(0)).to be false
244
- end
245
- end
246
-
247
- context "#persist_order_address" do
248
- it 'will save the bill/ship_address reference if it can' do
249
- order = create :order
250
- user.persist_order_address(order)
251
-
252
- expect( user.bill_address_id ).to eq order.bill_address_id
253
- expect( user.ship_address_id ).to eq order.ship_address_id
254
- expect( user.bill_address_id ).not_to eq user.ship_address_id
255
- end
256
-
257
- context "when automatic_default_address preference is at a default of true" do
258
- before do
259
- stub_spree_preferences(automatic_default_address: true)
260
- expect(user).to receive(:save_in_address_book).with(kind_of(Hash), true)
261
- expect(user).to receive(:save_in_address_book).with(kind_of(Hash), false)
262
- end
263
-
264
- it "does set the default: true flag" do
265
- order = build(:order)
266
- user.persist_order_address(order)
267
- end
268
- end
269
-
270
- context "when automatic_default_address preference is false" do
271
- before do
272
- stub_spree_preferences(automatic_default_address: false)
273
- expect(user).to receive(:save_in_address_book).with(kind_of(Hash), false).twice
274
- # and not the optional 2nd argument
275
- end
276
-
277
- it "does not set the default: true flag" do
278
- order = build(:order)
279
- user.persist_order_address(order)
280
- end
281
- end
282
-
283
- context "when address is nil" do
284
- context "when automatic_default_address preference is at a default of true" do
285
- before do
286
- stub_spree_preferences(automatic_default_address: true)
287
- expect(user).to receive(:save_in_address_book).with(kind_of(Hash), true).once
288
- end
289
-
290
- it "does not call save_in_address_book on ship address" do
291
- order = build(:order)
292
- order.ship_address = nil
293
-
294
- user.persist_order_address(order)
295
- end
296
-
297
- it "does not call save_in_address_book on bill address" do
298
- order = build(:order)
299
- order.bill_address = nil
300
-
301
- user.persist_order_address(order)
302
- end
303
- end
304
- end
305
-
306
- context "when automatic_default_address preference is false" do
307
- before do
308
- stub_spree_preferences(automatic_default_address: false)
309
- expect(user).to receive(:save_in_address_book).with(kind_of(Hash), false).once
310
- end
311
-
312
- it "does not call save_in_address_book on ship address" do
313
- order = build(:order)
314
- order.ship_address = nil
315
-
316
- user.persist_order_address(order)
317
- end
318
-
319
- it "does not call save_in_address_book on bill address" do
320
- order = build(:order)
321
- order.bill_address = nil
322
-
323
- user.persist_order_address(order)
324
- end
325
- end
326
- end
327
-
328
- describe "generating a new user with a ship_address at once" do
329
- let(:ship_address) { build(:ship_address) }
330
- subject { create(:user, ship_address: ship_address) }
331
-
332
- it "stores the ship_address" do
333
- expect(subject.ship_address).to eq ship_address
334
- end
335
-
336
- it "is also available as default_address" do
337
- expect(subject.default_address).to eq ship_address
338
- end
339
- end
340
-
341
- describe "ship_address=" do
342
- let!(:user) { create(:user) }
343
- let!(:address) { create(:address) }
344
-
345
- # https://github.com/solidusio/solidus/issues/1241
346
- it "resets the association and persists" do
347
- # Load (which will cache) the has_one association
348
- expect(user.ship_address).to be_nil
349
-
350
- user.update!(ship_address: address)
351
- expect(user.ship_address).to eq(address)
352
-
353
- user.reload
354
- expect(user.ship_address).to eq(address)
355
- end
356
- end
357
- end
358
- end
@@ -1,122 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::UserMethods do
6
- let(:test_user) { create :user }
7
-
8
- describe '#has_spree_role?' do
9
- subject { test_user.has_spree_role? name }
10
-
11
- let(:role) { Spree::Role.create(name: name) }
12
- let(:name) { 'test' }
13
-
14
- context 'with a role' do
15
- before { test_user.spree_roles << role }
16
- it { is_expected.to be_truthy }
17
- end
18
-
19
- context 'without a role' do
20
- it { is_expected.to be_falsy }
21
- end
22
- end
23
-
24
- describe '#last_incomplete_spree_order' do
25
- subject { test_user.last_incomplete_spree_order }
26
-
27
- context 'with an incomplete order' do
28
- let(:last_incomplete_order) { create :order, user: test_user }
29
-
30
- before do
31
- create(:order, user: test_user, created_at: 1.day.ago)
32
- create(:order, user: create(:user))
33
- last_incomplete_order
34
- end
35
-
36
- it { is_expected.to eq last_incomplete_order }
37
- end
38
-
39
- context 'without an incomplete order' do
40
- it { is_expected.to be_nil }
41
- end
42
- end
43
-
44
- describe "deleting user" do
45
- context "with no orders" do
46
- it "fails validation" do
47
- test_user.destroy!
48
- expect(test_user).to be_destroyed
49
- end
50
- end
51
-
52
- context "with an order" do
53
- let!(:order) { create(:order, user: test_user) }
54
-
55
- it "fails validation" do
56
- expect {
57
- test_user.destroy!
58
- }.to raise_error(ActiveRecord::DeleteRestrictionError)
59
- end
60
- end
61
- end
62
-
63
- describe '#available_store_credit_total' do
64
- subject do
65
- test_user.reload.available_store_credit_total(currency: 'USD')
66
- end
67
-
68
- context 'when the user does not have any credit' do
69
- it { is_expected.to eq(0) }
70
- end
71
-
72
- context 'when the user has credits' do
73
- let!(:credit_1) { create(:store_credit, user: test_user, amount: 100) }
74
- let!(:credit_2) { create(:store_credit, user: test_user, amount: 200) }
75
-
76
- it { is_expected.to eq(100 + 200) }
77
-
78
- context 'when some has been used' do
79
- before { credit_1.update!(amount_used: 35) }
80
-
81
- it { is_expected.to eq(100 + 200 - 35) }
82
-
83
- context 'when some has been authorized' do
84
- before { credit_1.update!(amount_authorized: 10) }
85
-
86
- it { is_expected.to eq(100 + 200 - 35 - 10) }
87
- end
88
- end
89
-
90
- context 'when some has been authorized' do
91
- before { credit_1.update!(amount_authorized: 10) }
92
-
93
- it { is_expected.to eq(100 + 200 - 10) }
94
- end
95
-
96
- context 'with credits of multiple currencies' do
97
- let!(:credit_3) { create(:store_credit, user: test_user, amount: 400, currency: 'GBP') }
98
- before { test_user.reload }
99
-
100
- it 'separates the currencies' do
101
- expect(test_user.available_store_credit_total(currency: 'USD')).to eq(100 + 200)
102
- expect(test_user.available_store_credit_total(currency: 'GBP')).to eq(400)
103
- end
104
- end
105
- end
106
- end
107
-
108
- describe '#display_available_store_credit_total' do
109
- subject do
110
- test_user.display_available_store_credit_total(currency: 'USD')
111
- end
112
-
113
- context 'without credit' do
114
- it { is_expected.to eq(Spree::Money.new(0)) }
115
- end
116
-
117
- context 'with credit' do
118
- let!(:credit) { create(:store_credit, user: test_user, amount: 100) }
119
- it { is_expected.to eq(Spree::Money.new(100)) }
120
- end
121
- end
122
- end
@@ -1,154 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Country, type: :model do
6
- describe '.default' do
7
- before do
8
- create(:country, iso: "DE", id: 1)
9
- create(:country, id: 2)
10
- end
11
-
12
- subject(:default_country) { described_class.default }
13
-
14
- context 'with the configuration setting an existing legacy default country ID' do
15
- before do
16
- stub_spree_preferences(default_country_id: 2)
17
- end
18
-
19
- subject(:default_country) do
20
- Spree::Deprecation.silence { described_class.default }
21
- end
22
-
23
- it 'emits a deprecation warning' do
24
- expect(Spree::Deprecation).to receive(:warn)
25
- default_country
26
- end
27
-
28
- it 'is the country with that ID' do
29
- expect(default_country).to eq(Spree::Country.find(2))
30
- end
31
- end
32
-
33
- context 'with the configuration setting a non-existing legacy default country ID' do
34
- before do
35
- stub_spree_preferences(default_country_id: 0)
36
- end
37
-
38
- subject(:default_country) do
39
- Spree::Deprecation.silence { described_class.default }
40
- end
41
-
42
- it 'loads the country configured by the ISO code' do
43
- expect(default_country).to eq(Spree::Country.find(2))
44
- end
45
- end
46
-
47
- context 'with the configuration setting an existing ISO code' do
48
- it 'is a country with the configurations ISO code' do
49
- expect(described_class.default).to be_a(Spree::Country)
50
- expect(described_class.default.iso).to eq('US')
51
- end
52
- end
53
-
54
- context 'with the configuration setting an non-existing ISO code' do
55
- before { stub_spree_preferences(default_country_iso: "ZZ") }
56
-
57
- it 'raises a Record not Found error' do
58
- expect { described_class.default }.to raise_error(ActiveRecord::RecordNotFound)
59
- end
60
- end
61
- end
62
-
63
- describe '.available' do
64
- let!(:united_states) { create(:country, iso: 'US') }
65
- let!(:canada) { create(:country, iso: 'CA') }
66
- let!(:italy) { create(:country, iso: 'IT') }
67
- let!(:custom_zone) { create(:zone, name: 'Custom Zone', countries: [united_states, italy]) }
68
-
69
- context 'with a checkout zone defined' do
70
- context 'when checkout zone is of type country' do
71
- let!(:checkout_zone) { create(:zone, name: 'Checkout Zone', countries: [united_states, canada]) }
72
-
73
- before do
74
- stub_spree_preferences(checkout_zone: checkout_zone.name)
75
- end
76
-
77
- context 'with no arguments' do
78
- it 'returns "Checkout Zone" countries' do
79
- expect(described_class.available).to contain_exactly(united_states, canada)
80
- end
81
- end
82
-
83
- context 'setting nil as restricting zone' do
84
- it 'returns all countries' do
85
- expect(described_class.available(restrict_to_zone: nil)).to contain_exactly(united_states, canada, italy)
86
- end
87
- end
88
-
89
- context 'setting "Custom Zone" as restricting zone' do
90
- it 'returns "Custom Zone" countries' do
91
- expect(described_class.available(restrict_to_zone: 'Custom Zone')).to contain_exactly(united_states, italy)
92
- end
93
- end
94
-
95
- context 'setting "Checkout Zone" as restricting zone' do
96
- it 'returns "Checkout Zone" countries' do
97
- expect(described_class.available(restrict_to_zone: 'Checkout Zone')).to contain_exactly(united_states, canada)
98
- end
99
- end
100
- end
101
-
102
- context 'when checkout zone is of type state' do
103
- let!(:state) { create(:state, country: united_states) }
104
- let!(:checkout_zone) { create(:zone, name: 'Checkout Zone', states: [state]) }
105
-
106
- before do
107
- stub_spree_preferences(checkout_zone: checkout_zone.name)
108
- end
109
-
110
- context 'with no arguments' do
111
- it 'returns all countries' do
112
- expect(described_class.available(restrict_to_zone: nil)).to contain_exactly(united_states, canada, italy)
113
- end
114
- end
115
- end
116
- end
117
-
118
- context 'with no checkout zone defined' do
119
- context 'with no arguments' do
120
- it 'returns all countries' do
121
- expect(described_class.available).to contain_exactly(united_states, canada, italy)
122
- end
123
- end
124
-
125
- context 'setting nil as restricting zone' do
126
- it 'returns all countries' do
127
- expect(described_class.available(restrict_to_zone: nil)).to contain_exactly(united_states, canada, italy)
128
- end
129
- end
130
-
131
- context 'setting "Custom Zone" as restricting zone' do
132
- it 'returns "Custom Zone" countries' do
133
- expect(described_class.available(restrict_to_zone: 'Custom Zone')).to contain_exactly(united_states, italy)
134
- end
135
- end
136
- end
137
- end
138
-
139
- describe '#prices' do
140
- let(:country) { create(:country) }
141
- subject { country.prices }
142
-
143
- it { is_expected.to be_a(ActiveRecord::Associations::CollectionProxy) }
144
-
145
- context "if the country has associated prices" do
146
- let!(:price_one) { create(:price) }
147
- let!(:price_two) { create(:price) }
148
- let!(:price_three) { create(:price) }
149
- let(:country) { create(:country, prices: [price_one, price_two]) }
150
-
151
- it { is_expected.to contain_exactly(price_one, price_two) }
152
- end
153
- end
154
- end