solidus_core 2.10.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (495) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js.erb +31 -2
  3. data/app/controllers/spree/base_controller.rb +1 -0
  4. data/app/mailers/spree/base_mailer.rb +4 -0
  5. data/app/mailers/spree/order_mailer.rb +1 -1
  6. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +69 -0
  7. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
  8. data/app/models/concerns/spree/active_storage_adapter.rb +116 -0
  9. data/app/models/concerns/spree/default_price.rb +1 -1
  10. data/app/models/concerns/spree/soft_deletable.rb +18 -0
  11. data/app/models/concerns/spree/user_address_book.rb +86 -32
  12. data/app/models/concerns/spree/user_methods.rb +3 -2
  13. data/app/models/spree/ability.rb +34 -10
  14. data/app/models/spree/address/name.rb +49 -0
  15. data/app/models/spree/address/state_validator.rb +71 -0
  16. data/app/models/spree/address.rb +94 -17
  17. data/app/models/spree/adjustment.rb +1 -1
  18. data/app/models/spree/base.rb +1 -0
  19. data/app/models/spree/calculator/default_tax.rb +1 -1
  20. data/app/models/spree/calculator/percent_per_item.rb +4 -4
  21. data/app/models/spree/calculator/price_sack.rb +1 -1
  22. data/app/models/spree/credit_card.rb +2 -2
  23. data/app/models/spree/customer_return.rb +4 -2
  24. data/app/models/spree/exchange.rb +1 -1
  25. data/app/models/spree/image/active_storage_attachment.rb +21 -0
  26. data/app/models/spree/inventory_unit.rb +1 -1
  27. data/app/models/spree/line_item.rb +13 -4
  28. data/app/models/spree/option_type.rb +1 -1
  29. data/app/models/spree/option_value.rb +2 -2
  30. data/app/models/spree/order/checkout.rb +1 -0
  31. data/app/models/spree/order.rb +91 -20
  32. data/app/models/spree/order_inventory.rb +16 -4
  33. data/app/models/spree/order_merger.rb +6 -4
  34. data/app/models/spree/order_promotion.rb +1 -1
  35. data/app/models/spree/order_updater.rb +11 -10
  36. data/app/models/spree/payment/cancellation.rb +3 -3
  37. data/app/models/spree/payment/processing.rb +54 -30
  38. data/app/models/spree/payment.rb +3 -3
  39. data/app/models/spree/payment_method.rb +8 -9
  40. data/app/models/spree/preference.rb +1 -1
  41. data/app/models/spree/price.rb +2 -8
  42. data/app/models/spree/product/scopes.rb +10 -5
  43. data/app/models/spree/product.rb +19 -14
  44. data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
  45. data/app/models/spree/promotion.rb +18 -7
  46. data/app/models/spree/promotion_action.rb +1 -7
  47. data/app/models/spree/promotion_code.rb +6 -1
  48. data/app/models/spree/promotion_code_batch.rb +1 -1
  49. data/app/models/spree/promotion_handler/coupon.rb +2 -2
  50. data/app/models/spree/promotion_rule.rb +1 -1
  51. data/app/models/spree/promotion_rule_role.rb +1 -1
  52. data/app/models/spree/refund.rb +54 -12
  53. data/app/models/spree/reimbursement.rb +27 -0
  54. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +10 -3
  55. data/app/models/spree/return_authorization.rb +1 -1
  56. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
  57. data/app/models/spree/return_item.rb +21 -10
  58. data/app/models/spree/role.rb +1 -1
  59. data/app/models/spree/shipment.rb +2 -2
  60. data/app/models/spree/shipping_calculator.rb +1 -1
  61. data/app/models/spree/shipping_manifest.rb +2 -2
  62. data/app/models/spree/shipping_method.rb +2 -9
  63. data/app/models/spree/shipping_rate.rb +1 -1
  64. data/app/models/spree/shipping_rate_tax.rb +1 -1
  65. data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
  66. data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
  67. data/app/models/spree/stock/package.rb +1 -1
  68. data/app/models/spree/stock/simple_coordinator.rb +1 -3
  69. data/app/models/spree/stock_item.rb +2 -8
  70. data/app/models/spree/stock_movement.rb +2 -0
  71. data/app/models/spree/store.rb +1 -1
  72. data/app/models/spree/store_credit.rb +1 -7
  73. data/app/models/spree/store_credit_category.rb +30 -3
  74. data/app/models/spree/store_credit_event.rb +1 -7
  75. data/app/models/spree/store_credit_reason.rb +0 -4
  76. data/app/models/spree/tax/tax_helpers.rb +1 -1
  77. data/app/models/spree/tax_category.rb +2 -8
  78. data/app/models/spree/tax_rate.rb +7 -7
  79. data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
  80. data/app/models/spree/taxon.rb +1 -1
  81. data/app/models/spree/user_address.rb +8 -2
  82. data/app/models/spree/variant.rb +7 -13
  83. data/app/models/spree/variant_property_rule.rb +5 -1
  84. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +8 -3
  85. data/app/models/spree/zone.rb +1 -1
  86. data/config/locales/en.yml +44 -5
  87. data/db/default/spree/countries.rb +1 -1
  88. data/db/default/spree/states.rb +12 -4
  89. data/db/default/spree/store_credit.rb +2 -2
  90. data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
  91. data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
  92. data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
  93. data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
  94. data/lib/generators/solidus/install/install_generator.rb +253 -0
  95. data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +36 -5
  96. data/lib/generators/spree/install/install_generator.rb +7 -189
  97. data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
  98. data/lib/spree/app_configuration.rb +117 -51
  99. data/lib/spree/awesome_nested_set_override.rb +44 -0
  100. data/lib/spree/core/controller_helpers/auth.rb +17 -4
  101. data/lib/spree/core/controller_helpers/current_host.rb +17 -0
  102. data/lib/spree/core/controller_helpers/order.rb +8 -7
  103. data/lib/spree/core/controller_helpers/strong_parameters.rb +21 -7
  104. data/lib/spree/core/engine.rb +39 -2
  105. data/lib/spree/core/importer/order.rb +26 -11
  106. data/lib/spree/core/permalinks.rb +1 -3
  107. data/lib/spree/core/product_filters.rb +6 -5
  108. data/lib/spree/core/state_machines/order.rb +249 -0
  109. data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
  110. data/lib/spree/core/state_machines.rb +20 -1
  111. data/lib/spree/core/version.rb +1 -1
  112. data/lib/spree/core.rb +5 -11
  113. data/lib/spree/encryptor.rb +25 -0
  114. data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
  115. data/lib/spree/event/configuration.rb +11 -6
  116. data/lib/spree/event/subscriber.rb +38 -18
  117. data/lib/spree/event/subscriber_registry.rb +92 -0
  118. data/lib/spree/event.rb +40 -7
  119. data/lib/spree/i18n.rb +1 -1
  120. data/lib/spree/mailer_previews/carton_preview.rb +2 -1
  121. data/lib/spree/paranoia_deprecations.rb +32 -12
  122. data/lib/spree/permission_sets/configuration_display.rb +14 -14
  123. data/lib/spree/permission_sets/default_customer.rb +16 -16
  124. data/lib/spree/permission_sets/order_display.rb +11 -11
  125. data/lib/spree/permission_sets/order_management.rb +1 -1
  126. data/lib/spree/permission_sets/product_display.rb +9 -9
  127. data/lib/spree/permission_sets/promotion_display.rb +5 -5
  128. data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
  129. data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
  130. data/lib/spree/permission_sets/stock_display.rb +2 -2
  131. data/lib/spree/permission_sets/stock_management.rb +1 -1
  132. data/lib/spree/permission_sets/user_display.rb +3 -3
  133. data/lib/spree/permission_sets/user_management.rb +4 -3
  134. data/lib/spree/permitted_attributes.rb +79 -9
  135. data/lib/spree/preferences/preferable.rb +4 -3
  136. data/lib/spree/preferences/preferable_class_methods.rb +22 -3
  137. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  138. data/lib/spree/testing_support/authorization_helpers.rb +1 -0
  139. data/lib/spree/testing_support/blacklist_urls.rb +23 -0
  140. data/lib/spree/testing_support/capybara_ext.rb +3 -0
  141. data/lib/spree/testing_support/common_rake.rb +3 -3
  142. data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
  143. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
  144. data/lib/spree/testing_support/dummy_app.rb +44 -23
  145. data/lib/spree/testing_support/factories/address_factory.rb +1 -2
  146. data/lib/spree/testing_support/factories/image_factory.rb +1 -1
  147. data/lib/spree/testing_support/factories/promotion_factory.rb +6 -0
  148. data/lib/spree/testing_support/factories/refund_factory.rb +1 -0
  149. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  150. data/lib/spree/testing_support/factories/return_item_factory.rb +0 -1
  151. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +8 -0
  152. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +1 -0
  153. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +3 -1
  154. data/lib/spree/testing_support/factories/taxon_factory.rb +4 -0
  155. data/lib/spree/testing_support/factories/user_factory.rb +4 -1
  156. data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
  157. data/lib/spree/testing_support/job_helpers.rb +24 -0
  158. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  159. data/lib/spree/testing_support/preferences.rb +3 -1
  160. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  161. data/lib/spree/testing_support/translations.rb +25 -0
  162. data/solidus_core.gemspec +8 -5
  163. metadata +81 -359
  164. data/script/rails +0 -10
  165. data/spec/fixtures/thinking-cat.jpg +0 -0
  166. data/spec/helpers/base_helper_spec.rb +0 -168
  167. data/spec/helpers/products_helper_spec.rb +0 -202
  168. data/spec/helpers/taxons_helper_spec.rb +0 -43
  169. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  170. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  171. data/spec/lib/i18n_spec.rb +0 -97
  172. data/spec/lib/search/base_spec.rb +0 -91
  173. data/spec/lib/search/variant_spec.rb +0 -115
  174. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  175. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  176. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  177. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  178. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  179. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  180. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  181. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  182. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -41
  183. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  184. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  185. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  186. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  187. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
  188. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  189. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  190. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  191. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  192. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  193. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  194. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  195. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  196. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  197. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  198. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  199. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  200. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  201. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  202. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  203. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  204. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  205. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  206. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  207. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  208. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  209. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  210. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  211. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  212. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  213. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  214. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  215. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  216. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  217. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  218. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  219. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  220. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  221. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  222. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  223. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  224. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  225. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  226. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  227. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  228. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  229. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  230. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  231. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  232. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  233. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  234. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  235. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  236. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  237. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  238. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  239. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  240. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  241. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  242. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  243. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  244. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  245. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  246. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  247. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  248. data/spec/lib/spree/core/version_spec.rb +0 -19
  249. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  250. data/spec/lib/spree/event_spec.rb +0 -130
  251. data/spec/lib/spree/localized_number_spec.rb +0 -45
  252. data/spec/lib/spree/migrations_spec.rb +0 -32
  253. data/spec/lib/spree/money_spec.rb +0 -298
  254. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  255. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  256. data/spec/lib/tasks/dummy_task.rake +0 -12
  257. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  258. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  259. data/spec/mailers/carton_mailer_spec.rb +0 -44
  260. data/spec/mailers/order_mailer_spec.rb +0 -117
  261. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  262. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  263. data/spec/mailers/test_mailer_spec.rb +0 -13
  264. data/spec/models/spree/ability_spec.rb +0 -279
  265. data/spec/models/spree/address_spec.rb +0 -399
  266. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  267. data/spec/models/spree/adjustment_spec.rb +0 -339
  268. data/spec/models/spree/asset_spec.rb +0 -25
  269. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  270. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  271. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  272. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  273. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  274. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  275. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  276. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  277. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  278. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  279. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  280. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  281. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  282. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  283. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
  284. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  285. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  286. data/spec/models/spree/calculator_spec.rb +0 -43
  287. data/spec/models/spree/carton_spec.rb +0 -145
  288. data/spec/models/spree/classification_spec.rb +0 -126
  289. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  290. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  291. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  292. data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
  293. data/spec/models/spree/country_spec.rb +0 -154
  294. data/spec/models/spree/credit_card_spec.rb +0 -373
  295. data/spec/models/spree/customer_return_spec.rb +0 -294
  296. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  297. data/spec/models/spree/exchange_spec.rb +0 -76
  298. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  299. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  300. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  301. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  302. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  303. data/spec/models/spree/gateway_spec.rb +0 -14
  304. data/spec/models/spree/image_spec.rb +0 -25
  305. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  306. data/spec/models/spree/line_item_spec.rb +0 -240
  307. data/spec/models/spree/option_type_spec.rb +0 -16
  308. data/spec/models/spree/option_value_spec.rb +0 -52
  309. data/spec/models/spree/order/address_spec.rb +0 -52
  310. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  311. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  312. data/spec/models/spree/order/checkout_spec.rb +0 -740
  313. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  314. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  315. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  316. data/spec/models/spree/order/payment_spec.rb +0 -280
  317. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  318. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  319. data/spec/models/spree/order/totals_spec.rb +0 -26
  320. data/spec/models/spree/order/validations_spec.rb +0 -17
  321. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  322. data/spec/models/spree/order_capturing_spec.rb +0 -16
  323. data/spec/models/spree/order_contents_spec.rb +0 -362
  324. data/spec/models/spree/order_inventory_spec.rb +0 -285
  325. data/spec/models/spree/order_merger_spec.rb +0 -162
  326. data/spec/models/spree/order_mutex_spec.rb +0 -89
  327. data/spec/models/spree/order_promotion_spec.rb +0 -33
  328. data/spec/models/spree/order_shipping_spec.rb +0 -247
  329. data/spec/models/spree/order_spec.rb +0 -1687
  330. data/spec/models/spree/order_taxation_spec.rb +0 -128
  331. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  332. data/spec/models/spree/order_updater_spec.rb +0 -556
  333. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  334. data/spec/models/spree/payment_create_spec.rb +0 -195
  335. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  336. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  337. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  338. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  339. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  340. data/spec/models/spree/payment_method_spec.rb +0 -408
  341. data/spec/models/spree/payment_spec.rb +0 -1270
  342. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  343. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  344. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  345. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  346. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  347. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  348. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  349. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  350. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  351. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  352. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  353. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  354. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  355. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  356. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  357. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
  358. data/spec/models/spree/preference_spec.rb +0 -79
  359. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  360. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  361. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  362. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  363. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  364. data/spec/models/spree/preferences/store_spec.rb +0 -40
  365. data/spec/models/spree/price_spec.rb +0 -150
  366. data/spec/models/spree/product/scopes_spec.rb +0 -164
  367. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  368. data/spec/models/spree/product_filter_spec.rb +0 -28
  369. data/spec/models/spree/product_property_spec.rb +0 -20
  370. data/spec/models/spree/product_spec.rb +0 -584
  371. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  372. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  373. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  374. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  375. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  376. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  377. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  378. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  379. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  380. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  381. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  382. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  383. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -226
  384. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  385. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  386. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  387. data/spec/models/spree/promotion_action_spec.rb +0 -44
  388. data/spec/models/spree/promotion_category_spec.rb +0 -19
  389. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  390. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  391. data/spec/models/spree/promotion_code_spec.rb +0 -206
  392. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  393. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  394. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  395. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  396. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  397. data/spec/models/spree/promotion_spec.rb +0 -945
  398. data/spec/models/spree/refund_spec.rb +0 -200
  399. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  400. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  401. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  402. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  403. data/spec/models/spree/reimbursement_spec.rb +0 -278
  404. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  405. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  406. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  407. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  408. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  409. data/spec/models/spree/return_authorization_spec.rb +0 -226
  410. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  411. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  412. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  413. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  414. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  415. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  416. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  417. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  418. data/spec/models/spree/return_item_spec.rb +0 -785
  419. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  420. data/spec/models/spree/shipment_spec.rb +0 -914
  421. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  422. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  423. data/spec/models/spree/shipping_method_spec.rb +0 -292
  424. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  425. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  426. data/spec/models/spree/state_spec.rb +0 -43
  427. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  428. data/spec/models/spree/stock/availability_spec.rb +0 -143
  429. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  430. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  431. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  432. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  433. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  434. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  435. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  436. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  437. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  438. data/spec/models/spree/stock/package_spec.rb +0 -182
  439. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  440. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  441. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  442. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  443. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  444. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  445. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  446. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  447. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  448. data/spec/models/spree/stock_item_spec.rb +0 -348
  449. data/spec/models/spree/stock_location_spec.rb +0 -288
  450. data/spec/models/spree/stock_movement_spec.rb +0 -58
  451. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  452. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  453. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  454. data/spec/models/spree/store_credit_spec.rb +0 -900
  455. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  456. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  457. data/spec/models/spree/store_spec.rb +0 -156
  458. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  459. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  460. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  461. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  462. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  463. data/spec/models/spree/tax_category_spec.rb +0 -50
  464. data/spec/models/spree/tax_rate_spec.rb +0 -317
  465. data/spec/models/spree/taxon_spec.rb +0 -197
  466. data/spec/models/spree/taxonomy_spec.rb +0 -15
  467. data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
  468. data/spec/models/spree/unit_cancel_spec.rb +0 -126
  469. data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
  470. data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
  471. data/spec/models/spree/user_spec.rb +0 -247
  472. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  473. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  474. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  475. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  476. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  477. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  478. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  479. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  480. data/spec/models/spree/variant_spec.rb +0 -862
  481. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  482. data/spec/models/spree/wallet_spec.rb +0 -155
  483. data/spec/models/spree/zone_spec.rb +0 -248
  484. data/spec/rails_helper.rb +0 -46
  485. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  486. data/spec/spec_helper.rb +0 -36
  487. data/spec/support/big_decimal.rb +0 -7
  488. data/spec/support/concerns/default_price.rb +0 -44
  489. data/spec/support/concerns/payment_source.rb +0 -66
  490. data/spec/support/concerns/working_factories.rb +0 -15
  491. data/spec/support/dummy_ability.rb +0 -7
  492. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
  493. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
  494. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
  495. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
