solidus_core 2.10.3 → 2.11.4

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.

Potentially problematic release.


This version of solidus_core might be problematic. Click here for more details.

Files changed (552) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js.erb +31 -2
  3. data/app/controllers/spree/base_controller.rb +1 -0
  4. data/app/mailers/spree/base_mailer.rb +4 -0
  5. data/app/mailers/spree/order_mailer.rb +1 -1
  6. data/app/models/concerns/spree/active_storage_adapter.rb +116 -0
  7. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +69 -0
  8. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
  9. data/app/models/concerns/spree/default_price.rb +1 -1
  10. data/app/models/concerns/spree/soft_deletable.rb +18 -0
  11. data/app/models/concerns/spree/user_address_book.rb +86 -32
  12. data/app/models/concerns/spree/user_methods.rb +3 -2
  13. data/app/models/spree/ability.rb +34 -10
  14. data/app/models/spree/address.rb +94 -17
  15. data/app/models/spree/address/name.rb +49 -0
  16. data/app/models/spree/address/state_validator.rb +71 -0
  17. data/app/models/spree/adjustment.rb +1 -1
  18. data/app/models/spree/base.rb +2 -2
  19. data/app/models/spree/calculator.rb +4 -4
  20. data/app/models/spree/calculator/default_tax.rb +1 -1
  21. data/app/models/spree/calculator/free_shipping.rb +1 -0
  22. data/app/models/spree/calculator/percent_per_item.rb +6 -4
  23. data/app/models/spree/calculator/price_sack.rb +2 -1
  24. data/app/models/spree/credit_card.rb +2 -2
  25. data/app/models/spree/customer_return.rb +4 -2
  26. data/app/models/spree/exchange.rb +1 -1
  27. data/app/models/spree/image/active_storage_attachment.rb +21 -0
  28. data/app/models/spree/inventory_unit.rb +1 -1
  29. data/app/models/spree/line_item.rb +13 -4
  30. data/app/models/spree/option_type.rb +1 -1
  31. data/app/models/spree/option_value.rb +2 -2
  32. data/app/models/spree/order.rb +91 -20
  33. data/app/models/spree/order/checkout.rb +1 -0
  34. data/app/models/spree/order/payments.rb +2 -2
  35. data/app/models/spree/order_inventory.rb +16 -4
  36. data/app/models/spree/order_merger.rb +6 -4
  37. data/app/models/spree/order_promotion.rb +1 -1
  38. data/app/models/spree/order_updater.rb +11 -10
  39. data/app/models/spree/payment.rb +3 -3
  40. data/app/models/spree/payment/cancellation.rb +3 -22
  41. data/app/models/spree/payment/processing.rb +54 -30
  42. data/app/models/spree/payment_method.rb +8 -9
  43. data/app/models/spree/payment_source.rb +2 -2
  44. data/app/models/spree/preference.rb +1 -1
  45. data/app/models/spree/price.rb +2 -8
  46. data/app/models/spree/product.rb +19 -14
  47. data/app/models/spree/product/scopes.rb +9 -5
  48. data/app/models/spree/promotion.rb +18 -7
  49. data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
  50. data/app/models/spree/promotion_action.rb +1 -7
  51. data/app/models/spree/promotion_code.rb +6 -1
  52. data/app/models/spree/promotion_code_batch.rb +1 -1
  53. data/app/models/spree/promotion_handler/coupon.rb +2 -2
  54. data/app/models/spree/promotion_rule.rb +1 -1
  55. data/app/models/spree/promotion_rule_role.rb +1 -1
  56. data/app/models/spree/refund.rb +60 -12
  57. data/app/models/spree/reimbursement.rb +27 -0
  58. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +10 -3
  59. data/app/models/spree/return_authorization.rb +1 -1
  60. data/app/models/spree/return_item.rb +21 -10
  61. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
  62. data/app/models/spree/role.rb +1 -1
  63. data/app/models/spree/shipment.rb +2 -2
  64. data/app/models/spree/shipping_calculator.rb +1 -1
  65. data/app/models/spree/shipping_manifest.rb +2 -2
  66. data/app/models/spree/shipping_method.rb +2 -9
  67. data/app/models/spree/shipping_rate.rb +1 -1
  68. data/app/models/spree/shipping_rate_tax.rb +1 -1
  69. data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
  70. data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
  71. data/app/models/spree/stock/package.rb +1 -1
  72. data/app/models/spree/stock/simple_coordinator.rb +1 -3
  73. data/app/models/spree/stock_item.rb +2 -8
  74. data/app/models/spree/stock_movement.rb +2 -0
  75. data/app/models/spree/store.rb +1 -1
  76. data/app/models/spree/store_credit.rb +1 -7
  77. data/app/models/spree/store_credit_category.rb +30 -3
  78. data/app/models/spree/store_credit_event.rb +1 -7
  79. data/app/models/spree/store_credit_reason.rb +0 -4
  80. data/app/models/spree/tax/tax_helpers.rb +1 -1
  81. data/app/models/spree/tax_category.rb +2 -8
  82. data/app/models/spree/tax_rate.rb +7 -7
  83. data/app/models/spree/taxon.rb +1 -1
  84. data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
  85. data/app/models/spree/user_address.rb +8 -2
  86. data/app/models/spree/variant.rb +7 -13
  87. data/app/models/spree/variant_property_rule.rb +5 -1
  88. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +8 -3
  89. data/app/models/spree/zone.rb +1 -1
  90. data/config/locales/en.yml +44 -5
  91. data/db/default/spree/countries.rb +1 -1
  92. data/db/default/spree/states.rb +12 -4
  93. data/db/default/spree/store_credit.rb +2 -2
  94. data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
  95. data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
  96. data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
  97. data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
  98. data/lib/generators/solidus/install/install_generator.rb +253 -0
  99. data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +36 -5
  100. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
  101. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
  102. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
  103. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
  104. data/lib/generators/spree/dummy/templates/rails/test.rb +1 -1
  105. data/lib/generators/spree/install/install_generator.rb +7 -189
  106. data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
  107. data/lib/spree/app_configuration.rb +117 -51
  108. data/lib/spree/awesome_nested_set_override.rb +44 -0
  109. data/lib/spree/core.rb +6 -11
  110. data/lib/spree/core/controller_helpers/auth.rb +17 -4
  111. data/lib/spree/core/controller_helpers/current_host.rb +17 -0
  112. data/lib/spree/core/controller_helpers/order.rb +8 -7
  113. data/lib/spree/core/engine.rb +39 -2
  114. data/lib/spree/core/importer/order.rb +24 -10
  115. data/lib/spree/core/permalinks.rb +1 -3
  116. data/lib/spree/core/product_filters.rb +6 -5
  117. data/lib/spree/core/state_machines.rb +20 -1
  118. data/lib/spree/core/state_machines/order.rb +249 -0
  119. data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
  120. data/lib/spree/core/version.rb +1 -1
  121. data/lib/spree/encryptor.rb +25 -0
  122. data/lib/spree/event.rb +40 -7
  123. data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
  124. data/lib/spree/event/configuration.rb +11 -6
  125. data/lib/spree/event/subscriber.rb +38 -18
  126. data/lib/spree/event/subscriber_registry.rb +92 -0
  127. data/lib/spree/i18n.rb +1 -1
  128. data/lib/spree/mailer_previews/carton_preview.rb +2 -1
  129. data/lib/spree/paranoia_deprecations.rb +32 -12
  130. data/lib/spree/permission_sets/configuration_display.rb +14 -14
  131. data/lib/spree/permission_sets/default_customer.rb +16 -16
  132. data/lib/spree/permission_sets/order_display.rb +11 -11
  133. data/lib/spree/permission_sets/order_management.rb +1 -1
  134. data/lib/spree/permission_sets/product_display.rb +9 -9
  135. data/lib/spree/permission_sets/promotion_display.rb +5 -5
  136. data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
  137. data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
  138. data/lib/spree/permission_sets/stock_display.rb +2 -2
  139. data/lib/spree/permission_sets/stock_management.rb +1 -1
  140. data/lib/spree/permission_sets/user_display.rb +3 -3
  141. data/lib/spree/permission_sets/user_management.rb +4 -3
  142. data/lib/spree/permitted_attributes.rb +9 -8
  143. data/lib/spree/preferences/preferable.rb +4 -3
  144. data/lib/spree/preferences/preferable_class_methods.rb +22 -3
  145. data/lib/spree/testing_support.rb +40 -0
  146. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  147. data/lib/spree/testing_support/authorization_helpers.rb +1 -0
  148. data/lib/spree/testing_support/blacklist_urls.rb +23 -0
  149. data/lib/spree/testing_support/capybara_ext.rb +3 -0
  150. data/lib/spree/testing_support/common_rake.rb +3 -3
  151. data/lib/spree/testing_support/dummy_app.rb +44 -23
  152. data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
  153. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
  154. data/lib/spree/testing_support/factories.rb +2 -4
  155. data/lib/spree/testing_support/factories/address_factory.rb +3 -4
  156. data/lib/spree/testing_support/factories/adjustment_factory.rb +2 -5
  157. data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +3 -0
  158. data/lib/spree/testing_support/factories/calculator_factory.rb +3 -0
  159. data/lib/spree/testing_support/factories/carton_factory.rb +2 -2
  160. data/lib/spree/testing_support/factories/country_factory.rb +3 -0
  161. data/lib/spree/testing_support/factories/credit_card_factory.rb +3 -0
  162. data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -3
  163. data/lib/spree/testing_support/factories/image_factory.rb +4 -1
  164. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +2 -4
  165. data/lib/spree/testing_support/factories/line_item_factory.rb +2 -2
  166. data/lib/spree/testing_support/factories/option_type_factory.rb +3 -0
  167. data/lib/spree/testing_support/factories/option_value_factory.rb +3 -0
  168. data/lib/spree/testing_support/factories/order_factory.rb +2 -6
  169. data/lib/spree/testing_support/factories/order_promotion_factory.rb +2 -2
  170. data/lib/spree/testing_support/factories/payment_factory.rb +2 -4
  171. data/lib/spree/testing_support/factories/payment_method_factory.rb +3 -0
  172. data/lib/spree/testing_support/factories/price_factory.rb +2 -1
  173. data/lib/spree/testing_support/factories/product_factory.rb +2 -5
  174. data/lib/spree/testing_support/factories/product_option_type_factory.rb +2 -2
  175. data/lib/spree/testing_support/factories/product_property_factory.rb +2 -2
  176. data/lib/spree/testing_support/factories/promotion_category_factory.rb +3 -0
  177. data/lib/spree/testing_support/factories/promotion_code_factory.rb +2 -2
  178. data/lib/spree/testing_support/factories/promotion_factory.rb +8 -2
  179. data/lib/spree/testing_support/factories/property_factory.rb +3 -0
  180. data/lib/spree/testing_support/factories/refund_factory.rb +3 -2
  181. data/lib/spree/testing_support/factories/refund_reason_factory.rb +3 -0
  182. data/lib/spree/testing_support/factories/reimbursement_factory.rb +3 -2
  183. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +3 -0
  184. data/lib/spree/testing_support/factories/return_authorization_factory.rb +2 -3
  185. data/lib/spree/testing_support/factories/return_item_factory.rb +2 -4
  186. data/lib/spree/testing_support/factories/return_reason_factory.rb +3 -0
  187. data/lib/spree/testing_support/factories/role_factory.rb +3 -0
  188. data/lib/spree/testing_support/factories/shipment_factory.rb +2 -3
  189. data/lib/spree/testing_support/factories/shipping_category_factory.rb +3 -0
  190. data/lib/spree/testing_support/factories/shipping_method_factory.rb +2 -3
  191. data/lib/spree/testing_support/factories/shipping_rate_factory.rb +2 -2
  192. data/lib/spree/testing_support/factories/state_factory.rb +2 -1
  193. data/lib/spree/testing_support/factories/stock_item_factory.rb +2 -2
  194. data/lib/spree/testing_support/factories/stock_location_factory.rb +2 -3
  195. data/lib/spree/testing_support/factories/stock_movement_factory.rb +2 -1
  196. data/lib/spree/testing_support/factories/stock_package_factory.rb +2 -2
  197. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +11 -0
  198. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +3 -2
  199. data/lib/spree/testing_support/factories/store_credit_factory.rb +2 -3
  200. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +6 -1
  201. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +3 -0
  202. data/lib/spree/testing_support/factories/store_factory.rb +4 -1
  203. data/lib/spree/testing_support/factories/tax_category_factory.rb +2 -1
  204. data/lib/spree/testing_support/factories/tax_rate_factory.rb +2 -3
  205. data/lib/spree/testing_support/factories/taxon_factory.rb +6 -1
  206. data/lib/spree/testing_support/factories/taxonomy_factory.rb +3 -0
  207. data/lib/spree/testing_support/factories/user_factory.rb +2 -3
  208. data/lib/spree/testing_support/factories/variant_factory.rb +2 -4
  209. data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +2 -2
  210. data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +2 -3
  211. data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +2 -2
  212. data/lib/spree/testing_support/factories/zone_factory.rb +3 -3
  213. data/lib/spree/testing_support/fixtures/blank.jpg +0 -0
  214. data/lib/spree/testing_support/job_helpers.rb +24 -0
  215. data/lib/spree/testing_support/order_walkthrough.rb +1 -1
  216. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  217. data/lib/spree/testing_support/preferences.rb +3 -1
  218. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  219. data/lib/spree/testing_support/translations.rb +25 -0
  220. data/{app/models → lib}/spree/user_class_handle.rb +0 -0
  221. data/lib/tasks/email.rake +3 -2
  222. data/solidus_core.gemspec +8 -5
  223. metadata +97 -374
  224. data/script/rails +0 -10
  225. data/spec/fixtures/thinking-cat.jpg +0 -0
  226. data/spec/helpers/base_helper_spec.rb +0 -168
  227. data/spec/helpers/products_helper_spec.rb +0 -202
  228. data/spec/helpers/taxons_helper_spec.rb +0 -43
  229. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  230. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  231. data/spec/lib/i18n_spec.rb +0 -97
  232. data/spec/lib/search/base_spec.rb +0 -91
  233. data/spec/lib/search/variant_spec.rb +0 -115
  234. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  235. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  236. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  237. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  238. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  239. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  240. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  241. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  242. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -48
  243. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  244. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  245. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  246. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  247. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
  248. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  249. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  250. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  251. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  252. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  253. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  254. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  255. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  256. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  257. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  258. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  259. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  260. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  261. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  262. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  263. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  264. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  265. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  266. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  267. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  268. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  269. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  270. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  271. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  272. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  273. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  274. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  275. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  276. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  277. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  278. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  279. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  280. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  281. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  282. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  283. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  284. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  285. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  286. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  287. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  288. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  289. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  290. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  291. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  292. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  293. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  294. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  295. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  296. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  297. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  298. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  299. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  300. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  301. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  302. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  303. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  304. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  305. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  306. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  307. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  308. data/spec/lib/spree/core/version_spec.rb +0 -19
  309. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  310. data/spec/lib/spree/event_spec.rb +0 -130
  311. data/spec/lib/spree/localized_number_spec.rb +0 -45
  312. data/spec/lib/spree/migrations_spec.rb +0 -32
  313. data/spec/lib/spree/money_spec.rb +0 -298
  314. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  315. data/spec/lib/spree/permitted_attributes_spec.rb +0 -41
  316. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  317. data/spec/lib/tasks/dummy_task.rake +0 -12
  318. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  319. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  320. data/spec/mailers/carton_mailer_spec.rb +0 -44
  321. data/spec/mailers/order_mailer_spec.rb +0 -117
  322. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  323. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  324. data/spec/mailers/test_mailer_spec.rb +0 -13
  325. data/spec/models/spree/ability_spec.rb +0 -279
  326. data/spec/models/spree/address_spec.rb +0 -399
  327. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  328. data/spec/models/spree/adjustment_spec.rb +0 -339
  329. data/spec/models/spree/asset_spec.rb +0 -25
  330. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  331. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  332. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  333. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  334. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  335. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  336. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  337. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  338. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  339. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  340. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  341. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  342. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  343. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  344. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
  345. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  346. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  347. data/spec/models/spree/calculator_spec.rb +0 -43
  348. data/spec/models/spree/carton_spec.rb +0 -145
  349. data/spec/models/spree/classification_spec.rb +0 -126
  350. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  351. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  352. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  353. data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
  354. data/spec/models/spree/country_spec.rb +0 -154
  355. data/spec/models/spree/credit_card_spec.rb +0 -373
  356. data/spec/models/spree/customer_return_spec.rb +0 -294
  357. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  358. data/spec/models/spree/exchange_spec.rb +0 -76
  359. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  360. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  361. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  362. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  363. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  364. data/spec/models/spree/gateway_spec.rb +0 -14
  365. data/spec/models/spree/image_spec.rb +0 -25
  366. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  367. data/spec/models/spree/line_item_spec.rb +0 -240
  368. data/spec/models/spree/option_type_spec.rb +0 -16
  369. data/spec/models/spree/option_value_spec.rb +0 -52
  370. data/spec/models/spree/order/address_spec.rb +0 -52
  371. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  372. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  373. data/spec/models/spree/order/checkout_spec.rb +0 -740
  374. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  375. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  376. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  377. data/spec/models/spree/order/payment_spec.rb +0 -280
  378. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  379. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  380. data/spec/models/spree/order/totals_spec.rb +0 -26
  381. data/spec/models/spree/order/validations_spec.rb +0 -17
  382. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  383. data/spec/models/spree/order_capturing_spec.rb +0 -16
  384. data/spec/models/spree/order_contents_spec.rb +0 -362
  385. data/spec/models/spree/order_inventory_spec.rb +0 -285
  386. data/spec/models/spree/order_merger_spec.rb +0 -162
  387. data/spec/models/spree/order_mutex_spec.rb +0 -89
  388. data/spec/models/spree/order_promotion_spec.rb +0 -33
  389. data/spec/models/spree/order_shipping_spec.rb +0 -247
  390. data/spec/models/spree/order_spec.rb +0 -1687
  391. data/spec/models/spree/order_taxation_spec.rb +0 -128
  392. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  393. data/spec/models/spree/order_updater_spec.rb +0 -556
  394. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  395. data/spec/models/spree/payment_create_spec.rb +0 -195
  396. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  397. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  398. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  399. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  400. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  401. data/spec/models/spree/payment_method_spec.rb +0 -408
  402. data/spec/models/spree/payment_spec.rb +0 -1270
  403. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  404. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  405. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  406. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  407. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  408. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  409. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  410. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  411. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  412. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  413. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  414. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  415. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  416. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  417. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  418. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
  419. data/spec/models/spree/preference_spec.rb +0 -79
  420. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  421. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  422. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  423. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  424. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  425. data/spec/models/spree/preferences/store_spec.rb +0 -40
  426. data/spec/models/spree/price_spec.rb +0 -150
  427. data/spec/models/spree/product/scopes_spec.rb +0 -164
  428. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  429. data/spec/models/spree/product_filter_spec.rb +0 -28
  430. data/spec/models/spree/product_property_spec.rb +0 -20
  431. data/spec/models/spree/product_spec.rb +0 -584
  432. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  433. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  434. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  435. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  436. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  437. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  438. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  439. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  440. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  441. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  442. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  443. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  444. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -227
  445. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  446. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  447. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  448. data/spec/models/spree/promotion_action_spec.rb +0 -44
  449. data/spec/models/spree/promotion_category_spec.rb +0 -19
  450. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  451. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  452. data/spec/models/spree/promotion_code_spec.rb +0 -206
  453. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  454. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  455. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  456. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  457. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  458. data/spec/models/spree/promotion_spec.rb +0 -945
  459. data/spec/models/spree/refund_spec.rb +0 -200
  460. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  461. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  462. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  463. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  464. data/spec/models/spree/reimbursement_spec.rb +0 -278
  465. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  466. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  467. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  468. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  469. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  470. data/spec/models/spree/return_authorization_spec.rb +0 -226
  471. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  472. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  473. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  474. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  475. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  476. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  477. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  478. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  479. data/spec/models/spree/return_item_spec.rb +0 -785
  480. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  481. data/spec/models/spree/shipment_spec.rb +0 -914
  482. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  483. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  484. data/spec/models/spree/shipping_method_spec.rb +0 -292
  485. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  486. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  487. data/spec/models/spree/state_spec.rb +0 -43
  488. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  489. data/spec/models/spree/stock/availability_spec.rb +0 -143
  490. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  491. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  492. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  493. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  494. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  495. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  496. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  497. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  498. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  499. data/spec/models/spree/stock/package_spec.rb +0 -182
  500. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  501. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  502. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  503. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  504. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  505. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  506. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  507. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  508. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  509. data/spec/models/spree/stock_item_spec.rb +0 -348
  510. data/spec/models/spree/stock_location_spec.rb +0 -288
  511. data/spec/models/spree/stock_movement_spec.rb +0 -58
  512. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  513. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  514. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  515. data/spec/models/spree/store_credit_spec.rb +0 -900
  516. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  517. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  518. data/spec/models/spree/store_spec.rb +0 -156
  519. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  520. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  521. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  522. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  523. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  524. data/spec/models/spree/tax_category_spec.rb +0 -50
  525. data/spec/models/spree/tax_rate_spec.rb +0 -317
  526. data/spec/models/spree/taxon_spec.rb +0 -197
  527. data/spec/models/spree/taxonomy_spec.rb +0 -15
  528. data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
  529. data/spec/models/spree/unit_cancel_spec.rb +0 -126
  530. data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
  531. data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
  532. data/spec/models/spree/user_spec.rb +0 -247
  533. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  534. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  535. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  536. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  537. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  538. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  539. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  540. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  541. data/spec/models/spree/variant_spec.rb +0 -862
  542. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  543. data/spec/models/spree/wallet_spec.rb +0 -155
  544. data/spec/models/spree/zone_spec.rb +0 -248
  545. data/spec/rails_helper.rb +0 -46
  546. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  547. data/spec/spec_helper.rb +0 -36
  548. data/spec/support/big_decimal.rb +0 -7
  549. data/spec/support/concerns/default_price.rb +0 -44
  550. data/spec/support/concerns/payment_source.rb +0 -66
  551. data/spec/support/concerns/working_factories.rb +0 -15
  552. data/spec/support/dummy_ability.rb +0 -7
