solidus_core 2.10.5 → 3.0.8

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 (618) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js.erb +0 -22
  3. data/app/controllers/spree/base_controller.rb +1 -0
  4. data/app/helpers/spree/store_helper.rb +0 -11
  5. data/app/mailers/spree/base_mailer.rb +4 -0
  6. data/app/mailers/spree/carton_mailer.rb +1 -5
  7. data/app/mailers/spree/order_mailer.rb +1 -1
  8. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +71 -0
  9. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
  10. data/app/models/concerns/spree/active_storage_adapter.rb +118 -0
  11. data/app/models/concerns/spree/adjustment_source.rb +0 -15
  12. data/app/models/concerns/spree/calculated_adjustments.rb +0 -18
  13. data/app/models/concerns/spree/default_price.rb +1 -1
  14. data/app/models/concerns/spree/soft_deletable.rb +16 -0
  15. data/app/models/concerns/spree/user_address_book.rb +61 -44
  16. data/app/models/concerns/spree/user_methods.rb +23 -12
  17. data/app/models/spree/ability.rb +0 -13
  18. data/app/models/spree/address/name.rb +31 -0
  19. data/app/models/spree/address/state_validator.rb +71 -0
  20. data/app/models/spree/address.rb +17 -95
  21. data/app/models/spree/adjustment.rb +1 -29
  22. data/app/models/spree/base.rb +1 -28
  23. data/app/models/spree/calculator/default_tax.rb +1 -1
  24. data/app/models/spree/calculator/flexi_rate.rb +0 -5
  25. data/app/models/spree/calculator.rb +8 -11
  26. data/app/models/spree/country.rb +1 -6
  27. data/app/models/spree/credit_card.rb +2 -29
  28. data/app/models/spree/customer_return.rb +5 -6
  29. data/app/models/spree/exchange.rb +1 -1
  30. data/app/models/spree/image/active_storage_attachment.rb +29 -0
  31. data/app/models/spree/image/paperclip_attachment.rb +1 -1
  32. data/app/models/spree/image.rb +0 -7
  33. data/app/models/spree/inventory_unit.rb +1 -22
  34. data/app/models/spree/line_item.rb +12 -46
  35. data/app/models/spree/log_entry.rb +74 -1
  36. data/app/models/spree/option_type.rb +1 -1
  37. data/app/models/spree/option_value.rb +2 -2
  38. data/app/models/spree/order/payments.rb +2 -2
  39. data/app/models/spree/order.rb +70 -132
  40. data/app/models/spree/order_cancellations.rb +4 -24
  41. data/app/models/spree/order_inventory.rb +16 -4
  42. data/app/models/spree/order_merger.rb +7 -5
  43. data/app/models/spree/order_promotion.rb +1 -1
  44. data/app/models/spree/order_shipping.rb +6 -9
  45. data/app/models/spree/order_updater.rb +7 -15
  46. data/app/models/spree/payment/cancellation.rb +3 -22
  47. data/app/models/spree/payment/processing.rb +54 -30
  48. data/app/models/spree/payment.rb +13 -9
  49. data/app/models/spree/payment_create.rb +1 -13
  50. data/app/models/spree/payment_method/bogus_credit_card.rb +13 -9
  51. data/app/models/spree/payment_method/credit_card.rb +1 -3
  52. data/app/models/spree/payment_method/simple_bogus_credit_card.rb +4 -4
  53. data/app/models/spree/payment_method.rb +7 -106
  54. data/app/models/spree/payment_source.rb +2 -2
  55. data/app/models/spree/preference.rb +1 -1
  56. data/app/models/spree/price.rb +3 -9
  57. data/app/models/spree/product/scopes.rb +9 -32
  58. data/app/models/spree/product.rb +24 -52
  59. data/app/models/spree/promotion/actions/create_adjustment.rb +0 -3
  60. data/app/models/spree/promotion/actions/create_item_adjustments.rb +0 -3
  61. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +0 -3
  62. data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
  63. data/app/models/spree/promotion/rules/taxon.rb +2 -15
  64. data/app/models/spree/promotion.rb +15 -8
  65. data/app/models/spree/promotion_action.rb +5 -15
  66. data/app/models/spree/promotion_code/batch_builder.rb +0 -14
  67. data/app/models/spree/promotion_code.rb +8 -3
  68. data/app/models/spree/promotion_code_batch.rb +1 -1
  69. data/app/models/spree/promotion_handler/coupon.rb +2 -2
  70. data/app/models/spree/promotion_rule.rb +5 -1
  71. data/app/models/spree/promotion_rule_role.rb +1 -1
  72. data/app/models/spree/refund.rb +19 -13
  73. data/app/models/spree/reimbursement.rb +11 -22
  74. data/app/models/spree/reimbursement_performer.rb +2 -8
  75. data/app/models/spree/reimbursement_type/credit.rb +1 -4
  76. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +8 -2
  77. data/app/models/spree/reimbursement_type/store_credit.rb +1 -4
  78. data/app/models/spree/return_authorization.rb +2 -5
  79. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
  80. data/app/models/spree/return_item.rb +10 -18
  81. data/app/models/spree/role.rb +1 -1
  82. data/app/models/spree/shipment.rb +3 -56
  83. data/app/models/spree/shipping_calculator.rb +1 -1
  84. data/app/models/spree/shipping_manifest.rb +2 -2
  85. data/app/models/spree/shipping_method.rb +3 -35
  86. data/app/models/spree/shipping_rate.rb +1 -3
  87. data/app/models/spree/shipping_rate_tax.rb +1 -1
  88. data/app/models/spree/state.rb +0 -4
  89. data/app/models/spree/stock/availability_validator.rb +2 -2
  90. data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
  91. data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
  92. data/app/models/spree/stock/inventory_validator.rb +2 -2
  93. data/app/models/spree/stock/package.rb +1 -1
  94. data/app/models/spree/stock/simple_coordinator.rb +7 -18
  95. data/app/models/spree/stock/splitter/base.rb +2 -7
  96. data/app/models/spree/stock_item.rb +3 -15
  97. data/app/models/spree/stock_movement.rb +2 -0
  98. data/app/models/spree/store.rb +1 -13
  99. data/app/models/spree/store_credit.rb +9 -7
  100. data/app/models/spree/store_credit_category.rb +3 -8
  101. data/app/models/spree/store_credit_event.rb +1 -7
  102. data/app/models/spree/store_credit_reason.rb +0 -4
  103. data/app/models/spree/tax/tax_helpers.rb +1 -1
  104. data/app/models/spree/tax_calculator/shipping_rate.rb +1 -12
  105. data/app/models/spree/tax_category.rb +2 -8
  106. data/app/models/spree/tax_rate.rb +7 -34
  107. data/app/models/spree/taxon/active_storage_attachment.rb +13 -0
  108. data/app/models/spree/taxon/paperclip_attachment.rb +0 -4
  109. data/app/models/spree/taxon.rb +1 -12
  110. data/app/models/spree/user_address.rb +3 -2
  111. data/app/models/spree/variant.rb +8 -58
  112. data/app/models/spree/variant_property_rule.rb +5 -1
  113. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +8 -3
  114. data/app/models/spree/zone.rb +1 -1
  115. data/config/locales/en.yml +293 -13
  116. data/db/default/spree/countries.rb +1 -1
  117. data/db/default/spree/states.rb +12 -4
  118. data/db/default/spree/store_credit.rb +2 -2
  119. data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
  120. data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
  121. data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
  122. data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
  123. data/db/migrate/20210122110141_add_name_to_spree_addresses.rb +13 -0
  124. data/lib/generators/{spree → solidus}/install/install_generator.rb +82 -14
  125. data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +4 -9
  126. data/lib/generators/spree/dummy/dummy_generator.rb +2 -1
  127. data/lib/generators/spree/dummy/templates/rails/database.yml +6 -1
  128. data/lib/generators/spree/dummy/templates/rails/storage.yml +3 -0
  129. data/lib/generators/spree/dummy/templates/rails/test.rb +6 -1
  130. data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
  131. data/lib/spree/app_configuration.rb +104 -72
  132. data/lib/spree/core/class_constantizer.rb +2 -0
  133. data/lib/spree/core/controller_helpers/auth.rb +4 -4
  134. data/lib/spree/core/controller_helpers/current_host.rb +17 -0
  135. data/lib/spree/core/controller_helpers/order.rb +8 -27
  136. data/lib/spree/core/controller_helpers/payment_parameters.rb +0 -54
  137. data/lib/spree/core/controller_helpers/pricing.rb +0 -8
  138. data/lib/spree/core/controller_helpers/strong_parameters.rb +0 -4
  139. data/lib/spree/core/engine.rb +23 -8
  140. data/lib/spree/core/environment_extension.rb +0 -9
  141. data/lib/spree/core/importer/order.rb +24 -10
  142. data/lib/spree/core/permalinks.rb +1 -3
  143. data/lib/spree/core/product_filters.rb +5 -44
  144. data/lib/spree/core/role_configuration.rb +0 -14
  145. data/lib/spree/core/search/base.rb +0 -26
  146. data/lib/spree/core/state_machines/order.rb +249 -0
  147. data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
  148. data/lib/spree/core/state_machines.rb +11 -1
  149. data/lib/spree/core/validators/email.rb +2 -2
  150. data/lib/spree/core/version.rb +1 -1
  151. data/lib/spree/core.rb +11 -19
  152. data/lib/spree/deprecation.rb +1 -1
  153. data/lib/spree/encryptor.rb +25 -0
  154. data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
  155. data/lib/spree/event/configuration.rb +7 -7
  156. data/lib/spree/event/subscriber.rb +22 -20
  157. data/lib/spree/event/subscriber_registry.rb +94 -0
  158. data/lib/spree/event.rb +20 -18
  159. data/lib/spree/i18n.rb +0 -22
  160. data/lib/spree/mailer_previews/carton_preview.rb +2 -1
  161. data/lib/spree/money.rb +3 -18
  162. data/lib/spree/permission_sets/configuration_display.rb +14 -14
  163. data/lib/spree/permission_sets/default_customer.rb +16 -16
  164. data/lib/spree/permission_sets/order_display.rb +11 -11
  165. data/lib/spree/permission_sets/order_management.rb +1 -1
  166. data/lib/spree/permission_sets/product_display.rb +9 -9
  167. data/lib/spree/permission_sets/promotion_display.rb +5 -5
  168. data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
  169. data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
  170. data/lib/spree/permission_sets/stock_display.rb +2 -2
  171. data/lib/spree/permission_sets/stock_management.rb +1 -1
  172. data/lib/spree/permission_sets/user_display.rb +3 -3
  173. data/lib/spree/permission_sets/user_management.rb +4 -3
  174. data/lib/spree/permitted_attributes.rb +12 -56
  175. data/lib/spree/preferences/persistable.rb +23 -0
  176. data/lib/spree/preferences/preferable.rb +4 -3
  177. data/lib/spree/preferences/preferable_class_methods.rb +22 -3
  178. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  179. data/lib/spree/testing_support/authorization_helpers.rb +1 -0
  180. data/lib/spree/testing_support/blacklist_urls.rb +23 -0
  181. data/lib/spree/testing_support/capybara_ext.rb +3 -30
  182. data/lib/spree/testing_support/common_rake.rb +3 -3
  183. data/lib/spree/testing_support/controller_requests.rb +0 -82
  184. data/lib/spree/testing_support/dummy_app/mailer_previews/test_mailer_preview.rb +4 -0
  185. data/lib/spree/testing_support/dummy_app/migrations.rb +2 -6
  186. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
  187. data/lib/spree/testing_support/dummy_app.rb +41 -24
  188. data/lib/spree/testing_support/factories/address_factory.rb +7 -4
  189. data/lib/spree/testing_support/factories/adjustment_factory.rb +10 -5
  190. data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +5 -0
  191. data/lib/spree/testing_support/factories/calculator_factory.rb +5 -0
  192. data/lib/spree/testing_support/factories/carton_factory.rb +7 -2
  193. data/lib/spree/testing_support/factories/country_factory.rb +5 -0
  194. data/lib/spree/testing_support/factories/credit_card_factory.rb +5 -0
  195. data/lib/spree/testing_support/factories/customer_return_factory.rb +8 -3
  196. data/lib/spree/testing_support/factories/image_factory.rb +6 -1
  197. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +9 -4
  198. data/lib/spree/testing_support/factories/line_item_factory.rb +7 -2
  199. data/lib/spree/testing_support/factories/option_type_factory.rb +8 -0
  200. data/lib/spree/testing_support/factories/option_value_factory.rb +5 -0
  201. data/lib/spree/testing_support/factories/order_factory.rb +11 -7
  202. data/lib/spree/testing_support/factories/order_promotion_factory.rb +7 -2
  203. data/lib/spree/testing_support/factories/payment_factory.rb +9 -4
  204. data/lib/spree/testing_support/factories/payment_method_factory.rb +5 -0
  205. data/lib/spree/testing_support/factories/price_factory.rb +6 -1
  206. data/lib/spree/testing_support/factories/product_factory.rb +10 -5
  207. data/lib/spree/testing_support/factories/product_option_type_factory.rb +7 -2
  208. data/lib/spree/testing_support/factories/product_property_factory.rb +7 -2
  209. data/lib/spree/testing_support/factories/promotion_category_factory.rb +5 -0
  210. data/lib/spree/testing_support/factories/promotion_code_factory.rb +7 -2
  211. data/lib/spree/testing_support/factories/promotion_factory.rb +13 -2
  212. data/lib/spree/testing_support/factories/property_factory.rb +5 -0
  213. data/lib/spree/testing_support/factories/refund_factory.rb +7 -2
  214. data/lib/spree/testing_support/factories/refund_reason_factory.rb +5 -0
  215. data/lib/spree/testing_support/factories/reimbursement_factory.rb +7 -2
  216. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +5 -0
  217. data/lib/spree/testing_support/factories/return_authorization_factory.rb +8 -3
  218. data/lib/spree/testing_support/factories/return_item_factory.rb +8 -4
  219. data/lib/spree/testing_support/factories/return_reason_factory.rb +5 -0
  220. data/lib/spree/testing_support/factories/role_factory.rb +5 -0
  221. data/lib/spree/testing_support/factories/shipment_factory.rb +9 -3
  222. data/lib/spree/testing_support/factories/shipping_category_factory.rb +5 -0
  223. data/lib/spree/testing_support/factories/shipping_method_factory.rb +8 -3
  224. data/lib/spree/testing_support/factories/shipping_rate_factory.rb +7 -2
  225. data/lib/spree/testing_support/factories/state_factory.rb +7 -1
  226. data/lib/spree/testing_support/factories/stock_item_factory.rb +7 -2
  227. data/lib/spree/testing_support/factories/stock_location_factory.rb +8 -3
  228. data/lib/spree/testing_support/factories/stock_movement_factory.rb +6 -1
  229. data/lib/spree/testing_support/factories/stock_package_factory.rb +7 -2
  230. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +13 -0
  231. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +8 -2
  232. data/lib/spree/testing_support/factories/store_credit_factory.rb +8 -3
  233. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +8 -1
  234. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +5 -0
  235. data/lib/spree/testing_support/factories/store_factory.rb +6 -1
  236. data/lib/spree/testing_support/factories/tax_category_factory.rb +7 -1
  237. data/lib/spree/testing_support/factories/tax_rate_factory.rb +8 -3
  238. data/lib/spree/testing_support/factories/taxon_factory.rb +10 -1
  239. data/lib/spree/testing_support/factories/taxonomy_factory.rb +5 -0
  240. data/lib/spree/testing_support/factories/user_factory.rb +14 -3
  241. data/lib/spree/testing_support/factories/variant_factory.rb +9 -4
  242. data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +7 -2
  243. data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +8 -3
  244. data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +7 -2
  245. data/lib/spree/testing_support/factories/zone_factory.rb +8 -3
  246. data/lib/spree/testing_support/factories.rb +8 -4
  247. data/lib/spree/testing_support/factory_bot.rb +68 -0
  248. data/lib/spree/testing_support/fixtures/blank.jpg +0 -0
  249. data/lib/spree/testing_support/fixtures/file.txt +1 -0
  250. data/lib/spree/testing_support/job_helpers.rb +24 -0
  251. data/lib/spree/testing_support/order_walkthrough.rb +10 -13
  252. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  253. data/lib/spree/testing_support/preferences.rb +0 -23
  254. data/lib/spree/testing_support/sequences.rb +4 -1
  255. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  256. data/lib/spree/testing_support/translations.rb +25 -0
  257. data/lib/spree/testing_support.rb +31 -0
  258. data/lib/tasks/solidus/check_orders_with_invalid_email.rake +18 -0
  259. data/lib/tasks/upgrade.rake +15 -0
  260. data/solidus_core.gemspec +30 -7
  261. metadata +137 -408
  262. data/app/mailers/spree/test_mailer.rb +0 -13
  263. data/app/models/concerns/spree/user_payment_source.rb +0 -26
  264. data/app/models/spree/calculator/free_shipping.rb +0 -21
  265. data/app/models/spree/calculator/percent_per_item.rb +0 -49
  266. data/app/models/spree/calculator/price_sack.rb +0 -27
  267. data/app/models/spree/gateway/bogus.rb +0 -13
  268. data/app/models/spree/gateway/bogus_simple.rb +0 -13
  269. data/app/models/spree/gateway.rb +0 -14
  270. data/app/models/spree/order/checkout.rb +0 -243
  271. data/app/models/spree/order_capturing.rb +0 -50
  272. data/app/models/spree/promotion_handler/free_shipping.rb +0 -9
  273. data/lib/solidus/migrations/rename_gateways.rb +0 -41
  274. data/lib/spree/core/current_store.rb +0 -24
  275. data/lib/spree/paranoia_deprecations.rb +0 -21
  276. data/lib/spree/promo/environment.rb +0 -12
  277. data/lib/spree/testing_support/bar_ability.rb +0 -19
  278. data/lib/tasks/core.rake +0 -104
  279. data/lib/tasks/email.rake +0 -11
  280. data/lib/tasks/migrations/copy_order_bill_address_to_credit_card.rake +0 -119
  281. data/lib/tasks/migrations/migrate_shipping_rate_taxes.rake +0 -22
  282. data/lib/tasks/migrations/migrate_user_addresses.rake +0 -34
  283. data/lib/tasks/migrations/rename_gateways.rake +0 -23
  284. data/lib/tasks/order_capturing.rake +0 -27
  285. data/script/rails +0 -10
  286. data/spec/fixtures/thinking-cat.jpg +0 -0
  287. data/spec/helpers/base_helper_spec.rb +0 -168
  288. data/spec/helpers/products_helper_spec.rb +0 -202
  289. data/spec/helpers/taxons_helper_spec.rb +0 -43
  290. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  291. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  292. data/spec/lib/i18n_spec.rb +0 -97
  293. data/spec/lib/search/base_spec.rb +0 -91
  294. data/spec/lib/search/variant_spec.rb +0 -115
  295. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  296. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  297. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  298. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  299. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  300. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  301. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  302. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  303. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -48
  304. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  305. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  306. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  307. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  308. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
  309. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  310. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  311. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  312. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  313. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  314. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  315. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  316. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  317. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  318. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  319. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  320. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  321. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  322. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  323. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  324. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  325. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  326. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  327. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  328. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  329. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  330. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  331. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  332. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  333. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  334. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  335. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  336. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  337. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  338. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  339. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  340. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  341. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  342. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  343. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  344. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  345. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  346. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  347. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  348. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  349. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  350. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  351. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  352. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  353. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  354. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  355. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  356. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  357. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  358. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  359. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  360. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  361. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  362. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  363. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  364. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  365. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  366. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  367. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  368. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  369. data/spec/lib/spree/core/version_spec.rb +0 -19
  370. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  371. data/spec/lib/spree/event_spec.rb +0 -130
  372. data/spec/lib/spree/localized_number_spec.rb +0 -45
  373. data/spec/lib/spree/migrations_spec.rb +0 -32
  374. data/spec/lib/spree/money_spec.rb +0 -298
  375. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  376. data/spec/lib/spree/permitted_attributes_spec.rb +0 -41
  377. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  378. data/spec/lib/tasks/dummy_task.rake +0 -12
  379. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  380. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  381. data/spec/mailers/carton_mailer_spec.rb +0 -44
  382. data/spec/mailers/order_mailer_spec.rb +0 -117
  383. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  384. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  385. data/spec/mailers/test_mailer_spec.rb +0 -13
  386. data/spec/models/spree/ability_spec.rb +0 -279
  387. data/spec/models/spree/address_spec.rb +0 -399
  388. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  389. data/spec/models/spree/adjustment_spec.rb +0 -339
  390. data/spec/models/spree/asset_spec.rb +0 -25
  391. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  392. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  393. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  394. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  395. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  396. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  397. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  398. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  399. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  400. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  401. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  402. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  403. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  404. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  405. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
  406. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  407. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  408. data/spec/models/spree/calculator_spec.rb +0 -43
  409. data/spec/models/spree/carton_spec.rb +0 -145
  410. data/spec/models/spree/classification_spec.rb +0 -126
  411. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  412. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  413. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  414. data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
  415. data/spec/models/spree/country_spec.rb +0 -154
  416. data/spec/models/spree/credit_card_spec.rb +0 -373
  417. data/spec/models/spree/customer_return_spec.rb +0 -294
  418. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  419. data/spec/models/spree/exchange_spec.rb +0 -76
  420. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  421. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  422. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  423. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  424. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  425. data/spec/models/spree/gateway_spec.rb +0 -14
  426. data/spec/models/spree/image_spec.rb +0 -25
  427. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  428. data/spec/models/spree/line_item_spec.rb +0 -240
  429. data/spec/models/spree/option_type_spec.rb +0 -16
  430. data/spec/models/spree/option_value_spec.rb +0 -52
  431. data/spec/models/spree/order/address_spec.rb +0 -52
  432. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  433. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  434. data/spec/models/spree/order/checkout_spec.rb +0 -740
  435. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  436. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  437. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  438. data/spec/models/spree/order/payment_spec.rb +0 -280
  439. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  440. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  441. data/spec/models/spree/order/totals_spec.rb +0 -26
  442. data/spec/models/spree/order/validations_spec.rb +0 -17
  443. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  444. data/spec/models/spree/order_capturing_spec.rb +0 -16
  445. data/spec/models/spree/order_contents_spec.rb +0 -362
  446. data/spec/models/spree/order_inventory_spec.rb +0 -285
  447. data/spec/models/spree/order_merger_spec.rb +0 -162
  448. data/spec/models/spree/order_mutex_spec.rb +0 -89
  449. data/spec/models/spree/order_promotion_spec.rb +0 -33
  450. data/spec/models/spree/order_shipping_spec.rb +0 -247
  451. data/spec/models/spree/order_spec.rb +0 -1687
  452. data/spec/models/spree/order_taxation_spec.rb +0 -128
  453. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  454. data/spec/models/spree/order_updater_spec.rb +0 -556
  455. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  456. data/spec/models/spree/payment_create_spec.rb +0 -195
  457. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  458. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  459. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  460. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  461. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  462. data/spec/models/spree/payment_method_spec.rb +0 -408
  463. data/spec/models/spree/payment_spec.rb +0 -1270
  464. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  465. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  466. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  467. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  468. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  469. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  470. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  471. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  472. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  473. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  474. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  475. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  476. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  477. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  478. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  479. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
  480. data/spec/models/spree/preference_spec.rb +0 -79
  481. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  482. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  483. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  484. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  485. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  486. data/spec/models/spree/preferences/store_spec.rb +0 -40
  487. data/spec/models/spree/price_spec.rb +0 -150
  488. data/spec/models/spree/product/scopes_spec.rb +0 -164
  489. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  490. data/spec/models/spree/product_filter_spec.rb +0 -28
  491. data/spec/models/spree/product_property_spec.rb +0 -20
  492. data/spec/models/spree/product_spec.rb +0 -584
  493. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  494. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  495. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  496. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  497. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  498. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  499. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  500. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  501. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  502. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  503. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  504. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  505. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -227
  506. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  507. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  508. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  509. data/spec/models/spree/promotion_action_spec.rb +0 -44
  510. data/spec/models/spree/promotion_category_spec.rb +0 -19
  511. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  512. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  513. data/spec/models/spree/promotion_code_spec.rb +0 -206
  514. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  515. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  516. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  517. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  518. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  519. data/spec/models/spree/promotion_spec.rb +0 -945
  520. data/spec/models/spree/refund_spec.rb +0 -200
  521. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  522. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  523. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  524. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  525. data/spec/models/spree/reimbursement_spec.rb +0 -278
  526. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  527. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  528. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  529. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  530. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  531. data/spec/models/spree/return_authorization_spec.rb +0 -226
  532. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  533. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  534. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  535. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  536. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  537. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  538. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  539. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  540. data/spec/models/spree/return_item_spec.rb +0 -785
  541. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  542. data/spec/models/spree/shipment_spec.rb +0 -914
  543. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  544. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  545. data/spec/models/spree/shipping_method_spec.rb +0 -292
  546. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  547. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  548. data/spec/models/spree/state_spec.rb +0 -43
  549. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  550. data/spec/models/spree/stock/availability_spec.rb +0 -143
  551. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  552. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  553. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  554. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  555. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  556. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  557. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  558. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  559. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  560. data/spec/models/spree/stock/package_spec.rb +0 -182
  561. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  562. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  563. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  564. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  565. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  566. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  567. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  568. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  569. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  570. data/spec/models/spree/stock_item_spec.rb +0 -348
  571. data/spec/models/spree/stock_location_spec.rb +0 -288
  572. data/spec/models/spree/stock_movement_spec.rb +0 -58
  573. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  574. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  575. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  576. data/spec/models/spree/store_credit_spec.rb +0 -900
  577. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  578. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  579. data/spec/models/spree/store_spec.rb +0 -156
  580. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  581. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  582. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  583. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  584. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  585. data/spec/models/spree/tax_category_spec.rb +0 -50
  586. data/spec/models/spree/tax_rate_spec.rb +0 -317
  587. data/spec/models/spree/taxon_spec.rb +0 -197
  588. data/spec/models/spree/taxonomy_spec.rb +0 -15
  589. data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
  590. data/spec/models/spree/unit_cancel_spec.rb +0 -126
  591. data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
  592. data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
  593. data/spec/models/spree/user_spec.rb +0 -247
  594. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  595. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  596. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  597. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  598. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  599. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  600. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  601. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  602. data/spec/models/spree/variant_spec.rb +0 -862
  603. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  604. data/spec/models/spree/wallet_spec.rb +0 -155
  605. data/spec/models/spree/zone_spec.rb +0 -248
  606. data/spec/rails_helper.rb +0 -46
  607. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  608. data/spec/spec_helper.rb +0 -36
  609. data/spec/support/big_decimal.rb +0 -7
  610. data/spec/support/concerns/default_price.rb +0 -44
  611. data/spec/support/concerns/payment_source.rb +0 -66
  612. data/spec/support/concerns/working_factories.rb +0 -15
  613. data/spec/support/dummy_ability.rb +0 -7
  614. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
  615. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
  616. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
  617. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
  618. /data/{app/models → lib}/spree/user_class_handle.rb +0 -0
