solidus_core 2.10.2 → 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 (494) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js.erb +31 -2
  3. data/app/controllers/spree/base_controller.rb +1 -0
  4. data/app/mailers/spree/base_mailer.rb +4 -0
  5. data/app/mailers/spree/order_mailer.rb +1 -1
  6. data/app/models/concerns/spree/active_storage_adapter.rb +116 -0
  7. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +69 -0
  8. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
  9. data/app/models/concerns/spree/default_price.rb +1 -1
  10. data/app/models/concerns/spree/soft_deletable.rb +18 -0
  11. data/app/models/concerns/spree/user_address_book.rb +86 -32
  12. data/app/models/concerns/spree/user_methods.rb +3 -2
  13. data/app/models/spree/ability.rb +34 -10
  14. data/app/models/spree/address.rb +94 -17
  15. data/app/models/spree/address/name.rb +49 -0
  16. data/app/models/spree/address/state_validator.rb +71 -0
  17. data/app/models/spree/adjustment.rb +1 -1
  18. data/app/models/spree/base.rb +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.rb +91 -20
  31. data/app/models/spree/order/checkout.rb +1 -0
  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.rb +3 -3
  37. data/app/models/spree/payment/cancellation.rb +3 -3
  38. data/app/models/spree/payment/processing.rb +54 -30
  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.rb +19 -14
  43. data/app/models/spree/product/scopes.rb +9 -4
  44. data/app/models/spree/promotion.rb +18 -7
  45. data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
  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.rb +21 -10
  57. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
  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.rb +1 -1
  80. data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
  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 → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
  97. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
  98. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
  99. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
  100. data/lib/generators/spree/install/install_generator.rb +7 -189
  101. data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
  102. data/lib/spree/app_configuration.rb +117 -51
  103. data/lib/spree/awesome_nested_set_override.rb +44 -0
  104. data/lib/spree/core.rb +5 -11
  105. data/lib/spree/core/controller_helpers/auth.rb +17 -4
  106. data/lib/spree/core/controller_helpers/current_host.rb +17 -0
  107. data/lib/spree/core/controller_helpers/order.rb +8 -7
  108. data/lib/spree/core/engine.rb +39 -2
  109. data/lib/spree/core/importer/order.rb +24 -10
  110. data/lib/spree/core/permalinks.rb +1 -3
  111. data/lib/spree/core/product_filters.rb +6 -5
  112. data/lib/spree/core/state_machines.rb +20 -1
  113. data/lib/spree/core/state_machines/order.rb +249 -0
  114. data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
  115. data/lib/spree/core/version.rb +1 -1
  116. data/lib/spree/encryptor.rb +25 -0
  117. data/lib/spree/event.rb +40 -7
  118. data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
  119. data/lib/spree/event/configuration.rb +11 -6
  120. data/lib/spree/event/subscriber.rb +38 -18
  121. data/lib/spree/event/subscriber_registry.rb +92 -0
  122. data/lib/spree/i18n.rb +1 -1
  123. data/lib/spree/mailer_previews/carton_preview.rb +2 -1
  124. data/lib/spree/paranoia_deprecations.rb +32 -12
  125. data/lib/spree/permission_sets/configuration_display.rb +14 -14
  126. data/lib/spree/permission_sets/default_customer.rb +16 -16
  127. data/lib/spree/permission_sets/order_display.rb +11 -11
  128. data/lib/spree/permission_sets/order_management.rb +1 -1
  129. data/lib/spree/permission_sets/product_display.rb +9 -9
  130. data/lib/spree/permission_sets/promotion_display.rb +5 -5
  131. data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
  132. data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
  133. data/lib/spree/permission_sets/stock_display.rb +2 -2
  134. data/lib/spree/permission_sets/stock_management.rb +1 -1
  135. data/lib/spree/permission_sets/user_display.rb +3 -3
  136. data/lib/spree/permission_sets/user_management.rb +4 -3
  137. data/lib/spree/permitted_attributes.rb +4 -3
  138. data/lib/spree/preferences/preferable.rb +4 -3
  139. data/lib/spree/preferences/preferable_class_methods.rb +22 -3
  140. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  141. data/lib/spree/testing_support/authorization_helpers.rb +1 -0
  142. data/lib/spree/testing_support/blacklist_urls.rb +23 -0
  143. data/lib/spree/testing_support/capybara_ext.rb +3 -0
  144. data/lib/spree/testing_support/common_rake.rb +3 -3
  145. data/lib/spree/testing_support/dummy_app.rb +44 -23
  146. data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
  147. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
  148. data/lib/spree/testing_support/factories/address_factory.rb +1 -2
  149. data/lib/spree/testing_support/factories/image_factory.rb +1 -1
  150. data/lib/spree/testing_support/factories/promotion_factory.rb +6 -0
  151. data/lib/spree/testing_support/factories/refund_factory.rb +1 -0
  152. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  153. data/lib/spree/testing_support/factories/return_item_factory.rb +0 -1
  154. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +8 -0
  155. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +1 -0
  156. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +3 -1
  157. data/lib/spree/testing_support/factories/taxon_factory.rb +4 -0
  158. data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
  159. data/lib/spree/testing_support/job_helpers.rb +24 -0
  160. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  161. data/lib/spree/testing_support/preferences.rb +3 -1
  162. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  163. data/lib/spree/testing_support/translations.rb +25 -0
  164. data/solidus_core.gemspec +8 -5
  165. metadata +81 -360
  166. data/script/rails +0 -10
  167. data/spec/fixtures/thinking-cat.jpg +0 -0
  168. data/spec/helpers/base_helper_spec.rb +0 -168
  169. data/spec/helpers/products_helper_spec.rb +0 -202
  170. data/spec/helpers/taxons_helper_spec.rb +0 -43
  171. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  172. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  173. data/spec/lib/i18n_spec.rb +0 -97
  174. data/spec/lib/search/base_spec.rb +0 -91
  175. data/spec/lib/search/variant_spec.rb +0 -115
  176. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  177. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  178. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  179. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  180. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  181. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  182. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  183. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  184. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -48
  185. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  186. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  187. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  188. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  189. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
  190. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  191. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  192. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  193. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  194. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  195. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  196. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  197. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  198. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  199. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  200. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  201. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  202. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  203. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  204. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  205. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  206. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  207. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  208. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  209. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  210. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  211. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  212. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  213. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  214. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  215. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  216. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  217. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  218. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  219. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  220. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  221. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  222. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  223. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  224. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  225. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  226. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  227. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  228. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  229. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  230. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  231. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  232. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  233. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  234. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  235. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  236. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  237. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  238. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  239. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  240. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  241. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  242. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  243. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  244. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  245. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  246. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  247. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  248. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  249. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  250. data/spec/lib/spree/core/version_spec.rb +0 -19
  251. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  252. data/spec/lib/spree/event_spec.rb +0 -130
  253. data/spec/lib/spree/localized_number_spec.rb +0 -45
  254. data/spec/lib/spree/migrations_spec.rb +0 -32
  255. data/spec/lib/spree/money_spec.rb +0 -298
  256. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  257. data/spec/lib/spree/permitted_attributes_spec.rb +0 -41
  258. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  259. data/spec/lib/tasks/dummy_task.rake +0 -12
  260. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  261. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  262. data/spec/mailers/carton_mailer_spec.rb +0 -44
  263. data/spec/mailers/order_mailer_spec.rb +0 -117
  264. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  265. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  266. data/spec/mailers/test_mailer_spec.rb +0 -13
  267. data/spec/models/spree/ability_spec.rb +0 -279
  268. data/spec/models/spree/address_spec.rb +0 -399
  269. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  270. data/spec/models/spree/adjustment_spec.rb +0 -339
  271. data/spec/models/spree/asset_spec.rb +0 -25
  272. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  273. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  274. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  275. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  276. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  277. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  278. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  279. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  280. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  281. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  282. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  283. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  284. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  285. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  286. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
  287. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  288. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  289. data/spec/models/spree/calculator_spec.rb +0 -43
  290. data/spec/models/spree/carton_spec.rb +0 -145
  291. data/spec/models/spree/classification_spec.rb +0 -126
  292. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  293. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  294. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  295. data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
  296. data/spec/models/spree/country_spec.rb +0 -154
  297. data/spec/models/spree/credit_card_spec.rb +0 -373
  298. data/spec/models/spree/customer_return_spec.rb +0 -294
  299. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  300. data/spec/models/spree/exchange_spec.rb +0 -76
  301. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  302. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  303. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  304. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  305. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  306. data/spec/models/spree/gateway_spec.rb +0 -14
  307. data/spec/models/spree/image_spec.rb +0 -25
  308. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  309. data/spec/models/spree/line_item_spec.rb +0 -240
  310. data/spec/models/spree/option_type_spec.rb +0 -16
  311. data/spec/models/spree/option_value_spec.rb +0 -52
  312. data/spec/models/spree/order/address_spec.rb +0 -52
  313. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  314. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  315. data/spec/models/spree/order/checkout_spec.rb +0 -740
  316. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  317. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  318. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  319. data/spec/models/spree/order/payment_spec.rb +0 -280
  320. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  321. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  322. data/spec/models/spree/order/totals_spec.rb +0 -26
  323. data/spec/models/spree/order/validations_spec.rb +0 -17
  324. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  325. data/spec/models/spree/order_capturing_spec.rb +0 -16
  326. data/spec/models/spree/order_contents_spec.rb +0 -362
  327. data/spec/models/spree/order_inventory_spec.rb +0 -285
  328. data/spec/models/spree/order_merger_spec.rb +0 -162
  329. data/spec/models/spree/order_mutex_spec.rb +0 -89
  330. data/spec/models/spree/order_promotion_spec.rb +0 -33
  331. data/spec/models/spree/order_shipping_spec.rb +0 -247
  332. data/spec/models/spree/order_spec.rb +0 -1687
  333. data/spec/models/spree/order_taxation_spec.rb +0 -128
  334. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  335. data/spec/models/spree/order_updater_spec.rb +0 -556
  336. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  337. data/spec/models/spree/payment_create_spec.rb +0 -195
  338. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  339. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  340. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  341. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  342. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  343. data/spec/models/spree/payment_method_spec.rb +0 -408
  344. data/spec/models/spree/payment_spec.rb +0 -1270
  345. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  346. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  347. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  348. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  349. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  350. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  351. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  352. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  353. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  354. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  355. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  356. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  357. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  358. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  359. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  360. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
  361. data/spec/models/spree/preference_spec.rb +0 -79
  362. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  363. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  364. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  365. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  366. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  367. data/spec/models/spree/preferences/store_spec.rb +0 -40
  368. data/spec/models/spree/price_spec.rb +0 -150
  369. data/spec/models/spree/product/scopes_spec.rb +0 -164
  370. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  371. data/spec/models/spree/product_filter_spec.rb +0 -28
  372. data/spec/models/spree/product_property_spec.rb +0 -20
  373. data/spec/models/spree/product_spec.rb +0 -584
  374. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  375. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  376. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  377. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  378. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  379. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  380. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  381. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  382. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  383. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  384. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  385. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  386. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -227
  387. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  388. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  389. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  390. data/spec/models/spree/promotion_action_spec.rb +0 -44
  391. data/spec/models/spree/promotion_category_spec.rb +0 -19
  392. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  393. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  394. data/spec/models/spree/promotion_code_spec.rb +0 -206
  395. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  396. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  397. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  398. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  399. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  400. data/spec/models/spree/promotion_spec.rb +0 -945
  401. data/spec/models/spree/refund_spec.rb +0 -200
  402. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  403. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  404. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  405. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  406. data/spec/models/spree/reimbursement_spec.rb +0 -278
  407. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  408. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  409. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  410. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  411. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  412. data/spec/models/spree/return_authorization_spec.rb +0 -226
  413. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  414. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  415. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  416. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  417. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  418. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  419. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  420. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  421. data/spec/models/spree/return_item_spec.rb +0 -785
  422. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  423. data/spec/models/spree/shipment_spec.rb +0 -914
  424. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  425. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  426. data/spec/models/spree/shipping_method_spec.rb +0 -292
  427. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  428. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  429. data/spec/models/spree/state_spec.rb +0 -43
  430. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  431. data/spec/models/spree/stock/availability_spec.rb +0 -143
  432. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  433. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  434. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  435. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  436. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  437. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  438. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  439. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  440. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  441. data/spec/models/spree/stock/package_spec.rb +0 -182
  442. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  443. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  444. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  445. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  446. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  447. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  448. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  449. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  450. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  451. data/spec/models/spree/stock_item_spec.rb +0 -348
  452. data/spec/models/spree/stock_location_spec.rb +0 -288
  453. data/spec/models/spree/stock_movement_spec.rb +0 -58
  454. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  455. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  456. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  457. data/spec/models/spree/store_credit_spec.rb +0 -900
  458. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  459. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  460. data/spec/models/spree/store_spec.rb +0 -156
  461. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  462. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  463. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  464. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  465. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  466. data/spec/models/spree/tax_category_spec.rb +0 -50
  467. data/spec/models/spree/tax_rate_spec.rb +0 -317
  468. data/spec/models/spree/taxon_spec.rb +0 -197
  469. data/spec/models/spree/taxonomy_spec.rb +0 -15
  470. data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
  471. data/spec/models/spree/unit_cancel_spec.rb +0 -126
  472. data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
  473. data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
  474. data/spec/models/spree/user_spec.rb +0 -247
  475. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  476. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  477. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  478. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  479. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  480. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  481. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  482. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  483. data/spec/models/spree/variant_spec.rb +0 -862
  484. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  485. data/spec/models/spree/wallet_spec.rb +0 -155
  486. data/spec/models/spree/zone_spec.rb +0 -248
  487. data/spec/rails_helper.rb +0 -46
  488. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  489. data/spec/spec_helper.rb +0 -36
  490. data/spec/support/big_decimal.rb +0 -7
  491. data/spec/support/concerns/default_price.rb +0 -44
  492. data/spec/support/concerns/payment_source.rb +0 -66
  493. data/spec/support/concerns/working_factories.rb +0 -15
  494. data/spec/support/dummy_ability.rb +0 -7