@@ -1,197 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
- require 'shared_examples/calculator_shared_examples'
5
-
6
- RSpec.describe Spree::Calculator::TieredPercent, type: :model do
7
- let(:calculator) { Spree::Calculator::TieredPercent.new }
8
-
9
- it_behaves_like 'a calculator with a description'
10
-
11
- describe "#valid?" do
12
- subject { calculator.valid? }
13
-
14
- context "when base percent is less than zero" do
15
- before { calculator.preferred_base_percent = -1 }
16
- it { is_expected.to be false }
17
- end
18
-
19
- context "when base percent is greater than 100" do
20
- before { calculator.preferred_base_percent = 110 }
21
- it { is_expected.to be false }
22
- end
23
-
24
- context "when tiers is a hash" do
25
- context "and the key is not a positive number" do
26
- before { calculator.preferred_tiers = { "nope" => 20 } }
27
- it { is_expected.to be false }
28
- end
29
-
30
- context "and one of the values is not a percent" do
31
- before { calculator.preferred_tiers = { 10 => 110 } }
32
- it { is_expected.to be false }
33
- end
34
-
35
- context "and the key is an integer" do
36
- before { calculator.preferred_tiers = { 20 => 20 } }
37
- it "converts successfully" do
38
- is_expected.to be true
39
- expect(calculator.preferred_tiers).to eq({ BigDecimal('20') => BigDecimal('20') })
40
- end
41
- end
42
-
43
- context "and the key is a float" do
44
- before { calculator.preferred_tiers = { 20.5 => 20.5 } }
45
- it "converts successfully" do
46
- is_expected.to be true
47
- expect(calculator.preferred_tiers).to eq({ BigDecimal('20.5') => BigDecimal('20.5') })
48
- end
49
- end
50
-
51
- context "and the key is a string number" do
52
- before { calculator.preferred_tiers = { "20" => 20 } }
53
- it "converts successfully" do
54
- is_expected.to be true
55
- expect(calculator.preferred_tiers).to eq({ BigDecimal('20') => BigDecimal('20') })
56
- end
57
- end
58
-
59
- context "and the key is a numeric string with spaces" do
60
- before { calculator.preferred_tiers = { " 20 " => 20 } }
61
- it "converts successfully" do
62
- is_expected.to be true
63
- expect(calculator.preferred_tiers).to eq({ BigDecimal('20') => BigDecimal('20') })
64
- end
65
- end
66
-
67
- context "and the key is a string number with decimals" do
68
- before { calculator.preferred_tiers = { "20.5" => "20.5" } }
69
- it "converts successfully" do
70
- is_expected.to be true
71
- expect(calculator.preferred_tiers).to eq({ BigDecimal('20.5') => BigDecimal('20.5') })
72
- end
73
- end
74
- end
75
- end
76
-
77
- describe "#compute" do
78
- let(:order) do
79
- create(
80
- :order_with_line_items,
81
- line_items_count: line_item_count,
82
- line_items_price: price
83
- )
84
- end
85
- let(:price) { 10 }
86
- let(:preferred_currency) { "USD" }
87
-
88
- before do
89
- calculator.preferred_base_percent = 10
90
- calculator.preferred_tiers = {
91
- 20 => 15,
92
- 30 => 20
93
- }
94
- calculator.preferred_currency = preferred_currency
95
- end
96
-
97
- context "with a line item" do
98
- let(:line_item) { order.line_items.first }
99
- subject { calculator.compute(line_item) }
100
-
101
- context "for multiple line items" do
102
- context "when amount falls within the first tier" do
103
- let(:line_item_count) { 1 }
104
- it { is_expected.to eq 1.0 }
105
- end
106
-
107
- context "when amount falls within the second tier" do
108
- let(:line_item_count) { 2 }
109
- it { is_expected.to eq 1.5 }
110
- end
111
-
112
- context "when amount falls within the third tier" do
113
- let(:line_item_count) { 3 }
114
- it { is_expected.to eq 2.0 }
115
- end
116
- end
117
-
118
- context "for a single line item" do
119
- let(:line_item_count) { 1 }
120
-
121
- context "when amount falls within the first tier" do
122
- let(:price) { 10 }
123
- it { is_expected.to eq 1.0 }
124
- end
125
-
126
- context "when amount falls within the second tier" do
127
- let(:price) { 20 }
128
- it { is_expected.to eq 3.0 }
129
- end
130
-
131
- context "when amount falls within the third tier" do
132
- let(:price) { 30 }
133
- it { is_expected.to eq 6.0 }
134
- end
135
- end
136
-
137
- context "when the order's currency does not match the calculator" do
138
- let(:preferred_currency) { "JPY" }
139
- let(:line_item_count) { 1 }
140
- let(:price) { 15 }
141
- it { is_expected.to eq 0 }
142
-
143
- it "rounds based on currency" do
144
- allow(order).to receive_messages currency: "JPY"
145
- expect(subject).to eq(2)
146
- end
147
- end
148
- end
149
-
150
- context "with an order" do
151
- subject { calculator.compute(order) }
152
-
153
- let(:line_item_count) { 1 }
154
-
155
- context "for multiple line items" do
156
- context "when amount falls within the first tier" do
157
- let(:line_item_count) { 1 }
158
- it { is_expected.to eq 1.0 }
159
- end
160
-
161
- context "when amount falls within the second tier" do
162
- let(:line_item_count) { 2 }
163
- it { is_expected.to eq 3.0 }
164
- end
165
-
166
- context "when amount falls within the third tier" do
167
- let(:line_item_count) { 3 }
168
- it { is_expected.to eq 6.0 }
169
- end
170
- end
171
-
172
- context "for a single line item" do
173
- let(:line_item_count) { 1 }
174
-
175
- context "when amount falls within the first tier" do
176
- let(:price) { 10 }
177
- it { is_expected.to eq 1.0 }
178
- end
179
-
180
- context "when amount falls within the second tier" do
181
- let(:price) { 20 }
182
- it { is_expected.to eq 3.0 }
183
- end
184
-
185
- context "when amount falls within the third tier" do
186
- let(:price) { 30 }
187
- it { is_expected.to eq 6.0 }
188
- end
189
- end
190
-
191
- context "when the order's currency does not match the calculator" do
192
- let(:preferred_currency) { "CAD" }
193
- it { is_expected.to eq 0 }
194
- end
195
- end
196
- end
197
- end
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Calculator, type: :model do
6
- class SimpleCalculator < Spree::Calculator
7
- def compute_simple_computable(_line_item)
8
- 'computed'
9
- end
10
- end
11
-
12
- class SimpleComputable
13
- end
14
-
15
- describe "#calculators" do
16
- subject { Spree::Calculator.calculators }
17
-
18
- it 'returns the (deprecated) calculator step' do
19
- Spree::Deprecation.silence do
20
- expect(subject).to be_a Spree::Core::Environment::Calculators
21
- end
22
- end
23
- end
24
-
25
- context "with computable" do
26
- let(:calculator) { SimpleCalculator.new }
27
- let(:computable) { SimpleComputable.new }
28
-
29
- subject { SimpleCalculator.new.compute computable }
30
-
31
- it 'calls compute method of class type' do
32
- expect(subject).to eq 'computed'
33
- end
34
-
35
- context 'computable does not implement right function name' do
36
- let(:computable) { Spree::LineItem.new }
37
-
38
- it 'raises an error' do
39
- expect { subject }.to raise_error NotImplementedError, /Please implement \'compute_line_item\(line_item\)\' in your calculator/
40
- end
41
- end
42
- end
43
- end
@@ -1,145 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Carton do
6
- let(:carton) { create(:carton) }
7
-
8
- describe 'shipping method' do
9
- it 'returns soft deleted shipping method' do
10
- carton = create(:carton)
11
- carton.shipping_method.discard
12
- expect(carton.reload.shipping_method).to be_present
13
- end
14
- end
15
-
16
- describe "#create" do
17
- subject { carton }
18
-
19
- it "raises no errors" do
20
- subject
21
- end
22
- end
23
-
24
- describe "#tracking_url" do
25
- subject do
26
- carton.tracking_url
27
- end
28
-
29
- let(:carton) { create(:carton, shipping_method: shipping_method) }
30
- let(:shipping_method) do
31
- create(:shipping_method, tracking_url: "https://example.com/:tracking")
32
- end
33
-
34
- context "when tracking is not present" do
35
- it { is_expected.to be_nil }
36
- end
37
-
38
- context "when tracking is present" do
39
- let(:carton) do
40
- create(:carton, shipping_method: shipping_method, tracking: "1Z12345")
41
- end
42
-
43
- it "uses shipping method to determine url" do
44
- is_expected.to eq("https://example.com/1Z12345")
45
- end
46
- end
47
- end
48
-
49
- describe "#to_param" do
50
- subject do
51
- carton.to_param
52
- end
53
-
54
- it { is_expected.to eq carton.number }
55
- end
56
-
57
- describe "#order_numbers" do
58
- subject { carton.order_numbers }
59
- let(:order) { carton.orders.first }
60
-
61
- it "returns a list of the order numbers it is associated to" do
62
- expect(subject).to eq [order.number]
63
- end
64
- end
65
-
66
- describe "#shipment_numbers" do
67
- subject { carton.shipment_numbers }
68
- let(:shipment) { carton.shipments.first }
69
-
70
- it "returns a list of the shipment numbers it is associated to" do
71
- expect(subject).to eq [shipment.number]
72
- end
73
- end
74
-
75
- describe "#order_emails" do
76
- subject { carton.order_emails }
77
-
78
- let(:carton) { create(:carton, inventory_units: [first_order.inventory_units, second_order.inventory_units].flatten) }
79
- let(:first_order) { create(:order_ready_to_ship, line_items_count: 1) }
80
- let(:second_order) { create(:order_ready_to_ship, line_items_count: 1) }
81
- let(:email) { 'something@something.com' }
82
-
83
- before do
84
- first_order.update!(email: email)
85
- second_order.update!(email: email)
86
- end
87
-
88
- it "returns a unique list of the order emails it is associated to" do
89
- expect(subject).to eq [email]
90
- end
91
- end
92
-
93
- describe "#manifest" do
94
- subject { carton.manifest }
95
-
96
- let(:carton) { create(:carton, inventory_units: [first_order.inventory_units, second_order.inventory_units].flatten) }
97
- let(:first_order) { create(:order_ready_to_ship, line_items_count: 1) }
98
- let(:first_line_item) { first_order.line_items.first }
99
- let(:second_order) { create(:order_ready_to_ship, line_items_count: 1) }
100
- let(:second_line_item) { second_order.line_items.first }
101
-
102
- it "contains only the items in both the carton and order" do
103
- expect(subject.map(&:line_item)).to match_array([first_line_item, second_line_item])
104
- end
105
- end
106
-
107
- describe "#manifest_for_order" do
108
- subject { carton.manifest_for_order(first_order) }
109
-
110
- let(:carton) { create(:carton, inventory_units: [first_order.inventory_units, second_order.inventory_units].flatten) }
111
- let(:first_order) { create(:order_ready_to_ship, line_items_count: 1) }
112
- let(:first_line_item) { first_order.line_items.first }
113
- let(:second_order) { create(:order_ready_to_ship, line_items_count: 1) }
114
-
115
- it "contains only the items in both the carton and order" do
116
- expect(subject.map(&:line_item)).to eq [first_line_item]
117
- end
118
- end
119
-
120
- describe "#any_exchanges?" do
121
- subject { carton.any_exchanges? }
122
-
123
- let(:carton) { create(:carton, inventory_units: [first_order.inventory_units, second_order.inventory_units].flatten) }
124
- let(:first_order) { create(:order_ready_to_ship, line_items_count: 1) }
125
- let(:second_order) { create(:order_ready_to_ship, line_items_count: 1) }
126
-
127
- context "when any of the inventory has an original return item" do
128
- let(:return_item) { create(:return_item) }
129
- before do
130
- first_order.inventory_units.first.original_return_item = return_item
131
- first_order.save
132
- end
133
-
134
- it "is true" do
135
- expect(subject).to be_truthy
136
- end
137
- end
138
-
139
- context "when none of the inventory has an original return item" do
140
- it "is false" do
141
- expect(subject).to be_falsey
142
- end
143
- end
144
- end
145
- end
@@ -1,126 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- RSpec.describe Classification, type: :model do
7
- # Regression test for https://github.com/spree/spree/issues/3494
8
- it "cannot link the same taxon to the same product more than once" do
9
- product = create(:product)
10
- taxon = create(:taxon)
11
- add_taxon = lambda { product.taxons << taxon }
12
- add_taxon.call
13
- expect(add_taxon).to raise_error(ActiveRecord::RecordInvalid)
14
- end
15
-
16
- let(:taxon_with_5_products) do
17
- products = []
18
- 5.times do
19
- products << create(:base_product)
20
- end
21
-
22
- create(:taxon, products: products)
23
- end
24
-
25
- def positions_to_be_valid(taxon)
26
- positions = taxon.reload.classifications.map(&:position)
27
- expect(positions).to eq((1..taxon.classifications.count).to_a)
28
- end
29
-
30
- it "has a valid fixtures" do
31
- expect positions_to_be_valid(taxon_with_5_products)
32
- expect(Spree::Classification.count).to eq 5
33
- end
34
-
35
- context "removing product from taxon" do
36
- before :each do
37
- element = taxon_with_5_products.products[1]
38
- expect(element.classifications.first.position).to eq(2)
39
- taxon_with_5_products.products.destroy(element)
40
- end
41
-
42
- it "resets positions" do
43
- expect positions_to_be_valid(taxon_with_5_products)
44
- end
45
- end
46
-
47
- context "Discard'ing a product" do
48
- before :each do
49
- element = taxon_with_5_products.products[1]
50
- expect(element.classifications.first.position).to eq(2)
51
- element.discard
52
- end
53
-
54
- it "resets positions" do
55
- expect positions_to_be_valid(taxon_with_5_products)
56
- end
57
- end
58
-
59
- context "replacing taxon's products" do
60
- before :each do
61
- products = taxon_with_5_products.products.to_a
62
- products.pop(1)
63
- taxon_with_5_products.products = products
64
- taxon_with_5_products.save!
65
- end
66
-
67
- it "resets positions" do
68
- expect positions_to_be_valid(taxon_with_5_products)
69
- end
70
- end
71
-
72
- context "removing taxon from product" do
73
- before :each do
74
- element = taxon_with_5_products.products[1]
75
- element.taxons.destroy(taxon_with_5_products)
76
- element.save!
77
- end
78
-
79
- it "resets positions" do
80
- expect positions_to_be_valid(taxon_with_5_products)
81
- end
82
- end
83
-
84
- context "replacing product's taxons" do
85
- before :each do
86
- element = taxon_with_5_products.products[1]
87
- element.taxons = []
88
- element.save!
89
- end
90
-
91
- it "resets positions" do
92
- expect positions_to_be_valid(taxon_with_5_products)
93
- end
94
- end
95
-
96
- context "destroying classification" do
97
- before :each do
98
- classification = taxon_with_5_products.classifications[1]
99
- classification.destroy
100
- end
101
-
102
- it "resets positions" do
103
- expect positions_to_be_valid(taxon_with_5_products)
104
- end
105
- end
106
-
107
- it "touches the product" do
108
- taxon = taxon_with_5_products
109
- classification = taxon.classifications.first
110
- product = classification.product
111
- product.update_columns(updated_at: 1.day.ago)
112
- expect {
113
- classification.touch
114
- }.to change { product.reload.updated_at }
115
- end
116
-
117
- it "touches the taxon" do
118
- taxon = taxon_with_5_products
119
- classification = taxon.classifications.first
120
- taxon.update_columns(updated_at: 1.day.ago)
121
- expect {
122
- classification.touch
123
- }.to change { taxon.reload.updated_at }
124
- end
125
- end
126
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- RSpec.describe DisplayMoney do
7
- let(:test_class) do
8
- Class.new do
9
- extend DisplayMoney
10
- def total; 10.0; end
11
- end
12
- end
13
-
14
- describe ".money_methods" do
15
- before { test_class.money_methods :total }
16
-
17
- context "currency is not defined" do
18
- it "generates a display_method that builds a Spree::Money without options" do
19
- expect(test_class.new.display_total).to eq Spree::Money.new(10.0)
20
- end
21
- end
22
-
23
- context "currency is defined" do
24
- before { test_class.class_eval { def currency; "USD"; end } }
25
-
26
- it "generates a display_* method that builds a Spree::Money with currency" do
27
- expect(test_class.new.display_total).to eq Spree::Money.new(10.0, currency: "USD")
28
- end
29
- end
30
-
31
- context "with multiple + options" do
32
- before do
33
- test_class.class_eval { def amount; 20.0; end }
34
- test_class.money_methods :total, amount: { no_cents: true }
35
- end
36
-
37
- it "generates a display_* method that builds a Spree::Money with the specified options" do
38
- expect(test_class.new.display_total).to eq Spree::Money.new(10.0)
39
- expect(test_class.new.display_amount).to eq Spree::Money.new(20.0, no_cents: true)
40
- end
41
- end
42
- end
43
- end
44
- end
@@ -1,52 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::OrderedPropertyValueList do
6
- #
7
- # Using ProductProperty as a subject
8
- # since it includes OrderedPropertyValueList
9
- #
10
-
11
- context 'positioning' do
12
- let(:product_1) { create(:product) }
13
- let!(:property_1) { create(:product_property, product: product_1) }
14
- let!(:property_2) { create(:product_property, product: product_1) }
15
-
16
- let(:product_2) { create(:product) }
17
- let!(:property_3) { create(:product_property, product: product_2) }
18
- let!(:property_4) { create(:product_property, product: product_2) }
19
-
20
- before do
21
- property_1.update_attribute(:position, 0)
22
- property_2.update_attribute(:position, 1)
23
- property_3.update_attribute(:position, 0)
24
- property_4.update_attribute(:position, 1)
25
- end
26
-
27
- it 'scopes position to the product' do
28
- expect(property_1.reload.position).to eq(0)
29
- expect(property_2.reload.position).to eq(1)
30
- expect(property_3.reload.position).to eq(0)
31
- expect(property_4.reload.position).to eq(1)
32
- end
33
- end
34
-
35
- context "validations" do
36
- let(:product_property) { create(:product_property) }
37
-
38
- # Only MySQL stores or stores that were migrated prior to the Rails 4.2
39
- # upgrade have length limitations on "value":
40
- # > The PostgreSQL and SQLite adapters no longer add a default limit of 255
41
- # > characters on string columns.
42
- # http://guides.rubyonrails.org/4_2_release_notes.html#active-record-notable-changes
43
- # https://github.com/rails/rails/pull/14579
44
- if Spree::ProductProperty.columns_hash['value'].limit
45
- it "should validate length of value" do
46
- overflow_length = Spree::ProductProperty.columns_hash['value'].limit + 1
47
- product_property.value = "x" * overflow_length
48
- expect(product_property).not_to be_valid
49
- end
50
- end
51
- end
52
- end