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,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::PermissionSets::RestrictedStockManagement do
6
- let(:ability) { Spree::Ability.new(user) }
7
- let(:user) { create :user }
8
-
9
- subject { ability }
10
-
11
- let!(:variant) { create :variant }
12
-
13
- let(:sl1) { create :stock_location, active: false }
14
- let(:sl2) { create :stock_location, active: false }
15
-
16
- let(:item1) { variant.stock_items.where(stock_location_id: sl1.id).first }
17
- let(:item2) { variant.stock_items.where(stock_location_id: sl2.id).first }
18
-
19
- before do
20
- user.stock_locations << sl1
21
- end
22
-
23
- context "when activated" do
24
- before do
25
- described_class.new(ability).activate!
26
- end
27
-
28
- it { is_expected.to be_able_to(:display, sl1) }
29
- it { is_expected.to_not be_able_to(:display, sl2) }
30
-
31
- it { is_expected.to be_able_to(:manage, item1) }
32
- it { is_expected.to_not be_able_to(:manage, item2) }
33
- end
34
-
35
- context "when not activated" do
36
- it { is_expected.to_not be_able_to(:display, sl1) }
37
- it { is_expected.to_not be_able_to(:display, sl2) }
38
-
39
- it { is_expected.to_not be_able_to(:manage, item1) }
40
- it { is_expected.to_not be_able_to(:manage, item2) }
41
- end
42
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::PermissionSets::StockDisplay do
6
- let(:ability) { DummyAbility.new }
7
-
8
- subject { ability }
9
-
10
- context "when activated" do
11
- before do
12
- described_class.new(ability).activate!
13
- end
14
-
15
- it { is_expected.to be_able_to(:display, Spree::StockItem) }
16
- it { is_expected.to be_able_to(:admin, Spree::StockItem) }
17
- it { is_expected.to be_able_to(:display, Spree::StockLocation) }
18
- end
19
-
20
- context "when not activated" do
21
- it { is_expected.not_to be_able_to(:display, Spree::StockItem) }
22
- it { is_expected.not_to be_able_to(:admin, Spree::StockItem) }
23
- it { is_expected.not_to be_able_to(:display, Spree::StockLocation) }
24
- end
25
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::PermissionSets::StockManagement do
6
- let(:ability) { DummyAbility.new }
7
-
8
- subject { ability }
9
-
10
- context "when activated" do
11
- before do
12
- described_class.new(ability).activate!
13
- end
14
-
15
- it { is_expected.to be_able_to(:manage, Spree::StockItem) }
16
- it { is_expected.to be_able_to(:display, Spree::StockLocation) }
17
- end
18
-
19
- context "when not activated" do
20
- it { is_expected.not_to be_able_to(:manage, Spree::StockItem) }
21
- it { is_expected.not_to be_able_to(:display, Spree::StockLocation) }
22
- end
23
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::PermissionSets::UserDisplay do
6
- let(:ability) { DummyAbility.new }
7
-
8
- subject { ability }
9
-
10
- context "when activated" do
11
- before do
12
- described_class.new(ability).activate!
13
- end
14
-
15
- it { is_expected.to be_able_to(:display, Spree.user_class) }
16
- it { is_expected.to be_able_to(:admin, Spree.user_class) }
17
- it { is_expected.to be_able_to(:edit, Spree.user_class) }
18
- it { is_expected.to be_able_to(:addresses, Spree.user_class) }
19
- it { is_expected.to be_able_to(:orders, Spree.user_class) }
20
- it { is_expected.to be_able_to(:items, Spree.user_class) }
21
- it { is_expected.to be_able_to(:display, Spree::StoreCredit) }
22
- it { is_expected.to be_able_to(:admin, Spree::StoreCredit) }
23
- it { is_expected.to be_able_to(:display, Spree::Role) }
24
- it { is_expected.not_to be_able_to(:delete, Spree.user_class) }
25
- it { is_expected.not_to be_able_to(:destroy, Spree.user_class) }
26
- end
27
-
28
- context "when not activated" do
29
- it { is_expected.not_to be_able_to(:display, Spree.user_class) }
30
- it { is_expected.not_to be_able_to(:admin, Spree.user_class) }
31
- it { is_expected.not_to be_able_to(:edit, Spree.user_class) }
32
- it { is_expected.not_to be_able_to(:addresses, Spree.user_class) }
33
- it { is_expected.not_to be_able_to(:orders, Spree.user_class) }
34
- it { is_expected.not_to be_able_to(:items, Spree.user_class) }
35
- it { is_expected.not_to be_able_to(:display, Spree::StoreCredit) }
36
- it { is_expected.not_to be_able_to(:admin, Spree::StoreCredit) }
37
- it { is_expected.not_to be_able_to(:display, Spree::Role) }
38
- end
39
- end
@@ -1,58 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::PermissionSets::UserManagement do
6
- let(:ability) { DummyAbility.new }
7
-
8
- subject { ability }
9
-
10
- context "when activated" do
11
- before do
12
- described_class.new(ability).activate!
13
- end
14
-
15
- it { is_expected.to be_able_to(:admin, Spree.user_class) }
16
- it { is_expected.to be_able_to(:display, Spree.user_class) }
17
- it { is_expected.to be_able_to(:create, Spree.user_class) }
18
- it { is_expected.to be_able_to(:update, Spree.user_class) }
19
- it { is_expected.to be_able_to(:save_in_address_book, Spree.user_class) }
20
- it { is_expected.to be_able_to(:remove_from_address_book, Spree.user_class) }
21
- it { is_expected.to be_able_to(:addresses, Spree.user_class) }
22
- it { is_expected.to be_able_to(:orders, Spree.user_class) }
23
- it { is_expected.to be_able_to(:items, Spree.user_class) }
24
-
25
- context 'when the user does not have a role' do
26
- let(:user) { create(:user) }
27
- it { is_expected.to be_able_to(:update_email, user) }
28
- it { is_expected.to be_able_to(:update_password, user) }
29
- end
30
-
31
- context 'when the user has a role' do
32
- let(:user) { create(:user, spree_roles: [create(:role)]) }
33
- it { is_expected.not_to be_able_to(:update_email, user) }
34
- it { is_expected.not_to be_able_to(:update_password, user) }
35
- end
36
-
37
- it { is_expected.not_to be_able_to(:delete, Spree.user_class) }
38
- it { is_expected.not_to be_able_to(:destroy, Spree.user_class) }
39
-
40
- it { is_expected.to be_able_to(:manage, Spree::StoreCredit) }
41
- it { is_expected.to be_able_to(:display, Spree::Role) }
42
- end
43
-
44
- context "when not activated" do
45
- it { is_expected.not_to be_able_to(:manage, Spree.user_class) }
46
- it { is_expected.not_to be_able_to(:delete, Spree.user_class) }
47
- it { is_expected.not_to be_able_to(:destroy, Spree.user_class) }
48
- it { is_expected.not_to be_able_to(:update, Spree.user_class) }
49
- it { is_expected.not_to be_able_to(:save_in_address_book, Spree.user_class) }
50
- it { is_expected.not_to be_able_to(:remove_from_address_book, Spree.user_class) }
51
- it { is_expected.not_to be_able_to(:addresses, Spree.user_class) }
52
- it { is_expected.not_to be_able_to(:orders, Spree.user_class) }
53
- it { is_expected.not_to be_able_to(:items, Spree.user_class) }
54
- it { is_expected.not_to be_able_to(:destroy, Spree.user_class) }
55
- it { is_expected.not_to be_able_to(:manage, Spree::StoreCredit) }
56
- it { is_expected.not_to be_able_to(:display, Spree::Role) }
57
- end
58
- end
@@ -1,79 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Preference, type: :model do
6
- it "should require a key" do
7
- @preference = Spree::Preference.new
8
- @preference.key = :test
9
- @preference.value = true
10
- expect(@preference).to be_valid
11
- end
12
-
13
- describe "type coversion for values" do
14
- def round_trip_preference(key, value)
15
- element = Spree::Preference.new
16
- element.value = value
17
- element.key = key
18
- element.save
19
-
20
- Spree::Preference.find_by(key: key)
21
- end
22
-
23
- it ":boolean" do
24
- value = true
25
- key = "boolean_key"
26
- pref = round_trip_preference(key, value)
27
- expect(pref.value).to eq value
28
- end
29
-
30
- it "false :boolean" do
31
- value = false
32
- key = "boolean_key"
33
- pref = round_trip_preference(key, value)
34
- expect(pref.value).to eq value
35
- end
36
-
37
- it ":integer" do
38
- value = 10
39
- key = "integer_key"
40
- pref = round_trip_preference(key, value)
41
- expect(pref.value).to eq value
42
- end
43
-
44
- it ":decimal" do
45
- value = 1.5
46
- key = "decimal_key"
47
- pref = round_trip_preference(key, value)
48
- expect(pref.value).to eq value
49
- end
50
-
51
- it ":string" do
52
- value = "This is a string"
53
- key = "string_key"
54
- pref = round_trip_preference(key, value)
55
- expect(pref.value).to eq value
56
- end
57
-
58
- it ":text" do
59
- value = "This is a string stored as text"
60
- key = "text_key"
61
- pref = round_trip_preference(key, value)
62
- expect(pref.value).to eq value
63
- end
64
-
65
- it ":password" do
66
- value = "This is a password"
67
- key = "password_key"
68
- pref = round_trip_preference(key, value)
69
- expect(pref.value).to eq value
70
- end
71
-
72
- it ":any" do
73
- value = [1, 2]
74
- key = "any_key"
75
- pref = round_trip_preference(key, value)
76
- expect(pref.value).to eq value
77
- end
78
- end
79
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Preferences::Configuration, type: :model do
6
- before :all do
7
- class AppConfig < Spree::Preferences::Configuration
8
- preference :color, :string, default: :blue
9
- end
10
- @config = AppConfig.new
11
- end
12
-
13
- it "has named methods to access preferences" do
14
- @config.color = 'orange'
15
- expect(@config.color).to eq 'orange'
16
- end
17
-
18
- it "uses [ ] to access preferences" do
19
- @config[:color] = 'red'
20
- expect(@config[:color]).to eq 'red'
21
- end
22
-
23
- it "uses set/get to access preferences" do
24
- @config.set(color: 'green')
25
- expect(@config.get(:color)).to eq 'green'
26
- end
27
- end
@@ -1,334 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Preferences::Preferable, type: :model do
6
- before :all do
7
- class A
8
- include Spree::Preferences::Preferable
9
- attr_reader :id
10
-
11
- def initialize
12
- @id = rand(999)
13
- end
14
-
15
- def preferences
16
- @preferences ||= default_preferences
17
- end
18
-
19
- preference :color, :string, default: 'green'
20
- end
21
-
22
- class B < A
23
- preference :flavor, :string
24
- end
25
- end
26
-
27
- before :each do
28
- @a = A.new
29
- @b = B.new
30
- end
31
-
32
- describe "preference definitions" do
33
- it "parent should not see child definitions" do
34
- expect(@a.has_preference?(:color)).to be true
35
- expect(@a.has_preference?(:flavor)).not_to be true
36
- end
37
-
38
- it "child should have parent and own definitions" do
39
- expect(@b.has_preference?(:color)).to be true
40
- expect(@b.has_preference?(:flavor)).to be true
41
- end
42
-
43
- it "instances have defaults" do
44
- expect(@a.preferred_color).to eq 'green'
45
- expect(@b.preferred_color).to eq 'green'
46
- expect(@b.preferred_flavor).to be_nil
47
- end
48
-
49
- it "can be asked if it has a preference definition" do
50
- expect(@a.has_preference?(:color)).to be true
51
- expect(@a.has_preference?(:bad)).to be false
52
- end
53
-
54
- it "can be asked and raises" do
55
- expect {
56
- @a.has_preference! :flavor
57
- }.to raise_error(NoMethodError, "flavor preference not defined")
58
- end
59
-
60
- it "has a type" do
61
- expect(@a.preferred_color_type).to eq :string
62
- expect(@a.preference_type(:color)).to eq :string
63
- end
64
-
65
- it "has a default" do
66
- expect(@a.preferred_color_default).to eq 'green'
67
- expect(@a.preference_default(:color)).to eq 'green'
68
- end
69
-
70
- it "raises if not defined" do
71
- expect {
72
- @a.get_preference :flavor
73
- }.to raise_error(NoMethodError, "flavor preference not defined")
74
- end
75
- end
76
-
77
- describe "preference access" do
78
- it "handles ghost methods for preferences" do
79
- @a.preferred_color = 'blue'
80
- expect(@a.preferred_color).to eq 'blue'
81
- end
82
-
83
- it "parent and child instances have their own prefs" do
84
- @a.preferred_color = 'red'
85
- @b.preferred_color = 'blue'
86
-
87
- expect(@a.preferred_color).to eq 'red'
88
- expect(@b.preferred_color).to eq 'blue'
89
- end
90
-
91
- it "raises when preference not defined" do
92
- expect {
93
- @a.set_preference(:bad, :bone)
94
- }.to raise_exception(NoMethodError, "bad preference not defined")
95
- end
96
-
97
- it "builds a hash of preferences" do
98
- @b.preferred_flavor = :strawberry
99
- expect(@b.preferences[:flavor]).to eq 'strawberry'
100
- expect(@b.preferences[:color]).to eq 'green' # default from A
101
- end
102
-
103
- it "builds a hash of preference defaults" do
104
- expect(@b.default_preferences).to eq({
105
- flavor: nil,
106
- color: 'green'
107
- })
108
- end
109
-
110
- describe '#admin_form_preference_names' do
111
- subject do
112
- ComplexPreferableClass.new.admin_form_preference_names
113
- end
114
-
115
- before do
116
- class ComplexPreferableClass
117
- include Spree::Preferences::Preferable
118
- preference :name, :string
119
- preference :password, :password
120
- preference :mapping, :hash
121
- preference :recipients, :array
122
- end
123
- end
124
-
125
- it "returns an array of preference names excluding preferences not presentable as form field" do
126
- is_expected.to contain_exactly(:name, :password)
127
- end
128
-
129
- context 'with overwritten allowed_admin_form_preference_types class method' do
130
- subject do
131
- ComplexOverwrittenPreferableClass.new.admin_form_preference_names
132
- end
133
-
134
- before do
135
- class ComplexOverwrittenPreferableClass
136
- include Spree::Preferences::Preferable
137
- preference :name, :string
138
- preference :password, :password
139
- preference :mapping, :hash
140
- preference :recipients, :array
141
-
142
- def self.allowed_admin_form_preference_types
143
- %i(string password hash array)
144
- end
145
- end
146
- end
147
-
148
- it 'returns these types instead' do
149
- is_expected.to contain_exactly(:name, :password, :mapping, :recipients)
150
- end
151
- end
152
- end
153
-
154
- context "converts integer preferences to integer values" do
155
- before do
156
- A.preference :is_integer, :integer
157
- end
158
-
159
- it "with strings" do
160
- @a.set_preference(:is_integer, '3')
161
- expect(@a.preferences[:is_integer]).to eq(3)
162
-
163
- @a.set_preference(:is_integer, '')
164
- expect(@a.preferences[:is_integer]).to eq(0)
165
- end
166
-
167
- it 'does not convert if value is nil' do
168
- @a.set_preference(:is_integer, nil)
169
- expect(@a.preferences[:is_integer]).to be_nil
170
- end
171
- end
172
-
173
- context "converts decimal preferences to BigDecimal values" do
174
- before do
175
- A.preference :if_decimal, :decimal
176
- end
177
-
178
- it "returns a BigDecimal" do
179
- @a.set_preference(:if_decimal, 3.3)
180
- expect(@a.preferences[:if_decimal].class).to eq(BigDecimal)
181
- end
182
-
183
- it "with strings" do
184
- @a.set_preference(:if_decimal, '3.3')
185
- expect(@a.preferences[:if_decimal]).to eq(3.3)
186
-
187
- @a.set_preference(:if_decimal, '')
188
- expect(@a.preferences[:if_decimal]).to eq(0.0)
189
- end
190
- end
191
-
192
- context "converts boolean preferences to boolean values" do
193
- before do
194
- A.preference :is_boolean, :boolean, default: true
195
- end
196
-
197
- it "with strings" do
198
- @a.set_preference(:is_boolean, '0')
199
- expect(@a.preferences[:is_boolean]).to be false
200
- @a.set_preference(:is_boolean, 'f')
201
- expect(@a.preferences[:is_boolean]).to be false
202
- @a.set_preference(:is_boolean, 't')
203
- expect(@a.preferences[:is_boolean]).to be true
204
- end
205
-
206
- it "with integers" do
207
- @a.set_preference(:is_boolean, 0)
208
- expect(@a.preferences[:is_boolean]).to be false
209
- @a.set_preference(:is_boolean, 1)
210
- expect(@a.preferences[:is_boolean]).to be true
211
- end
212
-
213
- it "with an empty string" do
214
- @a.set_preference(:is_boolean, '')
215
- expect(@a.preferences[:is_boolean]).to be false
216
- end
217
-
218
- it "with an empty hash" do
219
- @a.set_preference(:is_boolean, [])
220
- expect(@a.preferences[:is_boolean]).to be false
221
- end
222
- end
223
-
224
- context "converts array preferences to array values" do
225
- before do
226
- A.preference :is_array, :array, default: []
227
- end
228
-
229
- it "with arrays" do
230
- @a.set_preference(:is_array, [])
231
- expect(@a.preferences[:is_array]).to eq []
232
- end
233
- end
234
-
235
- context "converts hash preferences to hash values" do
236
- before do
237
- A.preference :is_hash, :hash, default: {}
238
- end
239
-
240
- it "with hash" do
241
- @a.set_preference(:is_hash, {})
242
- expect(@a.preferences[:is_hash]).to be_is_a(Hash)
243
- end
244
-
245
- it "with hash and keys are integers" do
246
- @a.set_preference(:is_hash, { 1 => 2, 3 => 4 })
247
- expect(@a.preferences[:is_hash]).to eql({ 1 => 2, 3 => 4 })
248
- end
249
- end
250
-
251
- context "converts any preferences to any values" do
252
- before do
253
- A.preference :product_ids, :any, default: []
254
- A.preference :product_attributes, :any, default: {}
255
- end
256
-
257
- it "with array" do
258
- expect(@a.preferences[:product_ids]).to eq([])
259
- @a.set_preference(:product_ids, [1, 2])
260
- expect(@a.preferences[:product_ids]).to eq([1, 2])
261
- end
262
-
263
- it "with hash" do
264
- expect(@a.preferences[:product_attributes]).to eq({})
265
- @a.set_preference(:product_attributes, { id: 1, name: 2 })
266
- expect(@a.preferences[:product_attributes]).to eq({ id: 1, name: 2 })
267
- end
268
- end
269
- end
270
-
271
- describe "persisted preferables" do
272
- before(:all) do
273
- class CreatePrefTest < ActiveRecord::Migration[4.2]
274
- def self.up
275
- create_table :pref_tests do |item|
276
- item.string :col
277
- item.text :preferences
278
- end
279
- end
280
-
281
- def self.down
282
- drop_table :pref_tests
283
- end
284
- end
285
-
286
- @migration_verbosity = ActiveRecord::Migration[4.2].verbose
287
- ActiveRecord::Migration[4.2].verbose = false
288
- CreatePrefTest.migrate(:up)
289
-
290
- class PrefTest < Spree::Base
291
- preference :pref_test_pref, :string, default: 'abc'
292
- preference :pref_test_any, :any, default: []
293
- end
294
- end
295
-
296
- after(:all) do
297
- CreatePrefTest.migrate(:down)
298
- ActiveRecord::Migration[4.2].verbose = @migration_verbosity
299
- end
300
-
301
- before(:each) do
302
- @pt = PrefTest.create
303
- end
304
-
305
- describe "pending preferences for new activerecord objects" do
306
- it "saves preferences after record is saved" do
307
- pr = PrefTest.new
308
- pr.set_preference(:pref_test_pref, 'XXX')
309
- expect(pr.get_preference(:pref_test_pref)).to eq('XXX')
310
- pr.save!
311
- expect(pr.get_preference(:pref_test_pref)).to eq('XXX')
312
- end
313
-
314
- it "saves preferences for serialized object" do
315
- pr = PrefTest.new
316
- pr.set_preference(:pref_test_any, [1, 2])
317
- expect(pr.get_preference(:pref_test_any)).to eq([1, 2])
318
- pr.save!
319
- expect(pr.get_preference(:pref_test_any)).to eq([1, 2])
320
- end
321
- end
322
-
323
- it "clear preferences when record is deleted" do
324
- @pt.save!
325
- @pt.preferred_pref_test_pref = 'lmn'
326
- @pt.save!
327
- @pt.destroy
328
- @pt1 = PrefTest.new(col: 'aaaa')
329
- @pt1.id = @pt.id
330
- @pt1.save!
331
- expect(@pt1.get_preference(:pref_test_pref)).to eq('abc')
332
- end
333
- end
334
- end