@@ -1,133 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::CalculatedAdjustments do
6
- let(:calculator_class) { Spree::Calculator::FlatRate }
7
-
8
- with_model :Calculable, scope: :all do
9
- model do
10
- include Spree::CalculatedAdjustments
11
- end
12
- end
13
-
14
- it "should add has_one :calculator relationship" do
15
- expect(Calculable.reflect_on_all_associations(:has_one).map(&:name)).to include(:calculator)
16
- end
17
-
18
- describe 'initialization' do
19
- context 'with no calculator' do
20
- subject { Calculable.new }
21
-
22
- it 'can be initialized' do
23
- expect(subject.calculator).to be nil
24
- end
25
-
26
- it 'is not valid' do
27
- expect(subject).not_to be_valid
28
- expect(subject.errors[:calculator]).to eq ["can't be blank"]
29
- end
30
- end
31
-
32
- context 'with calculator object' do
33
- subject { Calculable.new(calculator: calculator_class.new) }
34
-
35
- it 'can be initialized' do
36
- expect(subject.calculator).to be_a(calculator_class)
37
- expect(calculator_class.count).to eq 0 # not yet saved
38
- end
39
-
40
- it 'can be created' do
41
- subject.save!
42
- expect(subject.calculator).to be_a(calculator_class)
43
- expect(calculator_class.count).to eq 1 # saved in database
44
- end
45
- end
46
-
47
- context 'with calculator_type' do
48
- subject { Calculable.new(calculator_type: calculator_class.to_s) }
49
-
50
- it 'can be initialized' do
51
- expect(subject.calculator).to be_a(calculator_class)
52
- expect(calculator_class.count).to eq 0 # not yet saved
53
- end
54
-
55
- it 'can be created' do
56
- subject.save!
57
- expect(subject.calculator).to be_a(calculator_class)
58
- expect(calculator_class.count).to eq 1 # saved in database
59
- end
60
- end
61
-
62
- context 'with calculator_type and calculator_attributes' do
63
- subject { Calculable.new(calculator_type: calculator_class.to_s, calculator_attributes: { preferred_amount: 123 }) }
64
-
65
- it 'can be initialized' do
66
- expect(subject.calculator).to be_a(calculator_class)
67
- expect(subject.calculator.preferred_amount).to eq 123
68
- expect(calculator_class.count).to eq 0 # not yet saved
69
- end
70
-
71
- it 'can be created' do
72
- subject.save!
73
- expect(subject.calculator).to be_a(calculator_class)
74
- expect(subject.calculator.preferred_amount).to eq 123
75
- expect(calculator_class.count).to eq 1 # saved in database
76
- end
77
- end
78
- end
79
-
80
- describe 'update' do
81
- subject { Calculable.create!(calculator_type: calculator_class.to_s) }
82
-
83
- it "can update calculator attributes with id" do
84
- subject.update!(calculator_attributes: {
85
- id: subject.calculator.id,
86
- preferred_amount: 123
87
- })
88
- expect(subject.calculator.preferred_amount).to eq(123)
89
- subject.reload
90
- expect(subject.calculator.preferred_amount).to eq(123)
91
- end
92
-
93
- it "can update calculator attributes without id" do
94
- subject.update!(calculator_attributes: {
95
- preferred_amount: 123
96
- })
97
- expect(subject.calculator.preferred_amount).to eq(123)
98
- subject.reload
99
- expect(subject.calculator.preferred_amount).to eq(123)
100
- end
101
-
102
- it "can update both calculator type and attributes" do
103
- subject.update!(calculator_type: 'Spree::Calculator::FlexiRate', calculator_attributes: {
104
- preferred_first_item: 123
105
- })
106
- expect(subject.calculator.class).to eq(Spree::Calculator::FlexiRate)
107
- expect(subject.calculator.preferred_first_item).to eq(123)
108
- subject.reload
109
- expect(subject.calculator.class).to eq(Spree::Calculator::FlexiRate)
110
- expect(subject.calculator.preferred_first_item).to eq(123)
111
- end
112
- end
113
-
114
- describe '#calculator_type=' do
115
- subject { Calculable.new }
116
-
117
- let(:calculator_subclass) { Spree::Calculator::Shipping::FlatRate }
118
- let(:calculator_superclass) { Spree::ShippingCalculator }
119
-
120
- before(:each) do
121
- subject.calculator_type = calculator_subclass.to_s
122
- end
123
-
124
- it 'sets calculator type' do
125
- expect(subject.calculator_type).to eq(calculator_subclass.to_s)
126
- end
127
-
128
- it 'switches from calculator subclass to calculator superclass' do
129
- subject.calculator_type = calculator_superclass.to_s
130
- expect(subject.calculator_type).to eq(calculator_superclass.to_s)
131
- end
132
- end
133
- end
@@ -1,97 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require 'spree/i18n'
5
-
6
- RSpec.describe "i18n" do
7
- before do
8
- # This reload avoids an issue with I18n.available_locales being cached
9
- I18n.reload!
10
-
11
- I18n.backend.store_translations(:en,
12
- {
13
- spree: {
14
- i18n: {
15
- this_file_language: "English"
16
- },
17
- foo: "bar",
18
- bar: {
19
- foo: "bar within bar scope",
20
- invalid: nil,
21
- legacy_translation: "back in the day..."
22
- },
23
- invalid: nil,
24
- legacy_translation: "back in the day..."
25
- }
26
- })
27
- end
28
- after do
29
- I18n.reload!
30
- end
31
-
32
- it "translates within the spree scope" do
33
- expect(Spree::Deprecation).to receive(:warn).twice
34
- expect(Spree.t(:foo)).to eql("bar")
35
- expect(Spree.translate(:foo)).to eql("bar")
36
- end
37
-
38
- it "prepends a string scope" do
39
- expect(Spree::Deprecation).to receive(:warn)
40
- expect(Spree.t(:foo, scope: "bar")).to eql("bar within bar scope")
41
- end
42
-
43
- it "prepends to an array scope" do
44
- expect(Spree::Deprecation).to receive(:warn)
45
- expect(Spree.t(:foo, scope: ["bar"])).to eql("bar within bar scope")
46
- end
47
-
48
- it "returns two translations" do
49
- expect(Spree::Deprecation).to receive(:warn)
50
- expect(Spree.t([:foo, 'bar.foo'])).to eql(["bar", "bar within bar scope"])
51
- end
52
-
53
- it "returns reasonable string for missing translations" do
54
- expect(Spree::Deprecation).to receive(:warn)
55
- expect(Spree.t(:missing_entry)).to include("<span")
56
- end
57
-
58
- it "should have a Spree::I18N_GENERIC_PLURAL constant" do
59
- expect(Spree::I18N_GENERIC_PLURAL).to eq 2.1
60
- end
61
-
62
- describe "i18n_available_locales" do
63
- it "should only return :en" do
64
- expect(Spree.i18n_available_locales).to eq([:en])
65
- end
66
-
67
- context 'with unprefixed translations in another locale' do
68
- before do
69
- I18n.backend.store_translations(:fr, { cheese: "fromage" })
70
- end
71
-
72
- it "should only return :en" do
73
- expect(Spree.i18n_available_locales).to eq([:en])
74
- end
75
- end
76
-
77
- context 'with spree-prefixed translations in another locale' do
78
- before do
79
- I18n.backend.store_translations(:fr, spree: { cheese: "fromage" })
80
- end
81
-
82
- it "should return :en and :fr" do
83
- expect(Spree.i18n_available_locales).to eq([:en])
84
- end
85
- end
86
-
87
- context 'with specific desired key' do
88
- before do
89
- I18n.backend.store_translations(:fr, spree: { i18n: { this_file_language: "Français" } })
90
- end
91
-
92
- it "should return :en and :fr" do
93
- expect(Spree.i18n_available_locales).to eq([:en, :fr])
94
- end
95
- end
96
- end
97
- end
@@ -1,91 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
- require 'spree/core/product_filters'
5
-
6
- RSpec.describe Spree::Core::Search::Base do
7
- before do
8
- include Spree::Core::ProductFilters
9
- @taxon = create(:taxon, name: "Ruby on Rails")
10
-
11
- @product1 = create(:product, name: "RoR Mug", price: 9.00)
12
- @product1.taxons << @taxon
13
- @product2 = create(:product, name: "RoR Shirt", price: 11.00)
14
- end
15
-
16
- it "returns all products by default" do
17
- params = { per_page: "" }
18
- searcher = Spree::Core::Search::Base.new(params)
19
- expect(searcher.retrieve_products.count).to eq(2)
20
- end
21
-
22
- context "when include_images is included in the initalization params" do
23
- let(:params) { { include_images: true, keyword: @product1.name, taxon: @taxon.id } }
24
- subject { described_class.new(params).retrieve_products }
25
-
26
- before do
27
- @product1.master.images.create(attachment_file_name: "Test", position: 2)
28
- @product1.master.images.create(attachment_file_name: "Test1", position: 1)
29
- @product1.reload
30
- end
31
-
32
- it "returns images in correct order" do
33
- expect(subject.first).to eq @product1
34
- expect(subject.first.images).to eq @product1.master.images
35
- end
36
- end
37
-
38
- it "switches to next page according to the page parameter" do
39
- @product3 = create(:product, name: "RoR Pants", price: 14.00)
40
-
41
- params = { per_page: "2" }
42
- searcher = Spree::Core::Search::Base.new(params)
43
- expect(searcher.retrieve_products.count).to eq(2)
44
-
45
- params[:page] = "2"
46
- searcher = Spree::Core::Search::Base.new(params)
47
- expect(searcher.retrieve_products.count).to eq(1)
48
- end
49
-
50
- it "maps search params to named scopes" do
51
- params = { per_page: "",
52
- search: { "price_range_any" => ["Under $10.00"] } }
53
- searcher = Spree::Core::Search::Base.new(params)
54
- expect(searcher.send(:get_base_scope).to_sql).to match /<= 10/
55
- expect(searcher.retrieve_products.count).to eq(1)
56
- end
57
-
58
- it "maps multiple price_range_any filters" do
59
- params = { per_page: "",
60
- search: { "price_range_any" => ["Under $10.00", "$10.00 - $15.00"] } }
61
- searcher = Spree::Core::Search::Base.new(params)
62
- expect(searcher.send(:get_base_scope).to_sql).to match /<= 10/
63
- if Rails.gem_version >= Gem::Version.new('6.0.0')
64
- expect(searcher.send(:get_base_scope).to_sql).to match /between 10\.0 and 15\.0/i
65
- else
66
- expect(searcher.send(:get_base_scope).to_sql).to match /between 10 and 15/i
67
- end
68
- expect(searcher.retrieve_products.count).to eq(2)
69
- end
70
-
71
- it "uses ransack if scope not found" do
72
- params = { per_page: "",
73
- search: { "name_not_cont" => "Shirt" } }
74
- searcher = Spree::Core::Search::Base.new(params)
75
- expect(searcher.retrieve_products.count).to eq(1)
76
- end
77
-
78
- it "accepts a current user" do
79
- user = double
80
- searcher = Spree::Core::Search::Base.new({})
81
- searcher.current_user = user
82
- expect(searcher.current_user).to eql(user)
83
- end
84
-
85
- it "finds products in alternate currencies" do
86
- create(:price, currency: 'EUR', variant: @product1.master)
87
- searcher = Spree::Core::Search::Base.new({})
88
- searcher.pricing_options = Spree::Config.pricing_options_class.new(currency: 'EUR')
89
- expect(searcher.retrieve_products).to eq([@product1])
90
- end
91
- end
@@ -1,115 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- RSpec.describe Core::Search::Variant do
7
- def assert_found(query_string, variant)
8
- expect(described_class.new(query_string).results).to include variant
9
- end
10
-
11
- def refute_found(query_string, variant)
12
- expect(described_class.new(query_string).results).not_to include variant
13
- end
14
-
15
- let(:product) { FactoryBot.create(:product, name: "My Special Product", slug: "my-special-product") }
16
- let!(:variant) { FactoryBot.create(:variant, product: product, sku: "abc-123") }
17
-
18
- context "blank string" do
19
- it { assert_found(nil, variant) }
20
- it { assert_found("", variant) }
21
- end
22
-
23
- context "by sku" do
24
- it { assert_found("abc-123", variant) }
25
- it { assert_found("abc-1", variant) }
26
- it { assert_found("aBc-12", variant) }
27
- it { refute_found("bca", variant) }
28
- end
29
-
30
- context "by product" do
31
- it { assert_found("My Special Product", variant) }
32
- it { assert_found("My Spec", variant) }
33
- it { assert_found("my spec", variant) }
34
- it { assert_found("my-special-product", variant) }
35
- it { assert_found("my-spec", variant) }
36
- it { assert_found("mY-sPec", variant) }
37
- it { assert_found("My Product", variant) }
38
- it { refute_found("My House", variant) }
39
- it { refute_found("my-product", variant) }
40
- end
41
-
42
- context "by product + options" do
43
- before do
44
- variant.option_values << create(:option_value, presentation: "Robin's egg", name: "blue")
45
- variant.option_values << create(:option_value, presentation: 'Slim')
46
- variant.option_values << create(:option_value, presentation: '30')
47
- end
48
- it { assert_found("My Spec blue", variant) }
49
- it { assert_found("My Spec robin egg Slim", variant) }
50
- it { assert_found("My Spec 30 slim", variant) }
51
- it { refute_found("My Spec red slim", variant) }
52
- it { refute_found("foo product blue slim", variant) }
53
- end
54
-
55
- context "custom scope" do
56
- it "takes into account a passed in scope" do
57
- variant.stock_items.first.set_count_on_hand(10)
58
- expect(
59
- described_class.new(variant.sku, scope: Spree::Variant.in_stock).results
60
- ).to include variant
61
-
62
- variant.stock_items.each { |si| si.set_count_on_hand(0) }
63
- expect(
64
- described_class.new(variant.sku, scope: Spree::Variant.in_stock).results
65
- ).not_to include variant
66
- end
67
- end
68
-
69
- context "custom search configuration" do
70
- context "removing a search query" do
71
- around do |example|
72
- search_terms = described_class.search_terms
73
- described_class.search_terms -= [:sku_cont]
74
- example.run
75
- described_class.search_terms = search_terms
76
- end
77
-
78
- it { refute_found("abc-123", variant) }
79
- end
80
-
81
- context "adding a search query" do
82
- around do |example|
83
- search_terms = described_class.search_terms
84
- described_class.search_terms += [:weight_eq]
85
- example.run
86
- described_class.search_terms = search_terms
87
- end
88
- before { variant.update!(weight: 5000) }
89
-
90
- it { assert_found("5000", variant) }
91
- end
92
- end
93
-
94
- describe '#search_terms' do
95
- # Only search by SKU if the search word is a number
96
- class NumericSkuSearcher < Core::Search::Variant
97
- protected
98
-
99
- def search_terms(word)
100
- if word =~ /\A\d+\z/
101
- super
102
- else
103
- super - [:sku_cont]
104
- end
105
- end
106
- end
107
-
108
- let!(:numeric_sku_variant) { FactoryBot.create(:variant, product: product, sku: "123") }
109
- let!(:non_numeric_sku_variant) { FactoryBot.create(:variant, product: product, sku: "abc") }
110
-
111
- it { expect(NumericSkuSearcher.new('123').results).to include numeric_sku_variant }
112
- it { expect(NumericSkuSearcher.new('abc').results).not_to include non_numeric_sku_variant }
113
- end
114
- end
115
- end
@@ -1,140 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::AppConfiguration do
6
- let(:prefs) { Spree::Config }
7
-
8
- around do |example|
9
- with_unfrozen_spree_preference_store do
10
- example.run
11
- end
12
- end
13
-
14
- it "should be available from the environment" do
15
- prefs.layout = "my/layout"
16
- expect(prefs.layout).to eq "my/layout"
17
- end
18
-
19
- it "should be available as Spree::Config for legacy access" do
20
- expect(Spree::Config).to be_a Spree::AppConfiguration
21
- end
22
-
23
- it "uses base searcher class by default" do
24
- expect(prefs.searcher_class).to eq Spree::Core::Search::Base
25
- end
26
-
27
- it "uses variant search class by default" do
28
- expect(prefs.variant_search_class).to eq Spree::Core::Search::Variant
29
- end
30
-
31
- it "uses variant price selector class by default" do
32
- expect(prefs.variant_price_selector_class).to eq Spree::Variant::PriceSelector
33
- end
34
-
35
- it "has a getter for the pricing options class provided by the variant price selector class" do
36
- expect(prefs.pricing_options_class).to eq Spree::Variant::PriceSelector.pricing_options_class
37
- end
38
-
39
- describe '#stock' do
40
- subject { prefs.stock }
41
- it { is_expected.to be_a Spree::Core::StockConfiguration }
42
- end
43
-
44
- describe '@default_country_iso_code' do
45
- it 'is the USA by default' do
46
- expect(prefs[:default_country_iso]).to eq("US")
47
- end
48
- end
49
-
50
- describe '@admin_vat_country_iso' do
51
- it 'is `nil` by default' do
52
- expect(prefs[:admin_vat_country_iso]).to eq(nil)
53
- end
54
- end
55
-
56
- describe '#environment' do
57
- class DummyClass; end;
58
-
59
- subject(:environment) { prefs.environment }
60
- it { is_expected.to be_a Spree::Core::Environment }
61
-
62
- shared_examples "working preferences set" do
63
- it "allows adding new items" do
64
- preferences_set << DummyClass
65
- expect(preferences_set).to include DummyClass
66
- preferences_set.delete DummyClass
67
- end
68
- end
69
-
70
- context '.payment_methods' do
71
- subject(:preferences_set) { environment.payment_methods }
72
- it_should_behave_like "working preferences set"
73
- end
74
-
75
- context '.stock_splitters' do
76
- subject(:preferences_set) { environment.stock_splitters }
77
- it_should_behave_like "working preferences set"
78
- end
79
-
80
- context '.calculators' do
81
- subject(:calculators) { environment.calculators }
82
- it { is_expected.to be_a Spree::Core::Environment::Calculators }
83
-
84
- context '.calculators.shipping_methods' do
85
- subject(:preferences_set) { calculators.shipping_methods }
86
- it_should_behave_like "working preferences set"
87
- end
88
-
89
- context '.calculators.tax_rates' do
90
- subject(:preferences_set) { calculators.tax_rates }
91
- it_should_behave_like "working preferences set"
92
- end
93
-
94
- context '.calculators.promotion_actions_create_adjustments' do
95
- subject(:preferences_set) { calculators.promotion_actions_create_adjustments }
96
- it_should_behave_like "working preferences set"
97
- end
98
-
99
- context '.calculators.promotion_actions_create_item_adjustments' do
100
- subject(:preferences_set) { calculators.promotion_actions_create_item_adjustments }
101
- it_should_behave_like "working preferences set"
102
- end
103
-
104
- context '.calculators.promotion_actions_create_quantity_adjustments' do
105
- subject(:preferences_set) { calculators.promotion_actions_create_quantity_adjustments }
106
- it_should_behave_like "working preferences set"
107
- end
108
- end
109
-
110
- context '.promotions' do
111
- subject(:promotions) { environment.promotions }
112
- it { is_expected.to be_a Spree::Core::Environment::Promotions }
113
-
114
- context '.promotions.rules' do
115
- subject(:preferences_set) { promotions.rules }
116
- it_should_behave_like "working preferences set"
117
- end
118
-
119
- context '.promotions.actions' do
120
- subject(:preferences_set) { promotions.actions }
121
- it_should_behave_like "working preferences set"
122
- end
123
-
124
- context '.promotions.shipping_actions' do
125
- subject(:preferences_set) { promotions.shipping_actions }
126
- it_should_behave_like "working preferences set"
127
- end
128
- end
129
- end
130
-
131
- it 'has a default admin VAT location with nil values by default' do
132
- expect(prefs.admin_vat_location).to eq(Spree::Tax::TaxLocation.new)
133
- expect(prefs.admin_vat_location.state_id).to eq(nil)
134
- expect(prefs.admin_vat_location.country_id).to eq(nil)
135
- end
136
-
137
- it 'has default Event adapter' do
138
- expect(prefs.events.adapter).to eq Spree::Event::Adapters::ActiveSupportNotifications
139
- end
140
- end