@@ -1,399 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Address, type: :model do
6
- subject { Spree::Address }
7
-
8
- context "aliased attributes" do
9
- let(:address) { Spree::Address.new firstname: 'Ryan', lastname: 'Bigg' }
10
-
11
- it " first_name" do
12
- expect(address.first_name).to eq("Ryan")
13
- end
14
-
15
- it "last_name" do
16
- expect(address.last_name).to eq("Bigg")
17
- end
18
- end
19
-
20
- context "validation" do
21
- let(:country) { create :country, states_required: true }
22
- let(:state) { Spree::State.new name: 'maryland', abbr: 'md', country: country }
23
- let(:address) { build(:address, country: country) }
24
-
25
- before do
26
- allow(country.states).to receive_messages with_name_or_abbr: [state]
27
- end
28
-
29
- context 'address does not require state' do
30
- before do
31
- stub_spree_preferences(address_requires_state: false)
32
- end
33
-
34
- it "address_requires_state preference is false" do
35
- address.state = nil
36
- address.state_name = nil
37
- expect(address).to be_valid
38
- end
39
- end
40
-
41
- context 'address requires state' do
42
- before do
43
- stub_spree_preferences(address_requires_state: true)
44
- end
45
-
46
- it "state_name is not nil and country does not have any states" do
47
- address.state = nil
48
- address.state_name = 'alabama'
49
- expect(address).to be_valid
50
- end
51
-
52
- it "errors when state_name is nil" do
53
- address.state_name = nil
54
- address.state = nil
55
- expect(address).not_to be_valid
56
- end
57
-
58
- it "full state name is in state_name and country does contain that state" do
59
- address.state_name = 'alabama'
60
- # called by state_validate to set up state_id.
61
- # Perhaps this should be a before_validation instead?
62
- expect(address).to be_valid
63
- expect(address.state).not_to be_nil
64
- expect(address.state_name).to be_nil
65
- end
66
-
67
- it "state abbr is in state_name and country does contain that state" do
68
- address.state_name = state.abbr
69
- expect(address).to be_valid
70
- expect(address.state_id).not_to be_nil
71
- expect(address.state_name).to be_nil
72
- end
73
-
74
- context 'when the country does not match the state' do
75
- context 'when the country requires states' do
76
- it 'is invalid' do
77
- address.state = state
78
- address.country = Spree::Country.new(states_required: true)
79
- address.valid?
80
- expect(address.errors["state"]).to eq(['is invalid', 'does not match the country'])
81
- end
82
- end
83
-
84
- context 'when the country does not require states' do
85
- it 'is invalid' do
86
- address.state = state
87
- address.country = Spree::Country.new(states_required: false)
88
- address.valid?
89
- expect(address.errors["state"]).to eq(['does not match the country'])
90
- end
91
- end
92
- end
93
-
94
- it "both state and state_name are entered but country does not contain the state" do
95
- address.state = state
96
- address.state_name = 'maryland'
97
- address.country = create :country, states_required: true
98
- expect(address).to be_valid
99
- expect(address.state_id).to be_nil
100
- end
101
-
102
- it "both state and state_name are entered and country does contain the state" do
103
- address.state = state
104
- address.state_name = 'maryland'
105
- expect(address).to be_valid
106
- expect(address.state_name).to be_nil
107
- end
108
- end
109
-
110
- it "requires phone" do
111
- address.phone = ""
112
- address.valid?
113
- expect(address.errors["phone"]).to eq(["can't be blank"])
114
- end
115
-
116
- it "requires zipcode" do
117
- address.zipcode = ""
118
- address.valid?
119
- expect(address.errors['zipcode']).to include("can't be blank")
120
- end
121
-
122
- context "phone not required" do
123
- before { allow(address).to receive_messages require_phone?: false }
124
-
125
- it "shows no errors when phone is blank" do
126
- address.phone = ""
127
- address.valid?
128
- expect(address.errors[:phone].size).to eq 0
129
- end
130
- end
131
-
132
- context "zipcode not required" do
133
- before { allow(address).to receive_messages require_zipcode?: false }
134
-
135
- it "shows no errors when zipcode is blank" do
136
- address.zipcode = ""
137
- address.valid?
138
- expect(address.errors[:zipcode]).to be_blank
139
- end
140
- end
141
- end
142
-
143
- context ".build_default" do
144
- context "no user given" do
145
- let!(:default_country) { create(:country) }
146
-
147
- context 'has a default country' do
148
- before do
149
- stub_spree_preferences(default_country_iso: default_country.iso)
150
- end
151
-
152
- it "sets up a new record with Spree::Config[:default_country_iso]" do
153
- expect(Spree::Address.build_default.country).to eq default_country
154
- end
155
-
156
- it 'accepts other attributes' do
157
- address = Spree::Address.build_default(first_name: 'Ryan')
158
-
159
- expect(address.country).to eq default_country
160
- expect(address.first_name).to eq 'Ryan'
161
- end
162
-
163
- it 'accepts a block' do
164
- address = Spree::Address.build_default do |record|
165
- record.first_name = 'Ryan'
166
- end
167
-
168
- expect(address.country).to eq default_country
169
- expect(address.first_name).to eq 'Ryan'
170
- end
171
-
172
- it 'can override the country' do
173
- another_country = build :country
174
- address = Spree::Address.build_default(country: another_country)
175
-
176
- expect(address.country).to eq another_country
177
- end
178
- end
179
-
180
- # Regression test for https://github.com/spree/spree/issues/1142
181
- it "raises ActiveRecord::RecordNotFound if :default_country_iso is set to an invalid value" do
182
- stub_spree_preferences(default_country_iso: "00")
183
- expect {
184
- Spree::Address.build_default.country
185
- }.to raise_error(ActiveRecord::RecordNotFound)
186
- end
187
- end
188
- end
189
-
190
- context '.factory' do
191
- context 'with attributes that use setters defined in Address' do
192
- let(:address_attributes) { attributes_for(:address, country_id: nil, country_iso: country.iso) }
193
- let(:country) { create(:country, iso: 'ZW') }
194
-
195
- it 'uses the setters' do
196
- expect(subject.factory(address_attributes).country_id).to eq(country.id)
197
- end
198
- end
199
- end
200
-
201
- context ".immutable_merge" do
202
- RSpec::Matchers.define :be_address_equivalent_attributes do |expected|
203
- fields_of_interest = [:firstname, :lastname, :company, :address1, :address2, :city, :zipcode, :phone, :alternative_phone]
204
- match do |actual|
205
- expected_attrs = expected.symbolize_keys.slice(*fields_of_interest)
206
- actual_attrs = actual.symbolize_keys.slice(*fields_of_interest)
207
- expected_attrs == actual_attrs
208
- end
209
- end
210
-
211
- let(:new_address_attributes) { attributes_for(:address) }
212
- subject { Spree::Address.immutable_merge(existing_address, new_address_attributes) }
213
-
214
- context "no existing address supplied" do
215
- let(:existing_address) { nil }
216
-
217
- context 'and there is not a matching address in the database' do
218
- it "returns new Address matching attributes given" do
219
- expect(subject.attributes).to be_address_equivalent_attributes(new_address_attributes)
220
- end
221
- end
222
-
223
- context 'and there is a matching address in the database' do
224
- let(:new_address_attributes) { Spree::Address.value_attributes(matching_address.attributes) }
225
- let!(:matching_address) { create(:address, firstname: 'Jordan') }
226
-
227
- it "returns the matching address" do
228
- expect(subject.attributes).to be_address_equivalent_attributes(new_address_attributes)
229
- expect(subject.id).to eq(matching_address.id)
230
- end
231
- end
232
- end
233
-
234
- context "with existing address" do
235
- let(:existing_address) { create(:address) }
236
-
237
- it "returns a new Address of merged data" do
238
- merged_attributes = subject.attributes.merge(new_address_attributes.symbolize_keys)
239
- expect(subject.attributes).to be_address_equivalent_attributes merged_attributes
240
- expect(subject.id).not_to eq existing_address.id
241
- end
242
-
243
- context "and no changes to attributes" do
244
- let(:new_address_attributes) { existing_address.attributes }
245
-
246
- it "returns existing address" do
247
- expect(subject).to eq existing_address
248
- expect(subject.id).to eq existing_address.id
249
- end
250
- end
251
-
252
- context 'and changed address matches an existing address' do
253
- let(:new_address_attributes) { Spree::Address.value_attributes(matching_address.attributes) }
254
- let!(:matching_address) { create(:address, firstname: 'Jordan') }
255
-
256
- it 'returns the matching address' do
257
- expect(subject.attributes).to be_address_equivalent_attributes(new_address_attributes)
258
- expect(subject.id).to eq(matching_address.id)
259
- end
260
- end
261
- end
262
- end
263
-
264
- describe '.value_attributes' do
265
- subject do
266
- Spree::Address.value_attributes(base_attributes, merge_attributes)
267
- end
268
-
269
- context 'with symbols and strings' do
270
- let(:base_attributes) { { 'address1' => '1234 way', 'address2' => 'apt 2' } }
271
- let(:merge_attributes) { { address1: '5678 way' } }
272
-
273
- it 'stringifies and merges the keys' do
274
- expect(subject).to eq('address1' => '5678 way', 'address2' => 'apt 2')
275
- end
276
- end
277
-
278
- context 'with database-only attributes' do
279
- let(:base_attributes) do
280
- {
281
- 'id' => 1,
282
- 'created_at' => Time.current,
283
- 'updated_at' => Time.current,
284
- 'address1' => '1234 way'
285
- }
286
- end
287
- let(:merge_attributes) do
288
- {
289
- 'updated_at' => Time.current,
290
- 'address2' => 'apt 2'
291
- }
292
- end
293
-
294
- it 'removes the database-only addresses' do
295
- expect(subject).to eq('address1' => '1234 way', 'address2' => 'apt 2')
296
- end
297
- end
298
-
299
- context 'with aliased attributes' do
300
- let(:base_attributes) { { 'first_name' => 'Jordan' } }
301
- let(:merge_attributes) { { 'last_name' => 'Brough' } }
302
-
303
- it 'renames them to the normalized value' do
304
- expect(subject).to eq('firstname' => 'Jordan', 'lastname' => 'Brough')
305
- end
306
-
307
- it 'does not modify the original hashes' do
308
- subject
309
- expect(base_attributes).to eq('first_name' => 'Jordan')
310
- expect(merge_attributes).to eq('last_name' => 'Brough')
311
- end
312
- end
313
- end
314
-
315
- describe '.taxation_attributes' do
316
- context 'both taxation and non-taxation attributes are present ' do
317
- let(:address) { Spree::Address.new firstname: 'Michael', lastname: 'Jackson', state_id: 1, country_id: 2, zipcode: '12345' }
318
-
319
- it 'removes the non-taxation attributes' do
320
- expect(address.taxation_attributes).not_to eq('firstname' => 'Michael', 'lastname' => 'Jackson')
321
- end
322
-
323
- it 'returns only the taxation attributes' do
324
- expect(address.taxation_attributes).to eq('state_id' => 1, 'country_id' => 2, 'zipcode' => '12345')
325
- end
326
- end
327
-
328
- context 'taxation attributes are blank' do
329
- let(:address) { Spree::Address.new firstname: 'Michael', lastname: 'Jackson' }
330
-
331
- it 'returns a subset of the attributes with the correct keys and nil values' do
332
- expect(address.taxation_attributes).to eq('state_id' => nil, 'country_id' => nil, 'zipcode' => nil)
333
- end
334
- end
335
- end
336
-
337
- context '#country_iso=' do
338
- let(:address) { build(:address, country_id: nil) }
339
- let(:country) { create(:country, iso: 'ZW') }
340
-
341
- it 'sets the country to the country with the matching iso code' do
342
- address.country_iso = country.iso
343
- expect(address.country_id).to eq(country.id)
344
- end
345
-
346
- it 'raises an exception if the iso is not found' do
347
- expect {
348
- address.country_iso = "NOCOUNTRY"
349
- }.to raise_error(::ActiveRecord::RecordNotFound, "Couldn't find Spree::Country")
350
- end
351
- end
352
-
353
- context '#full_name' do
354
- context 'both first and last names are present' do
355
- let(:address) { Spree::Address.new firstname: 'Michael', lastname: 'Jackson' }
356
- specify { expect(address.full_name).to eq('Michael Jackson') }
357
- end
358
-
359
- context 'first name is blank' do
360
- let(:address) { Spree::Address.new firstname: nil, lastname: 'Jackson' }
361
- specify { expect(address.full_name).to eq('Jackson') }
362
- end
363
-
364
- context 'last name is blank' do
365
- let(:address) { Spree::Address.new firstname: 'Michael', lastname: nil }
366
- specify { expect(address.full_name).to eq('Michael') }
367
- end
368
-
369
- context 'both first and last names are blank' do
370
- let(:address) { Spree::Address.new firstname: nil, lastname: nil }
371
- specify { expect(address.full_name).to eq('') }
372
- end
373
- end
374
-
375
- context '#state_text' do
376
- context 'state is blank' do
377
- let(:address) { Spree::Address.new state: nil, state_name: 'virginia' }
378
- specify { expect(address.state_text).to eq('virginia') }
379
- end
380
-
381
- context 'both name and abbr is present' do
382
- let(:state) { Spree::State.new name: 'virginia', abbr: 'va' }
383
- let(:address) { Spree::Address.new state: state }
384
- specify { expect(address.state_text).to eq('va') }
385
- end
386
-
387
- context 'only name is present' do
388
- let(:state) { Spree::State.new name: 'virginia', abbr: nil }
389
- let(:address) { Spree::Address.new state: state }
390
- specify { expect(address.state_text).to eq('virginia') }
391
- end
392
- end
393
-
394
- context '#requires_phone' do
395
- subject { described_class.new }
396
-
397
- it { is_expected.to be_require_phone }
398
- end
399
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::AdjustmentReason do
6
- describe 'creation' do
7
- it 'is successful' do
8
- create(:adjustment_reason)
9
- end
10
- end
11
- end
@@ -1,339 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Adjustment, type: :model do
6
- let!(:store) { create :store }
7
- let(:order) { Spree::Order.new }
8
- let(:line_item) { create :line_item, order: order }
9
-
10
- let(:adjustment) { Spree::Adjustment.create!(label: 'Adjustment', adjustable: order, order: order, amount: 5) }
11
-
12
- context '#save' do
13
- let(:adjustment) { Spree::Adjustment.create(label: "Adjustment", amount: 5, order: order, adjustable: line_item) }
14
-
15
- it 'touches the adjustable' do
16
- line_item.update_columns(updated_at: 1.day.ago)
17
- expect { adjustment.save! }.to change { line_item.updated_at }
18
- end
19
- end
20
-
21
- describe 'non_tax scope' do
22
- subject do
23
- Spree::Adjustment.non_tax.to_a
24
- end
25
-
26
- let!(:tax_adjustment) do
27
- create(:adjustment, adjustable: order, order: order, source: create(:tax_rate))
28
- end
29
-
30
- let!(:non_tax_adjustment_with_source) do
31
- create(:adjustment, adjustable: order, order: order, source_type: 'Spree::Order', source_id: nil)
32
- end
33
-
34
- let!(:non_tax_adjustment_without_source) do
35
- create(:adjustment, adjustable: order, order: order, source: nil)
36
- end
37
-
38
- it 'select non-tax adjustments' do
39
- expect(subject).to_not include tax_adjustment
40
- expect(subject).to include non_tax_adjustment_with_source
41
- expect(subject).to include non_tax_adjustment_without_source
42
- end
43
- end
44
-
45
- context '#currency' do
46
- let(:order) { Spree::Order.new currency: 'JPY' }
47
-
48
- it 'returns the adjustables currency' do
49
- expect(adjustment.currency).to eq 'JPY'
50
- end
51
-
52
- context 'adjustable is nil' do
53
- before do
54
- adjustment.adjustable = nil
55
- end
56
- it 'uses the global currency of USD' do
57
- expect(adjustment.currency).to eq 'USD'
58
- end
59
- end
60
- end
61
-
62
- context "#display_amount" do
63
- before { adjustment.amount = 10.55 }
64
-
65
- it "shows the amount" do
66
- expect(adjustment.display_amount.to_s).to eq "$10.55"
67
- end
68
-
69
- context "with currency set to JPY" do
70
- let(:order) { Spree::Order.new currency: 'JPY' }
71
-
72
- context "when adjustable is set to an order" do
73
- it "displays in JPY" do
74
- expect(adjustment.display_amount.to_s).to eq "¥11"
75
- end
76
- end
77
- end
78
- end
79
-
80
- context '#recalculate' do
81
- subject { adjustment.recalculate }
82
- let(:adjustment) do
83
- line_item.adjustments.create!(
84
- label: 'Adjustment',
85
- order: order,
86
- adjustable: order,
87
- amount: 5,
88
- finalized: finalized,
89
- source: source,
90
- )
91
- end
92
- let(:order) { create(:order_with_line_items, line_items_price: 100) }
93
- let(:line_item) { order.line_items.to_a.first }
94
-
95
- context "when adjustment is finalized" do
96
- let(:finalized) { true }
97
-
98
- context 'with a promotion adjustment' do
99
- let(:source) { promotion.actions.first! }
100
- let(:promotion) { create(:promotion, :with_line_item_adjustment, adjustment_rate: 7) }
101
-
102
- it 'does not update the adjustment' do
103
- expect { subject }.not_to change { adjustment.amount }
104
- end
105
- end
106
-
107
- context 'with a tax adjustment' do
108
- let(:source) { mock_model(Spree::TaxRate, compute_amount: 10) }
109
-
110
- it 'updates the adjustment' do
111
- expect { subject }.to change { adjustment.amount }.from(5).to(10)
112
- end
113
- end
114
-
115
- context 'with a sourceless adjustment' do
116
- let(:source) { nil }
117
-
118
- it 'does nothing' do
119
- expect { subject }.not_to change { adjustment.amount }
120
- end
121
- end
122
- end
123
-
124
- context "when adjustment isn't finalized" do
125
- let(:finalized) { false }
126
-
127
- context 'with a promotion adjustment' do
128
- let(:source) { promotion.actions.first! }
129
- let(:promotion) { create(:promotion, :with_line_item_adjustment, adjustment_rate: 7) }
130
-
131
- context 'when the promotion is eligible' do
132
- it 'updates the adjustment' do
133
- expect { subject }.to change { adjustment.amount }.from(5).to(-7)
134
- end
135
-
136
- it 'sets the adjustment elgiible to true' do
137
- subject
138
- expect(adjustment.eligible).to eq(true)
139
- end
140
- end
141
-
142
- context 'when the promotion is not eligible' do
143
- before do
144
- promotion.update!(starts_at: 1.day.from_now)
145
- end
146
-
147
- it 'zeros out the adjustment' do
148
- expect { subject }.to change { adjustment.amount }.from(5).to(0)
149
- end
150
-
151
- it 'sets the adjustment elgiible to false' do
152
- subject
153
- expect(adjustment.eligible).to eq(false)
154
- end
155
- end
156
- end
157
-
158
- context 'with a tax adjustment' do
159
- let(:source) { mock_model(Spree::TaxRate, compute_amount: 10) }
160
-
161
- it 'updates the adjustment' do
162
- expect { subject }.to change { adjustment.amount }.from(5).to(10)
163
- end
164
- end
165
-
166
- context 'with a sourceless adjustment' do
167
- let(:source) { nil }
168
-
169
- it 'does nothing' do
170
- expect { subject }.to_not change { adjustment.amount }
171
- end
172
- end
173
- end
174
- end
175
-
176
- describe "promotion code presence error" do
177
- subject do
178
- adjustment.valid?
179
- adjustment.errors[:promotion_code]
180
- end
181
-
182
- context "when the adjustment is not a promotion adjustment" do
183
- let(:adjustment) { build(:adjustment) }
184
-
185
- it { is_expected.to be_blank }
186
- end
187
-
188
- context "when the adjustment is a promotion adjustment" do
189
- let(:adjustment) { build(:adjustment, source: promotion.actions.first) }
190
- let(:promotion) { create(:promotion, :with_order_adjustment) }
191
-
192
- context "when the promotion does not have a code" do
193
- it { is_expected.to be_blank }
194
- end
195
-
196
- context "when the promotion has a code" do
197
- let!(:promotion_code) { create(:promotion_code, promotion: promotion) }
198
-
199
- it { is_expected.to include("can't be blank") }
200
- end
201
- end
202
- end
203
-
204
- describe 'repairing adjustment associations' do
205
- context 'on create' do
206
- let(:adjustable) { order }
207
- let(:adjustment_source) { promotion.actions[0] }
208
- let(:order) { create(:order) }
209
- let(:promotion) { create(:promotion, :with_line_item_adjustment) }
210
-
211
- def expect_deprecation_warning
212
- expect(Spree::Deprecation).to(
213
- receive(:warn).
214
- with(
215
- /Adjustment \d+ was not added to #{adjustable.class} #{adjustable.id}/,
216
- instance_of(Array),
217
- )
218
- )
219
- end
220
-
221
- context 'when adding adjustments via the wrong association' do
222
- def create_adjustment
223
- adjustment_source.adjustments.create!(
224
- amount: 10,
225
- adjustable: adjustable,
226
- order: order,
227
- label: 'some label',
228
- )
229
- end
230
-
231
- context 'when adjustable.adjustments is loaded' do
232
- before { adjustable.adjustments.to_a }
233
-
234
- it 'repairs adjustable.adjustments' do
235
- expect_deprecation_warning
236
- adjustment = create_adjustment
237
- expect(adjustable.adjustments).to include(adjustment)
238
- end
239
-
240
- context 'when the adjustment is destroyed before after_commit runs' do
241
- it 'does not repair' do
242
- expect(Spree::Deprecation).not_to receive(:warn)
243
- Spree::Adjustment.transaction do
244
- adjustment = create_adjustment
245
- adjustment.destroy!
246
- end
247
- end
248
- end
249
- end
250
-
251
- context 'when adjustable.adjustments is not loaded' do
252
- it 'does repair' do
253
- expect(Spree::Deprecation).not_to receive(:warn)
254
- create_adjustment
255
- end
256
- end
257
- end
258
-
259
- context 'when adding adjustments via the correct association' do
260
- def create_adjustment
261
- adjustable.adjustments.create!(
262
- amount: 10,
263
- source: adjustment_source,
264
- order: order,
265
- label: 'some label',
266
- )
267
- end
268
-
269
- context 'when adjustable.adjustments is loaded' do
270
- before { adjustable.adjustments.to_a }
271
-
272
- it 'does not repair' do
273
- expect(Spree::Deprecation).not_to receive(:warn)
274
- create_adjustment
275
- end
276
- end
277
-
278
- context 'when adjustable.adjustments is not loaded' do
279
- it 'does not repair' do
280
- expect(Spree::Deprecation).not_to receive(:warn)
281
- create_adjustment
282
- end
283
- end
284
- end
285
- end
286
-
287
- context 'on destroy' do
288
- let(:adjustment) { create(:adjustment) }
289
- let(:adjustable) { adjustment.adjustable }
290
-
291
- def expect_deprecation_warning(adjustable)
292
- expect(Spree::Deprecation).to(
293
- receive(:warn).
294
- with(
295
- /Adjustment #{adjustment.id} was not removed from #{adjustable.class} #{adjustable.id}/,
296
- instance_of(Array),
297
- )
298
- )
299
- end
300
-
301
- context 'when destroying adjustments not via association' do
302
- context 'when adjustable.adjustments is loaded' do
303
- before { adjustable.adjustments.to_a }
304
-
305
- it 'repairs adjustable.adjustments' do
306
- expect_deprecation_warning(adjustable)
307
- adjustment.destroy!
308
- expect(adjustable.adjustments).not_to include(adjustment)
309
- end
310
- end
311
-
312
- context 'when adjustable.adjustments is not loaded' do
313
- it 'does not repair' do
314
- expect(Spree::Deprecation).not_to receive(:warn)
315
- adjustment.destroy!
316
- end
317
- end
318
- end
319
-
320
- context 'when destroying adjustments via the association' do
321
- context 'when adjustable.adjustments is loaded' do
322
- before { adjustable.adjustments.to_a }
323
-
324
- it 'does not repair' do
325
- expect(Spree::Deprecation).not_to receive(:warn)
326
- adjustable.adjustments.destroy(adjustment)
327
- end
328
- end
329
-
330
- context 'when adjustable.adjustments is not loaded' do
331
- it 'does not repair' do
332
- expect(Spree::Deprecation).not_to receive(:warn)
333
- adjustable.adjustments.destroy(adjustment)
334
- end
335
- end
336
- end
337
- end
338
- end
339
- end