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,56 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::TaxCalculator::Default do
6
- let(:shipping_address) { FactoryBot.create(:address, state: new_york) }
7
- let(:order) { FactoryBot.create(:order, ship_address: shipping_address, state: "delivery") }
8
-
9
- let(:new_york) { FactoryBot.create(:state, state_code: "NY") }
10
- let(:new_york_zone) { FactoryBot.create(:zone, states: [new_york]) }
11
-
12
- let(:books_category) { FactoryBot.create(:tax_category, name: "Books") }
13
- let!(:book_tax_rate) do
14
- FactoryBot.create(
15
- :tax_rate,
16
- name: "New York Sales Tax",
17
- tax_categories: [books_category],
18
- zone: new_york_zone,
19
- included_in_price: false,
20
- amount: 0.05
21
- )
22
- end
23
-
24
- before do
25
- book = FactoryBot.create(
26
- :product,
27
- price: 20,
28
- name: "Book",
29
- tax_category: books_category,
30
- )
31
-
32
- order.contents.add(book.master)
33
- end
34
-
35
- let(:calculator) { described_class.new(order) }
36
-
37
- describe '#calculate' do
38
- subject(:calculated_taxes) { calculator.calculate }
39
-
40
- it { is_expected.to be_a Spree::Tax::OrderTax }
41
-
42
- it "has tax information for the line item", aggregate_failures: true do
43
- expect(calculated_taxes.line_item_taxes.count).to eq 1
44
-
45
- line_item_tax = calculated_taxes.line_item_taxes.first
46
- expect(line_item_tax.amount).to eq 1
47
- expect(line_item_tax.included_in_price).to be false
48
- expect(line_item_tax.tax_rate).to eq book_tax_rate
49
- expect(line_item_tax.label).to eq "New York Sales Tax 5.000%"
50
- end
51
-
52
- it "has tax information for the shipments" do
53
- expect(calculated_taxes.shipment_taxes).to be_empty
54
- end
55
- end
56
- end
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::TaxCategory, type: :model do
6
- context 'default tax category' do
7
- let(:tax_category) { create(:tax_category) }
8
- let(:new_tax_category) { create(:tax_category) }
9
-
10
- before do
11
- tax_category.update_column(:is_default, true)
12
- end
13
-
14
- it "should undefault the previous default tax category" do
15
- new_tax_category.update({ is_default: true })
16
- expect(new_tax_category.is_default).to be true
17
-
18
- tax_category.reload
19
- expect(tax_category.is_default).to be false
20
- end
21
-
22
- it "should undefault the previous default tax category except when updating the existing default tax category" do
23
- tax_category.update_column(:description, "Updated description")
24
-
25
- tax_category.reload
26
- expect(tax_category.is_default).to be true
27
- end
28
- end
29
-
30
- context ".discard" do
31
- let(:tax_category) { create(:tax_category) }
32
-
33
- it "set deleted_at correctly" do
34
- tax_category.discard
35
- expect(tax_category.deleted_at).not_to be_blank
36
- end
37
-
38
- context "when there are tax_rates associated" do
39
- let(:tax_rate) { create(:tax_rate) }
40
- let(:tax_category) { tax_rate.tax_categories.first }
41
-
42
- it 'correctly discard association records' do
43
- expect { tax_category.discard }
44
- .to change { tax_category.tax_rates.size }
45
- .from(1)
46
- .to(0)
47
- end
48
- end
49
- end
50
- end
@@ -1,317 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::TaxRate, type: :model do
6
- it { is_expected.to respond_to(:shipping_rate_taxes) }
7
-
8
- context '.for_address' do
9
- let(:germany) { create(:country, iso: "DE") }
10
- let(:germany_zone) { create(:zone, countries: [germany]) }
11
- let!(:german_tax) { create(:tax_rate, zone: germany_zone) }
12
- let(:france) { create(:country, iso: "FR") }
13
- let(:france_zone) { create(:zone, countries: [france]) }
14
- let!(:french_tax) { create(:tax_rate, zone: france_zone) }
15
- let(:eu_zone) { create(:zone, countries: [germany, france]) }
16
- let!(:eu_tax) { create(:tax_rate, zone: eu_zone) }
17
- let(:usa) { create(:country, iso: "US") }
18
- let(:us_zone) { create(:zone, countries: [usa]) }
19
- let!(:us_tax) { create(:tax_rate, zone: us_zone) }
20
- let(:new_york) { create(:state, country: usa, state_code: "NY") }
21
- let(:new_york_zone) { create(:zone, states: [new_york]) }
22
- let!(:new_york_tax) { create(:tax_rate, zone: new_york_zone) }
23
- let(:alabama) { create(:state, country: usa, state_code: "AL") }
24
- let(:alabama_zone) { create(:zone, states: [alabama]) }
25
- let!(:alabama_tax) { create(:tax_rate, zone: alabama_zone) }
26
-
27
- subject(:rates_for_address) { Spree::TaxRate.for_address(address) }
28
-
29
- context 'when address is in germany' do
30
- let(:address) { create(:address, country_iso_code: "DE") }
31
- it { is_expected.to contain_exactly(german_tax, eu_tax) }
32
- end
33
-
34
- context 'when address is in france' do
35
- let(:address) { create(:address, country_iso_code: "FR") }
36
- it { is_expected.to contain_exactly(french_tax, eu_tax) }
37
- end
38
-
39
- context 'when address is in new york' do
40
- let(:address) { create(:address, country_iso_code: "US", state_code: "NY") }
41
- it { is_expected.to contain_exactly(new_york_tax, us_tax) }
42
- end
43
-
44
- context 'when address is in alabama' do
45
- let(:address) { create(:address, country_iso_code: "US", state_code: "AL") }
46
- it { is_expected.to contain_exactly(alabama_tax, us_tax) }
47
- end
48
-
49
- context 'when address is in alaska' do
50
- let(:address) { create(:address, country_iso_code: "US", state_code: "AK") }
51
- it { is_expected.to contain_exactly(us_tax) }
52
- end
53
- end
54
-
55
- context ".for_zone" do
56
- subject(:rates_for_zone) { Spree::TaxRate.for_zone(zone) }
57
-
58
- context "when zone is nil" do
59
- let(:zone) { nil }
60
-
61
- it "should return an empty array" do
62
- expect(subject).to eq([])
63
- end
64
- end
65
-
66
- context "when no rate zones match the tax zone" do
67
- let(:rate_zone) { create(:zone, :with_country) }
68
- let!(:rate) { create :tax_rate, zone: rate_zone }
69
-
70
- context "when there is no default tax zone" do
71
- context "and the zone has no shared members with the rate zone" do
72
- let(:zone) { create(:zone, :with_country) }
73
-
74
- it "should return an empty array" do
75
- expect(subject).to eq([])
76
- end
77
- end
78
-
79
- context "and the zone has shared members with the rate zone" do
80
- let(:zone) { create(:zone, countries: rate_zone.countries) }
81
-
82
- it "should return the rate that matches the rate zone" do
83
- expect(subject).to eq([rate])
84
- end
85
- end
86
-
87
- context "there is many rates that match the zone" do
88
- let!(:rate2) { create :tax_rate, zone: rate_zone }
89
- let(:zone) { create(:zone, countries: rate_zone.countries) }
90
-
91
- it "should return all rates that match the rate zone" do
92
- expect(subject).to match_array([rate, rate2])
93
- end
94
- end
95
-
96
- context "when the tax_zone is contained within a rate zone" do
97
- let(:country1) { create :country }
98
- let(:country2) { create :country }
99
- let(:rate_zone) { create(:zone, countries: [country1, country2]) }
100
- let(:zone) { create(:zone, countries: [country1]) }
101
-
102
- it "should return the rate zone" do
103
- expect(subject).to eq([rate])
104
- end
105
- end
106
- end
107
-
108
- context "when there is a default tax zone" do
109
- let(:default_zone) { create(:zone, :with_country) }
110
- let(:included_in_price) { false }
111
- let!(:rate) do
112
- create(:tax_rate, zone: default_zone, included_in_price: included_in_price)
113
- end
114
-
115
- context "when the zone is the default zone" do
116
- let(:zone) { default_zone }
117
-
118
- context "when the tax is not a VAT" do
119
- it { is_expected.to eq([rate]) }
120
- end
121
-
122
- context "when the tax is a VAT" do
123
- let(:included_in_price) { true }
124
-
125
- it { is_expected.to eq([rate]) }
126
- end
127
- end
128
-
129
- context "when the zone is outside the default zone" do
130
- let(:zone) { create(:zone, :with_country) }
131
-
132
- it { is_expected.to be_empty }
133
- end
134
- end
135
- end
136
- end
137
-
138
- describe "#adjust" do
139
- let(:taxable_address) { create(:address) }
140
- let(:order) { create(:order_with_line_items, ship_address: order_address) }
141
- let(:tax_zone) { create(:zone, countries: [taxable_address.country]) }
142
- let(:foreign_address) { create(:address, country_iso_code: "CA") }
143
- let!(:foreign_zone) { create(:zone, countries: [foreign_address.country]) }
144
- let(:tax_rate) do
145
- create(:tax_rate,
146
- included_in_price: included_in_price,
147
- show_rate_in_label: show_rate_in_label,
148
- amount: 0.125,
149
- zone: tax_zone)
150
- end
151
-
152
- let(:item) { order.line_items.first }
153
-
154
- describe 'adjustments' do
155
- before do
156
- expect(Spree::Deprecation).to receive(:warn)
157
- tax_rate.adjust(nil, item)
158
- end
159
-
160
- let(:adjustment_label) { item.adjustments.tax.first.label }
161
-
162
- context 'for included rates' do
163
- let(:included_in_price) { true }
164
- let(:order_address) { taxable_address }
165
-
166
- context 'with show rate in label' do
167
- let(:show_rate_in_label) { true }
168
-
169
- it 'shows the rate in the label' do
170
- expect(adjustment_label).to include("12.500%")
171
- end
172
-
173
- it 'adds a remark that the rate is included in the price' do
174
- expect(adjustment_label).to include("Included in Price")
175
- end
176
- end
177
-
178
- context 'with show rate in label turned off' do
179
- let(:show_rate_in_label) { false }
180
-
181
- it 'does not show the rate in the label' do
182
- expect(adjustment_label).not_to include("12.500%")
183
- end
184
-
185
- it 'does not have two consecutive spaces' do
186
- expect(adjustment_label).not_to include(" ")
187
- end
188
-
189
- it 'adds a remark that the rate is included in the price' do
190
- expect(adjustment_label).to include("Included in Price")
191
- end
192
- end
193
- end
194
-
195
- context 'for additional rates' do
196
- let(:included_in_price) { false }
197
- let(:order_address) { taxable_address }
198
-
199
- context 'with show rate in label' do
200
- let(:show_rate_in_label) { true }
201
-
202
- it 'shows the rate in the label' do
203
- expect(adjustment_label).to include("12.500%")
204
- end
205
-
206
- it 'does not add a remark that the rate is included in the price' do
207
- expect(adjustment_label).not_to include("Included in Price")
208
- end
209
- end
210
-
211
- context 'with show rate in label turned off' do
212
- let(:show_rate_in_label) { false }
213
-
214
- it 'does not show the rate in the label' do
215
- expect(adjustment_label).not_to include("12.500%")
216
- end
217
-
218
- it 'does not add a remark that the rate is included in the price' do
219
- expect(adjustment_label).not_to include("Included in Price")
220
- end
221
- end
222
- end
223
- end
224
- end
225
-
226
- describe "#active?" do
227
- subject(:rate) { create(:tax_rate, validity).active? }
228
-
229
- context "when validity is not set" do
230
- let(:validity) { {} }
231
-
232
- it { is_expected.to eq(true) }
233
- end
234
-
235
- context "when starts_at is set" do
236
- context "now" do
237
- let(:validity) { { starts_at: Time.current } }
238
-
239
- it { is_expected.to eq(true) }
240
- end
241
-
242
- context "in the past" do
243
- let(:validity) { { starts_at: 1.day.ago } }
244
-
245
- it { is_expected.to eq(true) }
246
- end
247
-
248
- context "in the future" do
249
- let(:validity) { { starts_at: 1.day.from_now } }
250
-
251
- it { is_expected.to eq(false) }
252
- end
253
- end
254
-
255
- context "when expires_at is set" do
256
- context "now" do
257
- let(:validity) { { expires_at: Time.current } }
258
-
259
- it { is_expected.to eq(false) }
260
- end
261
-
262
- context "in the past" do
263
- let(:validity) { { expires_at: 1.day.ago } }
264
-
265
- it { is_expected.to eq(false) }
266
- end
267
-
268
- context "in the future" do
269
- let(:validity) { { expires_at: 1.day.from_now } }
270
-
271
- it { is_expected.to eq(true) }
272
- end
273
- end
274
-
275
- context "when starts_at and expires_at are set" do
276
- context "so that today is in range" do
277
- let(:validity) { { starts_at: 1.day.ago, expires_at: 1.day.from_now } }
278
-
279
- it { is_expected.to eq(true) }
280
- end
281
-
282
- context "both in the past" do
283
- let(:validity) { { starts_at: 2.days.ago, expires_at: 1.day.ago } }
284
-
285
- it { is_expected.to eq(false) }
286
- end
287
-
288
- context "both in the future" do
289
- let(:validity) { { starts_at: 1.day.from_now, expires_at: 2.days.from_now } }
290
-
291
- it { is_expected.to eq(false) }
292
- end
293
- end
294
- end
295
-
296
- describe '#tax_category (deprecated)' do
297
- let(:tax_rate) { create(:tax_rate, tax_categories: [tax_category]) }
298
- let(:tax_category) { create(:tax_category) }
299
-
300
- it "returns the first tax category" do
301
- tax_category = Spree::Deprecation.silence { tax_rate.tax_category }
302
- expect(tax_category).to eq(tax_category)
303
- end
304
- end
305
-
306
- describe '#tax_category= (deprecated)' do
307
- let(:tax_rate) { Spree::TaxRate.new }
308
- let(:tax_category) { create(:tax_category) }
309
-
310
- it "can assign the tax categories" do
311
- Spree::Deprecation.silence {
312
- tax_rate.tax_category = tax_category
313
- }
314
- expect(tax_rate.tax_categories).to eq([tax_category])
315
- end
316
- end
317
- end
@@ -1,197 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Taxon, type: :model do
6
- context "#destroy" do
7
- subject(:nested_set_options) { described_class.acts_as_nested_set_options }
8
-
9
- it "should destroy all associated taxons" do
10
- expect(nested_set_options[:dependent]).to eq :destroy
11
- end
12
- end
13
-
14
- describe '#to_param' do
15
- let(:taxon) { FactoryBot.build(:taxon, name: "Ruby on Rails") }
16
-
17
- subject { super().to_param }
18
- it { is_expected.to eql taxon.permalink }
19
- end
20
-
21
- context "set_permalink" do
22
- let(:taxon) { FactoryBot.build(:taxon, name: "Ruby on Rails") }
23
-
24
- it "should set permalink correctly when no parent present" do
25
- taxon.set_permalink
26
- expect(taxon.permalink).to eql "ruby-on-rails"
27
- end
28
-
29
- context "updating a taxon permalink" do
30
- it 'parameterizes permalink correctly' do
31
- taxon.save!
32
- taxon.update(permalink: 'spécial&charactèrs')
33
- expect(taxon.permalink).to eql "special-characters"
34
- end
35
- end
36
-
37
- context "with parent taxon" do
38
- let(:parent) { FactoryBot.build(:taxon, permalink: "brands") }
39
- before { allow(taxon).to receive_messages parent: parent }
40
-
41
- it "should set permalink correctly when taxon has parent" do
42
- taxon.set_permalink
43
- expect(taxon.permalink).to eql "brands/ruby-on-rails"
44
- end
45
-
46
- it "should set permalink correctly with existing permalink present" do
47
- taxon.permalink = "b/rubyonrails"
48
- taxon.set_permalink
49
- expect(taxon.permalink).to eql "brands/rubyonrails"
50
- end
51
-
52
- it 'parameterizes permalink correctly' do
53
- taxon.save!
54
- taxon.update(permalink_part: 'spécial&charactèrs')
55
- expect(taxon.reload.permalink).to eql "brands/special-characters"
56
- end
57
-
58
- # Regression test for https://github.com/spree/spree/issues/3390
59
- context "setting a new node sibling position via :child_index=" do
60
- let(:idx) { rand(0..100) }
61
- before { allow(parent).to receive(:move_to_child_with_index) }
62
-
63
- context "taxon is not new" do
64
- before { allow(taxon).to receive(:new_record?).and_return(false) }
65
-
66
- it "passes the desired index move_to_child_with_index of :parent " do
67
- expect(taxon).to receive(:move_to_child_with_index).with(parent, idx)
68
-
69
- taxon.child_index = idx
70
- end
71
- end
72
- end
73
- end
74
- end
75
-
76
- context "updating permalink" do
77
- let(:taxonomy) { create(:taxonomy, name: 't') }
78
- let(:root) { taxonomy.root }
79
- let(:taxon1) { create(:taxon, name: 't1', taxonomy: taxonomy, parent: root) }
80
- let(:taxon2) { create(:taxon, name: 't2', taxonomy: taxonomy, parent: root) }
81
- let(:taxon2_child) { create(:taxon, name: 't2_child', taxonomy: taxonomy, parent: taxon2) }
82
-
83
- context "changing parent" do
84
- subject do
85
- -> { taxon2.update!(parent: taxon1) }
86
- end
87
-
88
- it "changes own permalink" do
89
- is_expected.to change{ taxon2.reload.permalink }.from('t/t2').to('t/t1/t2')
90
- end
91
-
92
- it "changes child's permalink" do
93
- is_expected.to change{ taxon2_child.reload.permalink }.from('t/t2/t2_child').to('t/t1/t2/t2_child')
94
- end
95
- end
96
-
97
- context "changing own permalink" do
98
- subject do
99
- -> { taxon2.update!(permalink: 'foo') }
100
- end
101
-
102
- it "changes own permalink" do
103
- is_expected.to change{ taxon2.reload.permalink }.from('t/t2').to('t/foo')
104
- end
105
-
106
- it "changes child's permalink" do
107
- is_expected.to change{ taxon2_child.reload.permalink }.from('t/t2/t2_child').to('t/foo/t2_child')
108
- end
109
- end
110
-
111
- context "changing own permalink part" do
112
- subject do
113
- -> { taxon2.update!(permalink_part: 'foo') }
114
- end
115
-
116
- it "changes own permalink" do
117
- is_expected.to change{ taxon2.reload.permalink }.from('t/t2').to('t/foo')
118
- end
119
-
120
- it "changes child's permalink" do
121
- is_expected.to change{ taxon2_child.reload.permalink }.from('t/t2/t2_child').to('t/foo/t2_child')
122
- end
123
- end
124
-
125
- context "changing parent and own permalink" do
126
- subject do
127
- -> { taxon2.update!(parent: taxon1, permalink: 'foo') }
128
- end
129
-
130
- it "changes own permalink" do
131
- is_expected.to change{ taxon2.reload.permalink }.from('t/t2').to('t/t1/foo')
132
- end
133
-
134
- it "changes child's permalink" do
135
- is_expected.to change{ taxon2_child.reload.permalink }.from('t/t2/t2_child').to('t/t1/foo/t2_child')
136
- end
137
- end
138
-
139
- context 'changing parent permalink with special characters ' do
140
- subject do
141
- -> { taxon2.update!(permalink: 'spécial&charactèrs') }
142
- end
143
-
144
- it 'changes own permalink with parameterized characters' do
145
- is_expected.to change{ taxon2.reload.permalink }.from('t/t2').to('t/special-characters')
146
- end
147
-
148
- it 'changes child permalink with parameterized characters' do
149
- is_expected.to change{ taxon2_child.reload.permalink }.from('t/t2/t2_child').to('t/special-characters/t2_child')
150
- end
151
- end
152
- end
153
-
154
- # Regression test for https://github.com/spree/spree/issues/2620
155
- context "creating a child node using first_or_create" do
156
- let(:taxonomy) { create(:taxonomy) }
157
-
158
- it "does not error out" do
159
- taxonomy.root.children.unscoped.where(name: "Some name").first_or_create
160
- end
161
- end
162
-
163
- context 'leaves of the taxon tree' do
164
- let(:taxonomy) { create(:taxonomy, name: 't') }
165
- let(:root) { taxonomy.root }
166
- let(:taxon) { create(:taxon, name: 't1', taxonomy: taxonomy, parent: root) }
167
- let(:child) { create(:taxon, name: 'child taxon', taxonomy: taxonomy, parent: taxon) }
168
- let(:grandchild) { create(:taxon, name: 'grandchild taxon', taxonomy: taxonomy, parent: child) }
169
- let(:product1) { create(:product) }
170
- let(:product2) { create(:product) }
171
- let(:product3) { create(:product) }
172
- before do
173
- product1.taxons << taxon
174
- product2.taxons << child
175
- product3.taxons << grandchild
176
- taxon.reload
177
-
178
- [product1, product2, product3].each { |p| 2.times.each { create(:variant, product: p) } }
179
- end
180
-
181
- describe '#all_products' do
182
- it 'returns all descendant products' do
183
- products = taxon.all_products
184
- expect(products.count).to eq(3)
185
- expect(products).to match_array([product1, product2, product3])
186
- end
187
- end
188
-
189
- describe '#all_variants' do
190
- it 'returns all descendant variants' do
191
- variants = taxon.all_variants
192
- expect(variants.count).to eq(9)
193
- expect(variants).to match_array([product1, product2, product3].map{ |p| p.variants_including_master }.flatten)
194
- end
195
- end
196
- end
197
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Taxonomy, type: :model do
6
- context "#destroy" do
7
- subject(:association_options) do
8
- described_class.reflect_on_association(:root).options
9
- end
10
-
11
- it "should destroy all associated taxons" do
12
- expect(association_options[:dependent]).to eq :destroy
13
- end
14
- end
15
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe "Spree::Taxon::PaperclipAttachment", type: :model do
6
- describe "#destroy_attachment" do
7
- let(:taxon) { create(:taxon) }
8
-
9
- context "when trying to destroy a valid attachment definition" do
10
- context "and taxon has a file attached " do
11
- it "removes the attachment" do
12
- taxon.update(icon: File.new(Rails.root.join('..', '..', 'spec', 'fixtures', 'thinking-cat.jpg')))
13
- expect(taxon.destroy_attachment(:icon)).to be_truthy
14
- end
15
- end
16
- context "and the taxon does not have any file attached yet" do
17
- it "returns false" do
18
- expect(taxon.destroy_attachment(:icon)).to be_falsey
19
- end
20
- end
21
- end
22
-
23
- context "when trying to destroy an invalid attachment" do
24
- it 'returns false' do
25
- expect(taxon.destroy_attachment(:foo)).to be_falsey
26
- end
27
- end
28
- end
29
- end