solidus_core 2.10.2 → 2.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (495) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js.erb +31 -2
  3. data/app/controllers/spree/base_controller.rb +1 -0
  4. data/app/mailers/spree/base_mailer.rb +4 -0
  5. data/app/mailers/spree/order_mailer.rb +1 -1
  6. data/app/models/concerns/spree/active_storage_adapter.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 +60 -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/fixtures/blank.jpg +0 -0
  160. data/lib/spree/testing_support/job_helpers.rb +24 -0
  161. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  162. data/lib/spree/testing_support/preferences.rb +3 -1
  163. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  164. data/lib/spree/testing_support/translations.rb +25 -0
  165. data/solidus_core.gemspec +8 -5
  166. metadata +99 -377
  167. data/script/rails +0 -10
  168. data/spec/fixtures/thinking-cat.jpg +0 -0
  169. data/spec/helpers/base_helper_spec.rb +0 -168
  170. data/spec/helpers/products_helper_spec.rb +0 -202
  171. data/spec/helpers/taxons_helper_spec.rb +0 -43
  172. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  173. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  174. data/spec/lib/i18n_spec.rb +0 -97
  175. data/spec/lib/search/base_spec.rb +0 -91
  176. data/spec/lib/search/variant_spec.rb +0 -115
  177. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  178. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  179. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  180. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  181. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  182. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  183. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  184. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  185. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -48
  186. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  187. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  188. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  189. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  190. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
  191. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  192. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  193. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  194. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  195. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  196. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  197. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  198. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  199. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  200. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  201. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  202. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  203. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  204. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  205. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  206. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  207. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  208. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  209. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  210. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  211. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  212. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  213. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  214. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  215. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  216. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  217. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  218. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  219. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  220. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  221. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  222. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  223. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  224. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  225. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  226. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  227. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  228. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  229. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  230. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  231. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  232. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  233. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  234. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  235. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  236. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  237. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  238. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  239. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  240. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  241. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  242. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  243. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  244. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  245. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  246. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  247. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  248. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  249. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  250. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  251. data/spec/lib/spree/core/version_spec.rb +0 -19
  252. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  253. data/spec/lib/spree/event_spec.rb +0 -130
  254. data/spec/lib/spree/localized_number_spec.rb +0 -45
  255. data/spec/lib/spree/migrations_spec.rb +0 -32
  256. data/spec/lib/spree/money_spec.rb +0 -298
  257. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  258. data/spec/lib/spree/permitted_attributes_spec.rb +0 -41
  259. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  260. data/spec/lib/tasks/dummy_task.rake +0 -12
  261. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  262. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  263. data/spec/mailers/carton_mailer_spec.rb +0 -44
  264. data/spec/mailers/order_mailer_spec.rb +0 -117
  265. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  266. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  267. data/spec/mailers/test_mailer_spec.rb +0 -13
  268. data/spec/models/spree/ability_spec.rb +0 -279
  269. data/spec/models/spree/address_spec.rb +0 -399
  270. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  271. data/spec/models/spree/adjustment_spec.rb +0 -339
  272. data/spec/models/spree/asset_spec.rb +0 -25
  273. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  274. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  275. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  276. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  277. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  278. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  279. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  280. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  281. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  282. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  283. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  284. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  285. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  286. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  287. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
  288. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  289. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  290. data/spec/models/spree/calculator_spec.rb +0 -43
  291. data/spec/models/spree/carton_spec.rb +0 -145
  292. data/spec/models/spree/classification_spec.rb +0 -126
  293. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  294. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  295. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  296. data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
  297. data/spec/models/spree/country_spec.rb +0 -154
  298. data/spec/models/spree/credit_card_spec.rb +0 -373
  299. data/spec/models/spree/customer_return_spec.rb +0 -294
  300. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  301. data/spec/models/spree/exchange_spec.rb +0 -76
  302. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  303. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  304. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  305. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  306. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  307. data/spec/models/spree/gateway_spec.rb +0 -14
  308. data/spec/models/spree/image_spec.rb +0 -25
  309. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  310. data/spec/models/spree/line_item_spec.rb +0 -240
  311. data/spec/models/spree/option_type_spec.rb +0 -16
  312. data/spec/models/spree/option_value_spec.rb +0 -52
  313. data/spec/models/spree/order/address_spec.rb +0 -52
  314. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  315. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  316. data/spec/models/spree/order/checkout_spec.rb +0 -740
  317. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  318. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  319. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  320. data/spec/models/spree/order/payment_spec.rb +0 -280
  321. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  322. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  323. data/spec/models/spree/order/totals_spec.rb +0 -26
  324. data/spec/models/spree/order/validations_spec.rb +0 -17
  325. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  326. data/spec/models/spree/order_capturing_spec.rb +0 -16
  327. data/spec/models/spree/order_contents_spec.rb +0 -362
  328. data/spec/models/spree/order_inventory_spec.rb +0 -285
  329. data/spec/models/spree/order_merger_spec.rb +0 -162
  330. data/spec/models/spree/order_mutex_spec.rb +0 -89
  331. data/spec/models/spree/order_promotion_spec.rb +0 -33
  332. data/spec/models/spree/order_shipping_spec.rb +0 -247
  333. data/spec/models/spree/order_spec.rb +0 -1687
  334. data/spec/models/spree/order_taxation_spec.rb +0 -128
  335. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  336. data/spec/models/spree/order_updater_spec.rb +0 -556
  337. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  338. data/spec/models/spree/payment_create_spec.rb +0 -195
  339. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  340. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  341. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  342. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  343. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  344. data/spec/models/spree/payment_method_spec.rb +0 -408
  345. data/spec/models/spree/payment_spec.rb +0 -1270
  346. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  347. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  348. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  349. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  350. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  351. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  352. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  353. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  354. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  355. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  356. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  357. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  358. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  359. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  360. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  361. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
  362. data/spec/models/spree/preference_spec.rb +0 -79
  363. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  364. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  365. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  366. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  367. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  368. data/spec/models/spree/preferences/store_spec.rb +0 -40
  369. data/spec/models/spree/price_spec.rb +0 -150
  370. data/spec/models/spree/product/scopes_spec.rb +0 -164
  371. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  372. data/spec/models/spree/product_filter_spec.rb +0 -28
  373. data/spec/models/spree/product_property_spec.rb +0 -20
  374. data/spec/models/spree/product_spec.rb +0 -584
  375. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  376. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  377. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  378. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  379. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  380. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  381. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  382. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  383. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  384. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  385. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  386. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  387. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -227
  388. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  389. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  390. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  391. data/spec/models/spree/promotion_action_spec.rb +0 -44
  392. data/spec/models/spree/promotion_category_spec.rb +0 -19
  393. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  394. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  395. data/spec/models/spree/promotion_code_spec.rb +0 -206
  396. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  397. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  398. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  399. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  400. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  401. data/spec/models/spree/promotion_spec.rb +0 -945
  402. data/spec/models/spree/refund_spec.rb +0 -200
  403. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  404. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  405. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  406. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  407. data/spec/models/spree/reimbursement_spec.rb +0 -278
  408. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  409. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  410. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  411. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  412. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  413. data/spec/models/spree/return_authorization_spec.rb +0 -226
  414. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  415. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  416. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  417. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  418. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  419. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  420. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  421. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  422. data/spec/models/spree/return_item_spec.rb +0 -785
  423. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  424. data/spec/models/spree/shipment_spec.rb +0 -914
  425. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  426. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  427. data/spec/models/spree/shipping_method_spec.rb +0 -292
  428. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  429. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  430. data/spec/models/spree/state_spec.rb +0 -43
  431. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  432. data/spec/models/spree/stock/availability_spec.rb +0 -143
  433. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  434. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  435. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  436. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  437. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  438. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  439. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  440. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  441. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  442. data/spec/models/spree/stock/package_spec.rb +0 -182
  443. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  444. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  445. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  446. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  447. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  448. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  449. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  450. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  451. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  452. data/spec/models/spree/stock_item_spec.rb +0 -348
  453. data/spec/models/spree/stock_location_spec.rb +0 -288
  454. data/spec/models/spree/stock_movement_spec.rb +0 -58
  455. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  456. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  457. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  458. data/spec/models/spree/store_credit_spec.rb +0 -900
  459. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  460. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  461. data/spec/models/spree/store_spec.rb +0 -156
  462. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  463. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  464. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  465. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  466. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  467. data/spec/models/spree/tax_category_spec.rb +0 -50
  468. data/spec/models/spree/tax_rate_spec.rb +0 -317
  469. data/spec/models/spree/taxon_spec.rb +0 -197
  470. data/spec/models/spree/taxonomy_spec.rb +0 -15
  471. data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
  472. data/spec/models/spree/unit_cancel_spec.rb +0 -126
  473. data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
  474. data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
  475. data/spec/models/spree/user_spec.rb +0 -247
  476. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  477. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  478. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  479. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  480. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  481. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  482. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  483. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  484. data/spec/models/spree/variant_spec.rb +0 -862
  485. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  486. data/spec/models/spree/wallet_spec.rb +0 -155
  487. data/spec/models/spree/zone_spec.rb +0 -248
  488. data/spec/rails_helper.rb +0 -46
  489. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  490. data/spec/spec_helper.rb +0 -36
  491. data/spec/support/big_decimal.rb +0 -7
  492. data/spec/support/concerns/default_price.rb +0 -44
  493. data/spec/support/concerns/payment_source.rb +0 -66
  494. data/spec/support/concerns/working_factories.rb +0 -15
  495. 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