@@ -1,71 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Promotion::Rules::FirstRepeatPurchaseSince do
6
- describe "#applicable?" do
7
- subject { described_class.new.applicable?(promotable) }
8
-
9
- context "when the promotable is an order" do
10
- let(:promotable) { Spree::Order.new }
11
-
12
- it { is_expected.to be true }
13
- end
14
-
15
- context "when the promotable is not a order" do
16
- let(:promotable) { Spree::LineItem.new }
17
-
18
- it { is_expected.to be false }
19
- end
20
- end
21
-
22
- describe "eligible?" do
23
- let(:instance) { described_class.new }
24
- subject { instance.eligible?(order) }
25
-
26
- before do
27
- instance.preferred_days_ago = 365
28
- end
29
-
30
- context "when the order does not have a user" do
31
- let(:order) { Spree::Order.new }
32
-
33
- it { is_expected.to be false }
34
- end
35
-
36
- context "when the order has a user" do
37
- let(:order) { create :order }
38
- let(:user) { order.user }
39
-
40
- context "when the user has completed orders" do
41
- let(:order_completion_date_1) { 1.day.ago }
42
- let(:order_completion_date_2) { 1.day.ago }
43
- before do
44
- old_order_1 = create :completed_order_with_totals, user: user
45
- old_order_1.update(completed_at: order_completion_date_1)
46
-
47
- old_order_2 = create :completed_order_with_totals, user: user
48
- old_order_2.update(completed_at: order_completion_date_2)
49
- end
50
-
51
- context "the last completed order was greater than the preferred days ago" do
52
- let(:order_completion_date_1) { 14.months.ago }
53
- let(:order_completion_date_2) { 13.months.ago }
54
-
55
- it { is_expected.to be true }
56
- end
57
-
58
- context "the last completed order was less than the preferred days ago" do
59
- let(:order_completion_date_1) { 14.months.ago }
60
- let(:order_completion_date_2) { 11.months.ago }
61
-
62
- it { is_expected.to be false }
63
- end
64
- end
65
-
66
- context "when the user has no completed orders " do
67
- it { is_expected.to be false }
68
- end
69
- end
70
- end
71
- end
@@ -1,128 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Promotion::Rules::ItemTotal, type: :model do
6
- let(:rule) do
7
- Spree::Promotion::Rules::ItemTotal.new(
8
- preferred_amount: preferred_amount,
9
- preferred_operator: preferred_operator
10
- )
11
- end
12
- let(:order) { double(:order, item_total: item_total, currency: order_currency) }
13
- let(:preferred_amount) { 50 }
14
- let(:order_currency) { 'USD' }
15
-
16
- context "preferred operator set to gt" do
17
- let(:preferred_operator) { 'gt' }
18
-
19
- context "item total is greater than preferred amount" do
20
- let(:item_total) { 51 }
21
-
22
- it "should be eligible when item total is greater than preferred amount" do
23
- expect(rule).to be_eligible(order)
24
- end
25
-
26
- context "when the order is a different currency" do
27
- let(:order_currency) { "CAD" }
28
-
29
- it "is not eligible" do
30
- expect(rule).not_to be_eligible(order)
31
- end
32
- end
33
- end
34
-
35
- context "when item total is equal to preferred amount" do
36
- let(:item_total) { 50 }
37
-
38
- it "is not eligible" do
39
- expect(rule).not_to be_eligible(order)
40
- end
41
-
42
- it "set an error message" do
43
- rule.eligible?(order)
44
- expect(rule.eligibility_errors.full_messages.first).
45
- to eq "This coupon code can't be applied to orders less than or equal to $50.00."
46
- end
47
- it "sets an error code" do
48
- rule.eligible?(order)
49
- expect(rule.eligibility_errors.details[:base].first[:error_code]).
50
- to eq :item_total_less_than_or_equal
51
- end
52
- end
53
-
54
- context "when item total is lower than preferred amount" do
55
- let(:item_total) { 49 }
56
-
57
- it "is not eligible" do
58
- expect(rule).not_to be_eligible(order)
59
- end
60
-
61
- it "set an error message" do
62
- rule.eligible?(order)
63
- expect(rule.eligibility_errors.full_messages.first).
64
- to eq "This coupon code can't be applied to orders less than or equal to $50.00."
65
- end
66
- it "sets an error code" do
67
- rule.eligible?(order)
68
- expect(rule.eligibility_errors.details[:base].first[:error_code]).
69
- to eq :item_total_less_than_or_equal
70
- end
71
- end
72
- end
73
-
74
- context "preferred operator set to gte" do
75
- let(:preferred_operator) { 'gte' }
76
-
77
- context "total is greater than preferred amount" do
78
- let(:item_total) { 51 }
79
-
80
- it "should be eligible when item total is greater than preferred amount" do
81
- expect(rule).to be_eligible(order)
82
- end
83
-
84
- context "when the order is a different currency" do
85
- let(:order_currency) { "CAD" }
86
-
87
- it "is not eligible" do
88
- expect(rule).not_to be_eligible(order)
89
- end
90
- end
91
- end
92
-
93
- context "item total is equal to preferred amount" do
94
- let(:item_total) { 50 }
95
-
96
- it "should be eligible" do
97
- expect(rule).to be_eligible(order)
98
- end
99
-
100
- context "when the order is a different currency" do
101
- let(:order_currency) { "CAD" }
102
-
103
- it "is not eligible" do
104
- expect(rule).not_to be_eligible(order)
105
- end
106
- end
107
- end
108
-
109
- context "when item total is lower than preferred amount" do
110
- let(:item_total) { 49 }
111
-
112
- it "is not eligible" do
113
- expect(rule).not_to be_eligible(order)
114
- end
115
-
116
- it "set an error message" do
117
- rule.eligible?(order)
118
- expect(rule.eligibility_errors.full_messages.first).
119
- to eq "This coupon code can't be applied to orders less than $50.00."
120
- end
121
- it "sets an error code" do
122
- rule.eligible?(order)
123
- expect(rule.eligibility_errors.details[:base].first[:error_code]).
124
- to eq :item_total_less_than
125
- end
126
- end
127
- end
128
- end
@@ -1,72 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Promotion::Rules::NthOrder do
6
- describe "#applicable?" do
7
- subject { described_class.new.applicable?(promotable) }
8
-
9
- context "when the promotable is an order" do
10
- let(:promotable) { Spree::Order.new }
11
-
12
- it { is_expected.to be true }
13
- end
14
-
15
- context "when the promotable is not a order" do
16
- let(:promotable) { "not an order" }
17
-
18
- it { is_expected.to be false }
19
- end
20
- end
21
-
22
- describe "eligible?" do
23
- let(:instance) { described_class.new }
24
- subject { instance.eligible?(order) }
25
-
26
- before do
27
- instance.preferred_nth_order = 2
28
- end
29
-
30
- context "when the order does not have a user" do
31
- let(:order) { Spree::Order.new }
32
-
33
- it { is_expected.to be false }
34
- end
35
-
36
- context "when the order has a user" do
37
- let(:order) { create :order }
38
- let(:user) { order.user }
39
-
40
- context "when the user has completed orders" do
41
- before do
42
- old_order = create :completed_order_with_totals, user: user
43
- old_order.update(completed_at: 1.day.ago)
44
- end
45
-
46
- context "when this order will be the 'nth' order" do
47
- it { is_expected.to be true }
48
- end
49
-
50
- context "when this order is completed and is still the 'nth' order" do
51
- before do
52
- order.update(completed_at: Time.current)
53
- end
54
-
55
- it { is_expected.to be true }
56
- end
57
-
58
- context "when this order will not be the 'nth' order" do
59
- before do
60
- instance.preferred_nth_order = 100
61
- end
62
-
63
- it { is_expected.to be false }
64
- end
65
- end
66
-
67
- context "when the user has no completed orders " do
68
- it { is_expected.to be false }
69
- end
70
- end
71
- end
72
- end
@@ -1,54 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Promotion::Rules::OneUsePerUser, type: :model do
6
- let(:rule) { described_class.new }
7
-
8
- describe '#eligible?(order)' do
9
- subject { rule.eligible?(order) }
10
- let(:order) { double Spree::Order, user: user }
11
- let(:user) { double Spree::LegacyUser }
12
- let(:promotion) { stub_model Spree::Promotion, used_by?: used_by }
13
- let(:used_by) { false }
14
-
15
- before { rule.promotion = promotion }
16
-
17
- context 'when the order is assigned to a user' do
18
- context 'when the user has used this promotion before' do
19
- let(:used_by) { true }
20
-
21
- it { is_expected.to be false }
22
- it "sets an error message" do
23
- subject
24
- expect(rule.eligibility_errors.full_messages.first).
25
- to eq "This coupon code can only be used once per user."
26
- end
27
- it "sets an error code" do
28
- rule.eligible?(order)
29
- expect(rule.eligibility_errors.details[:base].first[:error_code]).
30
- to eq :limit_once_per_user
31
- end
32
- end
33
-
34
- context 'when the user has not used this promotion before' do
35
- it { is_expected.to be true }
36
- end
37
- end
38
-
39
- context 'when the order is not assigned to a user' do
40
- let(:user) { nil }
41
- it { is_expected.to be false }
42
- it "sets an error message" do
43
- subject
44
- expect(rule.eligibility_errors.full_messages.first).
45
- to eq "You need to login before applying this coupon code."
46
- end
47
- it "sets an error code" do
48
- rule.eligible?(order)
49
- expect(rule.eligibility_errors.details[:base].first[:error_code]).
50
- to eq :no_user_specified
51
- end
52
- end
53
- end
54
- end
@@ -1,96 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Promotion::Rules::OptionValue do
6
- let(:rule) { Spree::Promotion::Rules::OptionValue.new }
7
-
8
- describe "#preferred_eligible_values" do
9
- subject { rule.preferred_eligible_values }
10
- it "assigns a nicely formatted hash" do
11
- rule.preferred_eligible_values = Hash["5" => "1,2", "6" => "1"]
12
- expect(subject).to eq Hash[5 => [1, 2], 6 => [1]]
13
- end
14
- end
15
-
16
- describe "#applicable?" do
17
- subject { rule.applicable?(promotable) }
18
- context "when promotable is an order" do
19
- let(:promotable) { Spree::Order.new }
20
- it { is_expected.to be true }
21
- end
22
- context "when promotable is not an order" do
23
- let(:promotable) { Spree::LineItem.new }
24
- it { is_expected.to be false }
25
- end
26
- end
27
-
28
- describe "#eligible?" do
29
- let(:variant) { create :variant }
30
- let(:line_item) { create :line_item, variant: variant }
31
- let(:promotable) { line_item.order }
32
- subject { rule.eligible?(promotable) }
33
- context "when there are any applicable line items" do
34
- before do
35
- rule.preferred_eligible_values = Hash[line_item.product.id => [
36
- line_item.variant.option_values.pluck(:id).first
37
- ]]
38
- end
39
- it { is_expected.to be true }
40
- end
41
- context "when there are no applicable line items" do
42
- before do
43
- rule.preferred_eligible_values = Hash[99 => [99]]
44
- end
45
- it { is_expected.to be false }
46
- end
47
- end
48
-
49
- describe "#actionable?" do
50
- let(:line_item) { create :line_item }
51
- let(:option_value_blue) do
52
- create(
53
- :option_value,
54
- name: 'Blue',
55
- presentation: 'Blue',
56
- option_type: create(
57
- :option_type,
58
- name: 'foo-colour',
59
- presentation: 'Colour'
60
- )
61
- )
62
- end
63
- let(:option_value_medium) do
64
- create(
65
- :option_value,
66
- name: 'Medium',
67
- presentation: 'M'
68
- )
69
- end
70
- before do
71
- line_item.variant.option_values << option_value_blue
72
- rule.preferred_eligible_values = Hash[product_id => option_value_ids]
73
- end
74
- subject { rule.actionable?(line_item) }
75
- context "when the line item has the correct product" do
76
- let(:product_id) { line_item.product.id }
77
- context "when all of the option values match" do
78
- let(:option_value_ids) { [option_value_blue.id] }
79
- it { is_expected.to be true }
80
- end
81
- context "when any of the option values match" do
82
- let(:option_value_ids) { [option_value_blue.id, option_value_medium.id] }
83
- it { is_expected.to be true }
84
- end
85
- context "when none of the option values match" do
86
- let(:option_value_ids) { [option_value_medium.id] }
87
- it { is_expected.to be false }
88
- end
89
- end
90
- context "when the line item's product doesn't match" do
91
- let(:product_id) { 99 }
92
- let(:option_value_ids) { [99] }
93
- it { is_expected.to be false }
94
- end
95
- end
96
- end
@@ -1,193 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Promotion::Rules::Product, type: :model do
6
- let(:rule) { Spree::Promotion::Rules::Product.new(rule_options) }
7
- let(:rule_options) { {} }
8
-
9
- context "#eligible?(order)" do
10
- let(:order) { Spree::Order.new }
11
-
12
- it "should be eligible if there are no products" do
13
- allow(rule).to receive_messages(eligible_products: [])
14
- expect(rule).to be_eligible(order)
15
- end
16
-
17
- before do
18
- 3.times { |i| instance_variable_set("@product#{i}", mock_model(Spree::Product)) }
19
- end
20
-
21
- context "with 'any' match policy" do
22
- let(:rule_options) { super().merge(preferred_match_policy: 'any') }
23
-
24
- it "should be eligible if any of the products is in eligible products" do
25
- allow(order).to receive_messages(products: [@product1, @product2])
26
- allow(rule).to receive_messages(eligible_products: [@product2, @product3])
27
- expect(rule).to be_eligible(order)
28
- end
29
-
30
- context "when none of the products are eligible products" do
31
- before do
32
- allow(order).to receive_messages(products: [@product1])
33
- allow(rule).to receive_messages(eligible_products: [@product2, @product3])
34
- end
35
- it { expect(rule).not_to be_eligible(order) }
36
- it "sets an error message" do
37
- rule.eligible?(order)
38
- expect(rule.eligibility_errors.full_messages.first).
39
- to eq "You need to add an applicable product before applying this coupon code."
40
- end
41
- it "sets an error code" do
42
- rule.eligible?(order)
43
- expect(rule.eligibility_errors.details[:base].first[:error_code]).
44
- to eq :no_applicable_products
45
- end
46
- end
47
- end
48
-
49
- context "with 'all' match policy" do
50
- let(:rule_options) { super().merge(preferred_match_policy: 'all') }
51
-
52
- it "should be eligible if all of the eligible products are ordered" do
53
- allow(order).to receive_messages(products: [@product3, @product2, @product1])
54
- allow(rule).to receive_messages(eligible_products: [@product2, @product3])
55
- expect(rule).to be_eligible(order)
56
- end
57
-
58
- context "when any of the eligible products is not ordered" do
59
- before do
60
- allow(order).to receive_messages(products: [@product1, @product2])
61
- allow(rule).to receive_messages(eligible_products: [@product1, @product2, @product3])
62
- end
63
- it { expect(rule).not_to be_eligible(order) }
64
- it "sets an error message" do
65
- rule.eligible?(order)
66
- expect(rule.eligibility_errors.full_messages.first).
67
- to eq "This coupon code can't be applied because you don't have all of the necessary products in your cart."
68
- end
69
- it "sets an error code" do
70
- rule.eligible?(order)
71
- expect(rule.eligibility_errors.details[:base].first[:error_code]).
72
- to eq :missing_product
73
- end
74
- end
75
- end
76
-
77
- context "with 'none' match policy" do
78
- let(:rule_options) { super().merge(preferred_match_policy: 'none') }
79
-
80
- it "should be eligible if none of the order's products are in eligible products" do
81
- allow(order).to receive_messages(products: [@product1])
82
- allow(rule).to receive_messages(eligible_products: [@product2, @product3])
83
- expect(rule).to be_eligible(order)
84
- end
85
-
86
- context "when any of the order's products are in eligible products" do
87
- before do
88
- allow(order).to receive_messages(products: [@product1, @product2])
89
- allow(rule).to receive_messages(eligible_products: [@product2, @product3])
90
- end
91
- it { expect(rule).not_to be_eligible(order) }
92
- it "sets an error message" do
93
- rule.eligible?(order)
94
- expect(rule.eligibility_errors.full_messages.first).
95
- to eq "Your cart contains a product that prevents this coupon code from being applied."
96
- end
97
- it "sets an error code" do
98
- rule.eligible?(order)
99
- expect(rule.eligibility_errors.details[:base].first[:error_code]).
100
- to eq :has_excluded_product
101
- end
102
- end
103
- end
104
-
105
- context "with an invalid match policy" do
106
- let(:rule) do
107
- Spree::Promotion::Rules::Product.create!(
108
- promotion: create(:promotion),
109
- product_promotion_rules: [
110
- Spree::ProductPromotionRule.new(product: product),
111
- ],
112
- ).tap do |rule|
113
- rule.preferred_match_policy = 'invalid'
114
- rule.save!(validate: false)
115
- end
116
- end
117
- let(:product) { order.line_items.first!.product }
118
- let(:order) { create(:order_with_line_items, line_items_count: 1) }
119
-
120
- it 'raises' do
121
- expect {
122
- rule.eligible?(order)
123
- }.to raise_error('unexpected match policy: "invalid"')
124
- end
125
- end
126
- end
127
-
128
- describe '#actionable?' do
129
- subject do
130
- rule.actionable?(line_item)
131
- end
132
-
133
- let(:rule_line_item) { Spree::LineItem.new(product: rule_product) }
134
- let(:other_line_item) { Spree::LineItem.new(product: other_product) }
135
-
136
- let(:rule_options) { super().merge(products: [rule_product]) }
137
- let(:rule_product) { mock_model(Spree::Product) }
138
- let(:other_product) { mock_model(Spree::Product) }
139
-
140
- context "with 'any' match policy" do
141
- let(:rule_options) { super().merge(preferred_match_policy: 'any') }
142
-
143
- context 'for product in rule' do
144
- let(:line_item) { rule_line_item }
145
- it { is_expected.to be_truthy }
146
- end
147
-
148
- context 'for product not in rule' do
149
- let(:line_item) { other_line_item }
150
- it { is_expected.to be_falsey }
151
- end
152
- end
153
-
154
- context "with 'all' match policy" do
155
- let(:rule_options) { super().merge(preferred_match_policy: 'all') }
156
-
157
- context 'for product in rule' do
158
- let(:line_item) { rule_line_item }
159
- it { is_expected.to be_truthy }
160
- end
161
-
162
- context 'for product not in rule' do
163
- let(:line_item) { other_line_item }
164
- it { is_expected.to be_falsey }
165
- end
166
- end
167
-
168
- context "with 'none' match policy" do
169
- let(:rule_options) { super().merge(preferred_match_policy: 'none') }
170
-
171
- context 'for product in rule' do
172
- let(:line_item) { rule_line_item }
173
- it { is_expected.to be_falsey }
174
- end
175
-
176
- context 'for product not in rule' do
177
- let(:line_item) { other_line_item }
178
- it { is_expected.to be_truthy }
179
- end
180
- end
181
-
182
- context 'with an invalid match policy' do
183
- let(:rule_options) { super().merge(preferred_match_policy: 'invalid') }
184
- let(:line_item) { rule_line_item }
185
-
186
- it 'raises' do
187
- expect {
188
- rule.actionable?(line_item)
189
- }.to raise_error('unexpected match policy: "invalid"')
190
- end
191
- end
192
- end
193
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rails_helper"
4
-
5
- RSpec.describe Spree::Promotion::Rules::Store, type: :model do
6
- let(:rule) { described_class.new }
7
-
8
- context "#eligible?(order)" do
9
- let(:order) { Spree::Order.new }
10
-
11
- it "is eligible if no stores are provided" do
12
- expect(rule).to be_eligible(order)
13
- end
14
-
15
- it "is eligible if stores include the order's store" do
16
- default_store = Spree::Store.new(name: "Default")
17
- other_store = Spree::Store.new(name: "Other")
18
-
19
- rule.stores = [default_store, other_store]
20
- order.store = default_store
21
-
22
- expect(rule).to be_eligible(order)
23
- end
24
-
25
- it "is not eligible if order is placed in a different store" do
26
- default_store = Spree::Store.new(name: "Default")
27
- other_store = Spree::Store.new(name: "Other")
28
-
29
- rule.stores = [other_store]
30
- order.store = default_store
31
-
32
- expect(rule).not_to be_eligible(order)
33
- end
34
- end
35
- end