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,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
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Asset, type: :model do
6
- describe "#viewable" do
7
- it "touches association" do
8
- product = build(:custom_product)
9
-
10
- expect do
11
- Spree::Asset.create! { |a| a.viewable = product.master }
12
- end.to change { product.updated_at }
13
- end
14
- end
15
-
16
- describe "#acts_as_list scope" do
17
- it "should start from first position for different viewables" do
18
- asset1 = Spree::Asset.create(viewable_type: 'Spree::Image', viewable_id: 1)
19
- asset2 = Spree::Asset.create(viewable_type: 'Spree::LineItem', viewable_id: 1)
20
-
21
- expect(asset1.position).to eq 1
22
- expect(asset2.position).to eq 1
23
- end
24
- end
25
- end
@@ -1,260 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
- require 'shared_examples/calculator_shared_examples'
5
-
6
- RSpec.describe Spree::Calculator::DefaultTax, type: :model do
7
- let(:address) { create(:address) }
8
- let!(:zone) { create(:zone, name: "Country Zone", countries: [tax_rate_country]) }
9
- let(:tax_rate_country) { address.country }
10
- let(:tax_category) { create(:tax_category) }
11
- let(:starts_at) { nil }
12
- let(:expires_at) { nil }
13
- let!(:rate) do
14
- create(:tax_rate, tax_categories: [tax_category], amount: 0.05,
15
- included_in_price: included_in_price, zone: zone,
16
- starts_at: starts_at, expires_at: expires_at)
17
- end
18
- let(:included_in_price) { false }
19
- subject(:calculator) { Spree::Calculator::DefaultTax.new(calculable: rate ) }
20
-
21
- it_behaves_like 'a calculator with a description'
22
-
23
- context "#compute" do
24
- context "when given an order" do
25
- let(:order) do
26
- create(
27
- :order_with_line_items,
28
- line_items_attributes: [
29
- { price: 10, quantity: 3, tax_category: tax_category }.merge(line_item_one_options),
30
- { price: 10, quantity: 3, tax_category: tax_category }.merge(line_item_two_options)
31
- ],
32
- ship_address: address
33
- )
34
- end
35
- let(:line_item_one_options) { {} }
36
- let(:line_item_two_options) { {} }
37
-
38
- context "when all items matches the rate's tax category" do
39
- it "should be equal to the sum of the item totals * rate" do
40
- expect(calculator.compute(order)).to eq(3)
41
- end
42
-
43
- context "when rate is not in its validity period" do
44
- let(:starts_at) { 1.day.from_now }
45
- let(:expires_at) { 2.days.from_now }
46
-
47
- it "should be 0" do
48
- expect(calculator.compute(order)).to eq(0)
49
- end
50
- end
51
- end
52
-
53
- context "when no line items match the tax category" do
54
- let(:other_tax_category) { create(:tax_category) }
55
- let(:line_item_one_options) { { tax_category: other_tax_category } }
56
- let(:line_item_two_options) { { tax_category: other_tax_category } }
57
-
58
- it "should be 0" do
59
- expect(calculator.compute(order)).to eq(0)
60
- end
61
- end
62
-
63
- context "when one item matches the tax category" do
64
- let(:other_tax_category) { create(:tax_category) }
65
- let(:line_item_two_options) { { tax_category: other_tax_category } }
66
-
67
- it "should be equal to the item total * rate" do
68
- expect(calculator.compute(order)).to eq(1.5)
69
- end
70
-
71
- context "when rate is not in its validity period" do
72
- let(:starts_at) { 1.day.from_now }
73
- let(:expires_at) { 2.days.from_now }
74
-
75
- it "should be 0" do
76
- expect(calculator.compute(order)).to eq(0)
77
- end
78
- end
79
-
80
- context "correctly rounds to within two decimal places" do
81
- let(:line_item_one_options) { { price: 10.333, quantity: 1 } }
82
-
83
- specify do
84
- # Amount is 0.51665, which will be rounded to...
85
- expect(calculator.compute(order)).to eq(0.52)
86
- end
87
- end
88
- end
89
-
90
- context "when tax is included in price" do
91
- let(:included_in_price) { true }
92
-
93
- it "will return the deducted amount from the totals" do
94
- # total price including 5% tax = $60
95
- # ex pre-tax = $57.14
96
- # 57.14 + %5 = 59.997 (or "close enough" to $60)
97
- # 60 - 57.14 = $2.86
98
- expect(calculator.compute(order).to_f).to eql 2.86
99
- end
100
-
101
- context "when rate is not in its validity period" do
102
- let(:starts_at) { 1.day.from_now }
103
- let(:expires_at) { 2.days.from_now }
104
-
105
- it "should be 0" do
106
- expect(calculator.compute(order)).to eq(0)
107
- end
108
- end
109
- end
110
- end
111
- end
112
-
113
- shared_examples_for 'computing any item' do
114
- let(:adjustment_total) { 0 }
115
- let(:adjustments) do
116
- if adjustment_total.zero?
117
- []
118
- else
119
- [Spree::Adjustment.new(included: false, source: nil, amount: adjustment_total)]
120
- end
121
- end
122
- let(:order) { build_stubbed(:order, ship_address: address) }
123
-
124
- context "when tax is included in price" do
125
- let(:included_in_price) { true }
126
-
127
- context "when the variant matches the tax category" do
128
- it "should be equal to the item's full price * rate" do
129
- expect(calculator.compute(item)).to eql 1.43
130
- end
131
-
132
- context "when rate is not in its validity period" do
133
- let(:starts_at) { 1.day.from_now }
134
- let(:expires_at) { 2.days.from_now }
135
-
136
- it "should be 0" do
137
- expect(calculator.compute(item)).to eq(0)
138
- end
139
- end
140
-
141
- context "when line item is adjusted" do
142
- let(:adjustment_total) { -1 }
143
-
144
- it "should be equal to the item's adjusted total * rate" do
145
- expect(calculator.compute(item)).to eql 1.38
146
- end
147
- end
148
- end
149
- end
150
-
151
- context "when tax is not included in price" do
152
- context "when the item has an adjustment" do
153
- let(:adjustment_total) { -1 }
154
-
155
- it "should be equal to the item's pre-tax total * rate" do
156
- expect(calculator.compute(item)).to eq(1.45)
157
- end
158
-
159
- context "when rate is not in its validity period" do
160
- let(:starts_at) { 1.day.from_now }
161
- let(:expires_at) { 2.days.from_now }
162
-
163
- it "should be 0" do
164
- expect(calculator.compute(item)).to eq(0)
165
- end
166
- end
167
- end
168
-
169
- context "when the variant matches the tax category" do
170
- it "should be equal to the item pre-tax total * rate" do
171
- expect(calculator.compute(item)).to eq(1.50)
172
- end
173
-
174
- context "when rate is not in its validity period" do
175
- let(:starts_at) { 1.day.from_now }
176
- let(:expires_at) { 2.days.from_now }
177
-
178
- it "should be 0" do
179
- expect(calculator.compute(item)).to eq(0)
180
- end
181
- end
182
- end
183
- end
184
- end
185
-
186
- describe 'when given a line item' do
187
- let(:item) do
188
- build_stubbed(
189
- :line_item,
190
- price: 10,
191
- quantity: 3,
192
- adjustments: adjustments,
193
- order: order,
194
- tax_category: tax_category
195
- )
196
- end
197
-
198
- it_behaves_like 'computing any item'
199
- end
200
-
201
- describe 'when given a shipment' do
202
- let(:shipping_method) do
203
- build_stubbed(
204
- :shipping_method,
205
- tax_category: tax_category
206
- )
207
- end
208
-
209
- let(:shipping_rate) do
210
- build_stubbed(
211
- :shipping_rate,
212
- selected: true,
213
- shipping_method: shipping_method
214
- )
215
- end
216
-
217
- let(:item) do
218
- build_stubbed(
219
- :shipment,
220
- cost: 30,
221
- adjustments: adjustments,
222
- order: order,
223
- shipping_rates: [shipping_rate]
224
- )
225
- end
226
-
227
- it_behaves_like 'computing any item'
228
- end
229
-
230
- describe 'when given a shipping rate' do
231
- let(:shipping_method) do
232
- build_stubbed(
233
- :shipping_method,
234
- tax_category: tax_category
235
- )
236
- end
237
-
238
- let(:shipment) do
239
- build_stubbed(
240
- :shipment,
241
- order: order
242
- )
243
- end
244
-
245
- let(:item) do
246
- # cost and adjusted amount for shipping rates are the same as they
247
- # can not be adjusted. for the sake of passing tests, the cost is
248
- # adjusted here.
249
- build_stubbed(
250
- :shipping_rate,
251
- cost: 30 + adjustment_total,
252
- selected: true,
253
- shipping_method: shipping_method,
254
- shipment: shipment
255
- )
256
- end
257
-
258
- it_behaves_like 'computing any item'
259
- end
260
- end
@@ -1,82 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
- require 'shared_examples/calculator_shared_examples'
5
-
6
- RSpec.describe Spree::Calculator::DistributedAmount, type: :model do
7
- context 'applied to an order' do
8
- let(:calculator) { Spree::Calculator::DistributedAmount.new }
9
- let(:promotion) {
10
- create :promotion,
11
- name: '15 spread'
12
- }
13
- let(:order) {
14
- create :completed_order_with_promotion,
15
- promotion: promotion,
16
- line_items_attributes: [{ price: 20 }, { price: 30 }, { price: 100 }]
17
- }
18
-
19
- before do
20
- calculator.preferred_amount = 15
21
- Spree::Promotion::Actions::CreateItemAdjustments.create!(calculator: calculator, promotion: promotion)
22
- order.recalculate
23
- end
24
-
25
- it 'correctly distributes the entire discount' do
26
- expect(order.promo_total).to eq(-15)
27
- expect(order.line_items.map(&:adjustment_total)).to eq([-2, -3, -10])
28
- end
29
-
30
- context 'with product promotion rule' do
31
- let(:first_product) { order.line_items.first.product }
32
-
33
- before do
34
- rule = Spree::Promotion::Rules::Product.create!(
35
- promotion: promotion,
36
- product_promotion_rules: [
37
- Spree::ProductPromotionRule.new(product: first_product),
38
- ],
39
- )
40
- promotion.rules << rule
41
- promotion.save!
42
- order.recalculate
43
- end
44
-
45
- it 'still distributes the entire discount' do
46
- expect(order.promo_total).to eq(-15)
47
- expect(order.line_items.map(&:adjustment_total)).to eq([-15, 0, 0])
48
- end
49
- end
50
- end
51
-
52
- describe "#compute_line_item" do
53
- subject { calculator.compute_line_item(order.line_items.first) }
54
-
55
- let(:calculator) { Spree::Calculator::DistributedAmount.new }
56
- let(:promotion) { create(:promotion) }
57
-
58
- let(:order) do
59
- FactoryBot.create(
60
- :order_with_line_items,
61
- line_items_attributes: [{ price: 50 }, { price: 50 }, { price: 50 }]
62
- )
63
- end
64
-
65
- before do
66
- calculator.preferred_amount = 15
67
- calculator.preferred_currency = currency
68
- Spree::Promotion::Actions::CreateItemAdjustments.create!(calculator: calculator, promotion: promotion)
69
- end
70
-
71
- context "when the order currency matches the store's currency" do
72
- let(:currency) { "USD" }
73
- it { is_expected.to eq 5 }
74
- it { is_expected.to be_a BigDecimal }
75
- end
76
-
77
- context "when the order currency does not match the store's currency" do
78
- let(:currency) { "CAD" }
79
- it { is_expected.to eq 0 }
80
- end
81
- end
82
- end