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,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- RSpec.describe ShippingCalculator, type: :model do
7
- let(:line_item1) { build(:line_item, price: 10) }
8
- let(:line_item2) { build(:line_item, price: 20) }
9
-
10
- let(:inventory_unit1) { build(:inventory_unit, line_item: line_item1) }
11
- let(:inventory_unit2) { build(:inventory_unit, line_item: line_item2) }
12
-
13
- let(:package) do
14
- build(
15
- :stock_package,
16
- contents: [
17
- Spree::Stock::ContentItem.new(inventory_unit1),
18
- Spree::Stock::ContentItem.new(inventory_unit1),
19
- Spree::Stock::ContentItem.new(inventory_unit2)
20
- ]
21
- )
22
- end
23
-
24
- subject { described_class.new }
25
-
26
- it 'computes with a package' do
27
- expect(subject).to receive(:compute_package).with(package)
28
- subject.compute(package)
29
- end
30
-
31
- it 'compute_package must be overridden' do
32
- expect {
33
- subject.compute_package(package)
34
- }.to raise_error NotImplementedError
35
- end
36
-
37
- it 'checks availability for a package' do
38
- expect(subject.available?(package)).to be true
39
- end
40
-
41
- it 'calculates totals for content_items' do
42
- expect(subject.send(:total, package.contents)).to eq 40.00
43
- end
44
- end
45
- end
@@ -1,110 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- RSpec.describe ShippingManifest, type: :model do
7
- let!(:store) { create :store }
8
- let(:order) { Order.create! }
9
- let(:variant) { create :variant }
10
- let!(:shipment) { create(:shipment, state: 'pending', order: order) }
11
- subject(:manifest) { described_class.new(inventory_units: inventory_units) }
12
-
13
- def build_unit(variant, attrs = {})
14
- attrs = { variant: variant, shipment: shipment }.merge(attrs)
15
- attrs[:line_item] = order.contents.add(variant)
16
- InventoryUnit.new(attrs)
17
- end
18
-
19
- describe "#items" do
20
- context 'empty' do
21
- let(:inventory_units) { [] }
22
- it "has correct item" do
23
- expect(manifest.items.count).to eq 0
24
- end
25
- end
26
-
27
- context 'single unit' do
28
- let(:inventory_units) { [build_unit(variant)] }
29
- it "has correct item" do
30
- expect(manifest.items.count).to eq 1
31
- expect(manifest.items[0]).to have_attributes(
32
- variant: variant,
33
- quantity: 1,
34
- states: { "on_hand" => 1 }
35
- )
36
- end
37
- end
38
-
39
- context 'two units of same variant' do
40
- let(:inventory_units) { [build_unit(variant), build_unit(variant)] }
41
- it "has correct item" do
42
- expect(manifest.items.count).to eq 1
43
- expect(manifest.items[0]).to have_attributes(
44
- variant: variant,
45
- quantity: 2,
46
- states: { "on_hand" => 2 }
47
- )
48
- end
49
- end
50
-
51
- context 'two units of different variants' do
52
- let(:variant2){ create :variant }
53
- let(:inventory_units) { [build_unit(variant), build_unit(variant2)] }
54
- it "has correct item" do
55
- expect(manifest.items.count).to eq 2
56
- expect(manifest.items[0]).to have_attributes(
57
- variant: variant,
58
- quantity: 1,
59
- states: { "on_hand" => 1 }
60
- )
61
- expect(manifest.items[1]).to have_attributes(
62
- variant: variant2,
63
- quantity: 1,
64
- states: { "on_hand" => 1 }
65
- )
66
- end
67
- end
68
- end
69
-
70
- describe "#for_order" do
71
- let!(:order2) { create(:order_with_line_items) }
72
- context 'single unit' do
73
- let(:inventory_units) { [inventory_unit] }
74
- let(:inventory_unit) { build_unit(variant) }
75
-
76
- before do
77
- allow(inventory_unit).to receive(:order_id) { order.id }
78
- end
79
-
80
- it "has single ManifestItem in correct order" do
81
- expect(manifest.for_order(order).items.count).to eq 1
82
- end
83
-
84
- it "has no ManifestItem in other order" do
85
- expect(manifest.for_order(order2).items.count).to eq 0
86
- end
87
- end
88
-
89
- context 'one units in each order' do
90
- let(:order_2) { build_stubbed(:order) }
91
- let(:inventory_units) { [inventory_unit_one, inventory_unit_two] }
92
- let(:inventory_unit_one) { build_unit(variant) }
93
- let(:inventory_unit_two) { build_unit(variant) }
94
-
95
- before do
96
- allow(inventory_unit_one).to receive(:order_id) { order.id }
97
- allow(inventory_unit_two).to receive(:order_id) { order_2.id }
98
- end
99
-
100
- it "has single ManifestItem in first order" do
101
- expect(manifest.for_order(order).items.count).to eq 1
102
- end
103
-
104
- it "has single ManifestItem in second order" do
105
- expect(manifest.for_order(order_2).items.count).to eq 1
106
- end
107
- end
108
- end
109
- end
110
- end
@@ -1,292 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- class DummyShippingCalculator < Spree::ShippingCalculator
6
- end
7
-
8
- RSpec.describe Spree::ShippingMethod, type: :model do
9
- # Regression test for https://github.com/spree/spree/issues/4492
10
- context "#shipments" do
11
- let!(:shipping_method) { create(:shipping_method) }
12
- let!(:shipment) do
13
- shipment = create(:shipment)
14
- shipment.shipping_rates.create!(shipping_method: shipping_method)
15
- shipment
16
- end
17
-
18
- it "can gather all the related shipments" do
19
- expect(shipping_method.shipments).to include(shipment)
20
- end
21
- end
22
-
23
- context "validations" do
24
- before { subject.valid? }
25
-
26
- it "validates presence of name" do
27
- expect(subject.errors[:name].size).to eq(1)
28
- end
29
-
30
- context "shipping category" do
31
- it "validates presence of at least one" do
32
- expect(subject.errors[:base].size).to eq(1)
33
- end
34
-
35
- context "one associated" do
36
- before do
37
- subject.shipping_categories.push create(:shipping_category)
38
- subject.valid?
39
- end
40
-
41
- it { expect(subject.errors[:base].size).to eq(0) }
42
- end
43
- end
44
- end
45
-
46
- context "generating tracking URLs" do
47
- context "shipping method has a tracking URL mask on file" do
48
- let(:tracking_url) { "https://track-o-matic.com/:tracking" }
49
- before { allow(subject).to receive(:tracking_url) { tracking_url } }
50
-
51
- context 'tracking number has spaces' do
52
- let(:tracking_numbers) { ["1234 5678 9012 3456", "a bcdef"] }
53
- let(:expectations) { %w[https://track-o-matic.com/1234%205678%209012%203456 https://track-o-matic.com/a%20bcdef] }
54
-
55
- it "should return a single URL with '%20' in lieu of spaces" do
56
- tracking_numbers.each_with_index do |num, i|
57
- expect(subject.build_tracking_url(num)).to eq(expectations[i])
58
- end
59
- end
60
- end
61
- end
62
- end
63
-
64
- # Regression test for https://github.com/spree/spree/issues/4320
65
- context "soft deletion" do
66
- let(:shipping_method) { create(:shipping_method) }
67
- it "soft-deletes when destroy is called" do
68
- shipping_method.discard
69
- expect(shipping_method.deleted_at).not_to be_blank
70
- end
71
- end
72
-
73
- describe ".with_all_shipping_category_ids" do
74
- let(:category1) { create(:shipping_category) }
75
- let(:category2) { create(:shipping_category) }
76
-
77
- def matching(categories)
78
- described_class.with_all_shipping_category_ids(categories.map(&:id))
79
- end
80
-
81
- context "with one associated shipping category" do
82
- let!(:shipping_method) { create(:shipping_method, shipping_categories: [category1]) }
83
-
84
- it "should match the associated category" do
85
- expect(matching([category1])).to eq [shipping_method]
86
- end
87
-
88
- it "should not match the other category" do
89
- expect(matching([category2])).to be_empty
90
- end
91
-
92
- it "should not match both categories" do
93
- expect(matching([category1, category2])).to be_empty
94
- end
95
-
96
- context "with additional joins" do
97
- before do
98
- shipping_method.zones << create(:zone)
99
- end
100
- it "should not match both categories" do
101
- result =
102
- described_class.
103
- joins(:zones).
104
- with_all_shipping_category_ids([category1.id, category2.id])
105
- expect(result).to be_empty
106
- end
107
- end
108
- end
109
-
110
- context "with two associated shipping categories" do
111
- let!(:shipping_method) { create(:shipping_method, shipping_categories: [category1, category2]) }
112
-
113
- it "should match the associated category" do
114
- expect(matching([category1])).to eq [shipping_method]
115
- end
116
-
117
- it "should match both categories" do
118
- expect(matching([category1, category2])).to eq [shipping_method]
119
- end
120
- end
121
-
122
- context "with several shipping methods" do
123
- let!(:shipping_method1) { create(:shipping_method, shipping_categories: [category1]) }
124
- let!(:shipping_method2) { create(:shipping_method, shipping_categories: [category1, category2]) }
125
- let!(:shipping_method3) { create(:shipping_method, shipping_categories: [category2]) }
126
-
127
- it "matches correctly" do
128
- expect(matching([category1])).to match_array [shipping_method1, shipping_method2]
129
- end
130
- end
131
- end
132
-
133
- describe ".available_in_stock_location" do
134
- let!(:stock_location) { create :stock_location }
135
- let!(:other_stock_location) { create :stock_location }
136
-
137
- subject { described_class.available_in_stock_location(stock_location) }
138
-
139
- context "when available_to_all" do
140
- let!(:shipping_method) { create(:shipping_method, available_to_all: true) }
141
-
142
- it "returns the shipping_method" do
143
- is_expected.to eq [shipping_method]
144
- end
145
- end
146
-
147
- context "when in stock location" do
148
- let!(:shipping_method) { create(:shipping_method, available_to_all: false, stock_locations: [stock_location]) }
149
-
150
- it "returns the shipping_method" do
151
- is_expected.to eq [shipping_method]
152
- end
153
- end
154
-
155
- context "when available_to_all and in stock location" do
156
- let!(:shipping_method) { create(:shipping_method, available_to_all: true, stock_locations: [stock_location]) }
157
-
158
- it "returns the shipping_method" do
159
- is_expected.to eq [shipping_method]
160
- end
161
- end
162
-
163
- context "when in no stock locations" do
164
- let!(:shipping_method) { create(:shipping_method, available_to_all: false) }
165
-
166
- it "returns no results" do
167
- is_expected.to be_empty
168
- end
169
- end
170
-
171
- context "when in another stock location" do
172
- let!(:shipping_method) { create(:shipping_method, available_to_all: false, stock_locations: [other_stock_location]) }
173
-
174
- it "returns no results" do
175
- is_expected.to be_empty
176
- end
177
- end
178
-
179
- context "when available_to_all and in another stock location" do
180
- let!(:shipping_method) { create(:shipping_method, available_to_all: true, stock_locations: [other_stock_location]) }
181
-
182
- it "returns the shipping_method" do
183
- is_expected.to eq [shipping_method]
184
- end
185
- end
186
-
187
- context "when multiple shipping methods match" do
188
- let!(:shipping_method1) { create(:shipping_method, available_to_all: true, stock_locations: [other_stock_location]) }
189
- let!(:shipping_method2) { create(:shipping_method, available_to_all: false, stock_locations: [stock_location]) }
190
- let!(:shipping_method3) { create(:shipping_method, available_to_all: false, stock_locations: [other_stock_location]) }
191
-
192
- it "returns both matching shipping_methods" do
193
- is_expected.to match_array([shipping_method1, shipping_method2])
194
- end
195
- end
196
- end
197
-
198
- describe ".available_for_address" do
199
- let!(:included_country) { create(:country, iso: "US") }
200
- let!(:excluded_country) { create(:country, iso: "CA") }
201
- let!(:included_zone) { create(:zone, countries: [included_country]) }
202
- let!(:excluded_zone) { create(:zone, countries: [excluded_country]) }
203
- let!(:shipping_method) { create(:shipping_method, zones: [included_zone]) }
204
-
205
- let(:matches) { described_class.available_for_address(address) }
206
- subject { matches }
207
-
208
- context "address included in zone" do
209
- let!(:address) { create(:address, country_iso_code: 'US') }
210
-
211
- it { is_expected.to include(shipping_method) }
212
- end
213
-
214
- context "address included other zone" do
215
- let!(:address) { create(:address, country_iso_code: 'CA') }
216
- it { is_expected.to_not include(shipping_method) }
217
- end
218
- end
219
-
220
- describe "display_on=" do
221
- subject do
222
- Spree::Deprecation.silence do
223
- described_class.new(display_on: display_on).available_to_users
224
- end
225
- end
226
-
227
- context "with 'back_end'" do
228
- let(:display_on) { 'back_end' }
229
- it { should be false }
230
- end
231
-
232
- context "with 'both'" do
233
- let(:display_on) { 'both' }
234
- it { should be true }
235
- end
236
-
237
- context "with 'front_end'" do
238
- let(:display_on) { 'front_end' }
239
- it { should be true }
240
- end
241
- end
242
-
243
- describe "display_on" do
244
- subject do
245
- Spree::Deprecation.silence do
246
- described_class.new(available_to_users: available_to_users).display_on
247
- end
248
- end
249
-
250
- context "when available_to_users is true" do
251
- let(:available_to_users) { true }
252
- it { should == 'both' }
253
- end
254
-
255
- context "when available_to_users is false" do
256
- let(:available_to_users) { false }
257
- it { should == 'back_end' }
258
- end
259
- end
260
-
261
- describe '.available_to_store' do
262
- let(:store) { create(:store) }
263
- let(:first_shipping_method) { create(:shipping_method, stores: [store]) }
264
- let(:second_shipping_method) { create(:shipping_method, stores: [store]) }
265
-
266
- subject { [first_shipping_method, second_shipping_method] }
267
-
268
- it 'raises an exception if no store is passed as argument' do
269
- expect {
270
- described_class.available_to_store(nil)
271
- }.to raise_exception(ArgumentError, 'You must provide a store')
272
- end
273
-
274
- context 'when the store has no shipping methods associated' do
275
- before { store.shipping_methods = [] }
276
-
277
- it 'returns all shipping methods' do
278
- expect(store.shipping_methods).to eq([])
279
- expect(described_class.available_to_store(store)).to eq(subject)
280
- end
281
- end
282
-
283
- context 'when the store has shipping methods associated' do
284
- before { create(:shipping_method) }
285
-
286
- it 'returns the associated records' do
287
- expect(store.shipping_methods).to eq(subject)
288
- expect(described_class.available_to_store(store)).to eq(subject)
289
- end
290
- end
291
- end
292
- end
@@ -1,154 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::ShippingRate, type: :model do
6
- let(:address) { create(:address) }
7
- let(:foreign_address) { create :address, country_iso_code: "DE" }
8
- let(:order) { create :order, ship_address: address }
9
- let(:shipment) { create(:shipment, order: order) }
10
- let(:shipping_method) { create(:shipping_method, tax_category: tax_category) }
11
- let(:tax_category) { create :tax_category }
12
-
13
- subject(:shipping_rate) do
14
- Spree::ShippingRate.new(
15
- shipment: shipment,
16
- shipping_method: shipping_method,
17
- cost: 10
18
- )
19
- end
20
-
21
- context "#display_price" do
22
- let!(:default_zone) { create :zone, countries: [address.country] }
23
- let!(:other_zone) { create :zone, countries: [foreign_address.country] }
24
-
25
- before do
26
- allow(order).to receive(:tax_address).and_return(order_address)
27
- end
28
-
29
- context 'with one included tax rate' do
30
- let!(:tax_rate) do
31
- create :tax_rate,
32
- included_in_price: true,
33
- name: "VAT",
34
- zone: default_zone,
35
- tax_categories: [tax_category]
36
- end
37
-
38
- let(:order_address) { address }
39
-
40
- before do
41
- Spree::Tax::ShippingRateTaxer.new.tax(shipping_rate)
42
- end
43
-
44
- it "shows correct tax amount" do
45
- expect(shipping_rate.display_price.to_s).to eq("$10.00 (incl. $0.91 #{tax_rate.name})")
46
- end
47
-
48
- context "when cost is zero" do
49
- before do
50
- shipping_rate.cost = 0
51
- end
52
-
53
- it "shows no tax amount" do
54
- expect(shipping_rate.display_price.to_s).to eq("$0.00")
55
- end
56
- end
57
- end
58
-
59
- context 'with one additional tax rate' do
60
- let!(:tax_rate) do
61
- create :tax_rate,
62
- included_in_price: false,
63
- name: "Sales Tax",
64
- zone: default_zone,
65
- tax_categories: [tax_category]
66
- end
67
-
68
- let(:order_address) { address }
69
-
70
- before do
71
- Spree::Tax::ShippingRateTaxer.new.tax(shipping_rate)
72
- end
73
-
74
- it "shows correct tax amount" do
75
- expect(shipping_rate.display_price.to_s).to eq("$10.00 (+ $1.00 #{tax_rate.name})")
76
- end
77
-
78
- context "when cost is zero" do
79
- before do
80
- shipping_rate.cost = 0
81
- end
82
-
83
- it "shows no tax amount" do
84
- expect(shipping_rate.display_price.to_s).to eq("$0.00")
85
- end
86
- end
87
- end
88
-
89
- context 'with two additional tax rates' do
90
- let!(:tax_rate) do
91
- create :tax_rate,
92
- included_in_price: false,
93
- name: "Sales Tax",
94
- zone: default_zone,
95
- tax_categories: [tax_category]
96
- end
97
-
98
- let!(:other_tax_rate) do
99
- create :tax_rate,
100
- included_in_price: false,
101
- name: "Other Sales Tax",
102
- zone: default_zone,
103
- tax_categories: [tax_category],
104
- amount: 0.05
105
- end
106
-
107
- let(:order_address) { address }
108
-
109
- before do
110
- Spree::Tax::ShippingRateTaxer.new.tax(shipping_rate)
111
- end
112
-
113
- it "shows correct tax amount" do
114
- expect(shipping_rate.display_price.to_s).to match(/\$10.00 \(.*, .*\)/)
115
- expect(shipping_rate.display_price.to_s).to include("+ $1.00 Sales Tax")
116
- expect(shipping_rate.display_price.to_s).to include("+ $0.50 Other Sales Tax")
117
- end
118
-
119
- context "when cost is zero" do
120
- before do
121
- shipping_rate.cost = 0
122
- end
123
-
124
- it "shows no tax amount" do
125
- expect(shipping_rate.display_price.to_s).to eq("$0.00")
126
- end
127
- end
128
- end
129
- end
130
-
131
- # Regression test for https://github.com/spree/spree/issues/3829
132
- context "#shipping_method" do
133
- it "can be retrieved" do
134
- expect(shipping_rate.shipping_method.reload).to eq(shipping_method)
135
- end
136
-
137
- it "can be retrieved even when deleted" do
138
- shipping_method.update_column(:deleted_at, Time.current)
139
- shipping_rate.save
140
- shipping_rate.reload
141
- expect(shipping_rate.shipping_method).to eq(shipping_method)
142
- end
143
- end
144
-
145
- context "#shipping_method_code" do
146
- before do
147
- shipping_method.code = "THE_CODE"
148
- end
149
-
150
- it 'should be shipping_method.code' do
151
- expect(shipping_rate.shipping_method_code).to eq("THE_CODE")
152
- end
153
- end
154
- end
@@ -1,79 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- RSpec.describe ShippingRateTax, type: :model do
7
- subject(:shipping_rate_tax) { described_class.new }
8
-
9
- it { is_expected.to respond_to(:amount) }
10
- it { is_expected.to respond_to(:tax_rate) }
11
- it { is_expected.to respond_to(:shipping_rate) }
12
-
13
- describe 'absolute_amount' do
14
- subject(:shipping_rate_tax) { described_class.new(amount: amount).absolute_amount }
15
-
16
- context 'with a negative amount' do
17
- let(:amount) { -19 }
18
-
19
- it { is_expected.to eq(19) }
20
- end
21
-
22
- context 'with a positive amount' do
23
- let(:amount) { 19 }
24
- it { is_expected.to eq(19) }
25
- end
26
- end
27
-
28
- describe 'display_absolute_amount' do
29
- subject(:shipping_rate_tax) { described_class.new(amount: 10).display_absolute_amount.to_s }
30
-
31
- it { is_expected.to eq("$10.00") }
32
- end
33
-
34
- describe '#currency' do
35
- subject(:shipping_rate_tax) { described_class.new(amount: 10, shipping_rate: shipping_rate).currency }
36
-
37
- context 'when we have a shipping rate' do
38
- let(:shipping_rate) { build_stubbed(:shipping_rate) }
39
-
40
- it 'delegates the call to the shipment' do
41
- expect(shipping_rate).to receive(:currency)
42
- subject
43
- end
44
- end
45
-
46
- context "when we don't have a shipping rate" do
47
- let(:shipping_rate) { nil }
48
-
49
- it 'is nil' do
50
- expect(subject).to eq(nil)
51
- end
52
- end
53
- end
54
-
55
- describe '#label' do
56
- subject(:shipping_rate_tax) { described_class.new(amount: amount, tax_rate: tax_rate).label }
57
-
58
- context 'with an included tax rate' do
59
- let(:tax_rate) { build_stubbed(:tax_rate, included_in_price: true, name: "VAT") }
60
-
61
- context 'with a positive amount' do
62
- let(:amount) { 2.2 }
63
- it 'labels an included tax' do
64
- expect(subject).to eq("incl. $2.20 VAT")
65
- end
66
- end
67
- end
68
-
69
- context 'with an additional tax rate' do
70
- let(:tax_rate) { build_stubbed(:tax_rate, included_in_price: false, name: "Sales Tax") }
71
- let(:amount) { 2.2 }
72
-
73
- it 'labels an additional tax' do
74
- expect(subject).to eq("+ $2.20 Sales Tax")
75
- end
76
- end
77
- end
78
- end
79
- end