solidus_core 2.9.6 → 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 (575) 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/helpers/spree/base_helper.rb +4 -4
  5. data/app/helpers/spree/products_helper.rb +2 -1
  6. data/app/jobs/spree/promotion_code_batch_job.rb +2 -2
  7. data/app/mailers/spree/base_mailer.rb +4 -0
  8. data/app/mailers/spree/order_mailer.rb +1 -1
  9. data/app/models/concerns/spree/active_storage_adapter.rb +116 -0
  10. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +69 -0
  11. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
  12. data/app/models/concerns/spree/default_price.rb +1 -1
  13. data/app/models/concerns/spree/soft_deletable.rb +18 -0
  14. data/app/models/concerns/spree/user_address_book.rb +87 -33
  15. data/app/models/concerns/spree/user_methods.rb +5 -4
  16. data/app/models/spree/ability.rb +34 -10
  17. data/app/models/spree/address.rb +103 -30
  18. data/app/models/spree/address/name.rb +49 -0
  19. data/app/models/spree/address/state_validator.rb +71 -0
  20. data/app/models/spree/adjustment.rb +21 -10
  21. data/app/models/spree/asset.rb +1 -1
  22. data/app/models/spree/base.rb +1 -2
  23. data/app/models/spree/calculator.rb +1 -1
  24. data/app/models/spree/calculator/default_tax.rb +1 -1
  25. data/app/models/spree/calculator/percent_per_item.rb +4 -4
  26. data/app/models/spree/calculator/price_sack.rb +1 -1
  27. data/app/models/spree/calculator/shipping/flexi_rate.rb +2 -2
  28. data/app/models/spree/calculator/tiered_flat_rate.rb +5 -5
  29. data/app/models/spree/calculator/tiered_percent.rb +6 -6
  30. data/app/models/spree/carton.rb +3 -3
  31. data/app/models/spree/classification.rb +2 -2
  32. data/app/models/spree/credit_card.rb +6 -6
  33. data/app/models/spree/customer_return.rb +5 -3
  34. data/app/models/spree/exchange.rb +1 -1
  35. data/app/models/spree/image/active_storage_attachment.rb +21 -0
  36. data/app/models/spree/image/paperclip_attachment.rb +1 -1
  37. data/app/models/spree/inventory_unit.rb +5 -23
  38. data/app/models/spree/line_item.rb +16 -7
  39. data/app/models/spree/line_item_action.rb +2 -2
  40. data/app/models/spree/log_entry.rb +1 -1
  41. data/app/models/spree/option_type.rb +1 -1
  42. data/app/models/spree/option_value.rb +3 -3
  43. data/app/models/spree/option_values_variant.rb +2 -2
  44. data/app/models/spree/order.rb +85 -30
  45. data/app/models/spree/order/checkout.rb +2 -1
  46. data/app/models/spree/order/payments.rb +2 -2
  47. data/app/models/spree/order_cancellations.rb +1 -1
  48. data/app/models/spree/order_capturing.rb +2 -2
  49. data/app/models/spree/order_contents.rb +2 -2
  50. data/app/models/spree/order_inventory.rb +16 -4
  51. data/app/models/spree/order_merger.rb +6 -4
  52. data/app/models/spree/order_mutex.rb +1 -1
  53. data/app/models/spree/order_promotion.rb +4 -4
  54. data/app/models/spree/order_shipping.rb +1 -1
  55. data/app/models/spree/order_taxation.rb +3 -3
  56. data/app/models/spree/order_updater.rb +11 -10
  57. data/app/models/spree/payment.rb +10 -47
  58. data/app/models/spree/payment/cancellation.rb +3 -3
  59. data/app/models/spree/payment/processing.rb +57 -33
  60. data/app/models/spree/payment_capture_event.rb +1 -1
  61. data/app/models/spree/payment_method.rb +13 -11
  62. data/app/models/spree/payment_method/bogus_credit_card.rb +1 -1
  63. data/app/models/spree/payment_source.rb +1 -1
  64. data/app/models/spree/preference.rb +1 -1
  65. data/app/models/spree/price.rb +3 -9
  66. data/app/models/spree/product.rb +24 -19
  67. data/app/models/spree/product/scopes.rb +223 -210
  68. data/app/models/spree/product_option_type.rb +2 -2
  69. data/app/models/spree/product_promotion_rule.rb +2 -2
  70. data/app/models/spree/product_property.rb +2 -2
  71. data/app/models/spree/promotion.rb +46 -20
  72. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +1 -1
  73. data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
  74. data/app/models/spree/promotion/rules/option_value.rb +2 -2
  75. data/app/models/spree/promotion/rules/product.rb +3 -3
  76. data/app/models/spree/promotion_action.rb +3 -9
  77. data/app/models/spree/promotion_chooser.rb +2 -2
  78. data/app/models/spree/promotion_code.rb +17 -11
  79. data/app/models/spree/promotion_code/batch_builder.rb +3 -3
  80. data/app/models/spree/promotion_code_batch.rb +2 -2
  81. data/app/models/spree/promotion_handler/coupon.rb +2 -2
  82. data/app/models/spree/promotion_rule.rb +3 -3
  83. data/app/models/spree/promotion_rule_role.rb +3 -3
  84. data/app/models/spree/promotion_rule_store.rb +2 -2
  85. data/app/models/spree/promotion_rule_taxon.rb +2 -2
  86. data/app/models/spree/promotion_rule_user.rb +2 -2
  87. data/app/models/spree/refund.rb +59 -17
  88. data/app/models/spree/reimbursement.rb +32 -13
  89. data/app/models/spree/reimbursement/credit.rb +2 -2
  90. data/app/models/spree/reimbursement/reimbursement_type_engine.rb +1 -1
  91. data/app/models/spree/reimbursement_tax_calculator.rb +1 -1
  92. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +12 -5
  93. data/app/models/spree/return_authorization.rb +5 -11
  94. data/app/models/spree/return_item.rb +33 -61
  95. data/app/models/spree/return_item/eligibility_validator/default.rb +1 -1
  96. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
  97. data/app/models/spree/role.rb +1 -1
  98. data/app/models/spree/role_user.rb +2 -2
  99. data/app/models/spree/shipment.rb +9 -43
  100. data/app/models/spree/shipping_calculator.rb +1 -5
  101. data/app/models/spree/shipping_manifest.rb +5 -5
  102. data/app/models/spree/shipping_method.rb +3 -10
  103. data/app/models/spree/shipping_method_category.rb +2 -2
  104. data/app/models/spree/shipping_method_stock_location.rb +2 -2
  105. data/app/models/spree/shipping_method_zone.rb +2 -2
  106. data/app/models/spree/shipping_rate.rb +2 -2
  107. data/app/models/spree/shipping_rate_tax.rb +3 -3
  108. data/app/models/spree/state.rb +2 -2
  109. data/app/models/spree/state_change.rb +2 -2
  110. data/app/models/spree/stock/differentiator.rb +1 -1
  111. data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
  112. data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
  113. data/app/models/spree/stock/package.rb +2 -2
  114. data/app/models/spree/stock/simple_coordinator.rb +1 -3
  115. data/app/models/spree/stock_item.rb +4 -10
  116. data/app/models/spree/stock_location.rb +2 -2
  117. data/app/models/spree/stock_movement.rb +4 -2
  118. data/app/models/spree/stock_quantities.rb +13 -12
  119. data/app/models/spree/store.rb +1 -1
  120. data/app/models/spree/store_credit.rb +9 -15
  121. data/app/models/spree/store_credit_category.rb +30 -3
  122. data/app/models/spree/store_credit_event.rb +4 -10
  123. data/app/models/spree/store_credit_reason.rb +0 -4
  124. data/app/models/spree/store_payment_method.rb +2 -2
  125. data/app/models/spree/store_shipping_method.rb +2 -2
  126. data/app/models/spree/tax/tax_helpers.rb +1 -1
  127. data/app/models/spree/tax_calculator/default.rb +0 -4
  128. data/app/models/spree/tax_calculator/shipping_rate.rb +0 -3
  129. data/app/models/spree/tax_category.rb +2 -8
  130. data/app/models/spree/tax_rate.rb +12 -8
  131. data/app/models/spree/tax_rate_tax_category.rb +2 -2
  132. data/app/models/spree/taxon.rb +1 -1
  133. data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
  134. data/app/models/spree/taxon/paperclip_attachment.rb +13 -0
  135. data/app/models/spree/unit_cancel.rb +5 -2
  136. data/app/models/spree/user_address.rb +10 -4
  137. data/app/models/spree/user_last_url_storer.rb +46 -0
  138. data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +36 -0
  139. data/app/models/spree/user_stock_location.rb +2 -2
  140. data/app/models/spree/variant.rb +17 -23
  141. data/app/models/spree/variant/scopes.rb +37 -29
  142. data/app/models/spree/variant_property_rule.rb +6 -2
  143. data/app/models/spree/variant_property_rule_condition.rb +2 -2
  144. data/app/models/spree/variant_property_rule_value.rb +2 -2
  145. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +9 -4
  146. data/app/models/spree/wallet_payment_source.rb +2 -2
  147. data/app/models/spree/zone.rb +2 -2
  148. data/app/models/spree/zone_member.rb +2 -2
  149. data/config/initializers/inflections.rb +5 -0
  150. data/config/initializers/money.rb +2 -0
  151. data/config/locales/en.yml +78 -8
  152. data/db/default/spree/countries.rb +1 -1
  153. data/db/default/spree/states.rb +12 -4
  154. data/db/default/spree/store_credit.rb +2 -2
  155. data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
  156. data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
  157. data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
  158. data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
  159. data/lib/generators/solidus/install/install_generator.rb +253 -0
  160. data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +42 -3
  161. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
  162. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
  163. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
  164. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
  165. data/lib/generators/spree/dummy/dummy_generator.rb +2 -0
  166. data/lib/generators/spree/install/install_generator.rb +7 -189
  167. data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
  168. data/lib/spree/app_configuration.rb +135 -54
  169. data/lib/spree/awesome_nested_set_override.rb +44 -0
  170. data/lib/spree/core.rb +6 -0
  171. data/lib/spree/core/controller_helpers/auth.rb +18 -17
  172. data/lib/spree/core/controller_helpers/current_host.rb +17 -0
  173. data/lib/spree/core/controller_helpers/order.rb +8 -7
  174. data/lib/spree/core/engine.rb +41 -4
  175. data/lib/spree/core/importer/order.rb +47 -33
  176. data/lib/spree/core/importer/product.rb +2 -2
  177. data/lib/spree/core/permalinks.rb +1 -3
  178. data/lib/spree/core/product_filters.rb +16 -15
  179. data/lib/spree/core/role_configuration.rb +2 -2
  180. data/lib/spree/core/search/variant.rb +1 -1
  181. data/lib/spree/core/state_machines.rb +97 -0
  182. data/lib/spree/core/state_machines/inventory_unit.rb +42 -0
  183. data/lib/spree/core/state_machines/order.rb +249 -0
  184. data/lib/spree/core/state_machines/payment.rb +61 -0
  185. data/lib/spree/core/state_machines/reimbursement.rb +33 -0
  186. data/lib/spree/core/state_machines/return_authorization.rb +32 -0
  187. data/lib/spree/core/state_machines/return_item/acceptance_status.rb +51 -0
  188. data/lib/spree/core/state_machines/return_item/reception_status.rb +42 -0
  189. data/lib/spree/core/state_machines/shipment.rb +58 -0
  190. data/lib/spree/core/stock_configuration.rb +1 -0
  191. data/lib/spree/core/validators/email.rb +1 -8
  192. data/lib/spree/core/version.rb +1 -1
  193. data/lib/spree/encryptor.rb +25 -0
  194. data/lib/spree/event.rb +40 -7
  195. data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
  196. data/lib/spree/event/configuration.rb +11 -6
  197. data/lib/spree/event/subscriber.rb +38 -18
  198. data/lib/spree/event/subscriber_registry.rb +92 -0
  199. data/lib/spree/i18n.rb +1 -1
  200. data/lib/spree/mailer_previews/carton_preview.rb +2 -1
  201. data/lib/spree/money.rb +2 -2
  202. data/lib/spree/paranoia_deprecations.rb +32 -12
  203. data/lib/spree/permission_sets/configuration_display.rb +14 -14
  204. data/lib/spree/permission_sets/default_customer.rb +16 -16
  205. data/lib/spree/permission_sets/order_display.rb +11 -11
  206. data/lib/spree/permission_sets/order_management.rb +1 -1
  207. data/lib/spree/permission_sets/product_display.rb +9 -9
  208. data/lib/spree/permission_sets/promotion_display.rb +5 -5
  209. data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
  210. data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
  211. data/lib/spree/permission_sets/stock_display.rb +2 -2
  212. data/lib/spree/permission_sets/stock_management.rb +1 -1
  213. data/lib/spree/permission_sets/user_display.rb +3 -3
  214. data/lib/spree/permission_sets/user_management.rb +7 -3
  215. data/lib/spree/permitted_attributes.rb +7 -6
  216. data/lib/spree/preferences/preferable.rb +4 -3
  217. data/lib/spree/preferences/preferable_class_methods.rb +22 -3
  218. data/lib/spree/preferences/static_model_preferences.rb +2 -2
  219. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  220. data/lib/spree/testing_support/authorization_helpers.rb +1 -0
  221. data/lib/spree/testing_support/blacklist_urls.rb +23 -0
  222. data/lib/spree/testing_support/capybara_ext.rb +3 -0
  223. data/lib/spree/testing_support/common_rake.rb +3 -3
  224. data/lib/spree/testing_support/dummy_app.rb +45 -21
  225. data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
  226. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +6 -4
  227. data/lib/spree/testing_support/factories/address_factory.rb +1 -2
  228. data/lib/spree/testing_support/factories/image_factory.rb +1 -1
  229. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +8 -1
  230. data/lib/spree/testing_support/factories/promotion_factory.rb +13 -0
  231. data/lib/spree/testing_support/factories/refund_factory.rb +1 -0
  232. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  233. data/lib/spree/testing_support/factories/return_item_factory.rb +0 -1
  234. data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -1
  235. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +8 -0
  236. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +1 -0
  237. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +3 -1
  238. data/lib/spree/testing_support/factories/taxon_factory.rb +4 -0
  239. data/lib/spree/testing_support/factories/user_factory.rb +4 -1
  240. data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
  241. data/lib/spree/testing_support/job_helpers.rb +24 -0
  242. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  243. data/lib/spree/testing_support/preferences.rb +3 -1
  244. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  245. data/lib/spree/testing_support/translations.rb +25 -0
  246. data/solidus_core.gemspec +12 -9
  247. metadata +120 -393
  248. data/script/rails +0 -10
  249. data/spec/fixtures/thinking-cat.jpg +0 -0
  250. data/spec/helpers/base_helper_spec.rb +0 -168
  251. data/spec/helpers/products_helper_spec.rb +0 -202
  252. data/spec/helpers/taxons_helper_spec.rb +0 -43
  253. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  254. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  255. data/spec/lib/i18n_spec.rb +0 -97
  256. data/spec/lib/search/base_spec.rb +0 -87
  257. data/spec/lib/search/variant_spec.rb +0 -115
  258. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  259. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  260. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  261. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  262. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  263. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  264. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  265. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  266. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -48
  267. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  268. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  269. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  270. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  271. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -59
  272. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  273. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  274. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  275. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  276. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  277. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  278. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  279. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  280. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  281. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  282. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  283. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  284. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  285. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  286. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  287. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  288. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  289. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  290. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  291. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  292. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  293. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  294. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  295. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  296. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  297. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  298. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  299. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  300. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  301. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  302. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  303. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  304. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  305. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  306. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  307. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  308. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  309. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  310. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  311. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  312. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  313. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  314. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  315. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  316. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  317. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  318. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  319. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  320. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  321. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  322. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  323. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  324. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  325. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  326. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  327. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  328. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  329. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  330. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  331. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  332. data/spec/lib/spree/core/version_spec.rb +0 -19
  333. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  334. data/spec/lib/spree/event_spec.rb +0 -118
  335. data/spec/lib/spree/localized_number_spec.rb +0 -45
  336. data/spec/lib/spree/migrations_spec.rb +0 -32
  337. data/spec/lib/spree/money_spec.rb +0 -298
  338. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  339. data/spec/lib/spree/permitted_attributes_spec.rb +0 -41
  340. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  341. data/spec/lib/tasks/dummy_task.rake +0 -12
  342. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  343. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  344. data/spec/mailers/carton_mailer_spec.rb +0 -44
  345. data/spec/mailers/order_mailer_spec.rb +0 -117
  346. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  347. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  348. data/spec/mailers/test_mailer_spec.rb +0 -13
  349. data/spec/migrate/20190106184413_remove_code_from_spree_promotions_spec.rb +0 -148
  350. data/spec/models/spree/ability_spec.rb +0 -279
  351. data/spec/models/spree/address_spec.rb +0 -376
  352. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  353. data/spec/models/spree/adjustment_spec.rb +0 -339
  354. data/spec/models/spree/asset_spec.rb +0 -25
  355. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  356. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  357. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  358. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  359. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  360. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  361. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  362. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  363. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  364. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  365. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  366. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  367. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  368. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  369. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -35
  370. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  371. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  372. data/spec/models/spree/calculator_spec.rb +0 -43
  373. data/spec/models/spree/carton_spec.rb +0 -137
  374. data/spec/models/spree/classification_spec.rb +0 -114
  375. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  376. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  377. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  378. data/spec/models/spree/concerns/user_methods_spec.rb +0 -121
  379. data/spec/models/spree/country_spec.rb +0 -154
  380. data/spec/models/spree/credit_card_spec.rb +0 -373
  381. data/spec/models/spree/customer_return_spec.rb +0 -294
  382. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  383. data/spec/models/spree/exchange_spec.rb +0 -76
  384. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  385. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  386. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  387. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  388. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  389. data/spec/models/spree/gateway_spec.rb +0 -14
  390. data/spec/models/spree/image_spec.rb +0 -25
  391. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  392. data/spec/models/spree/line_item_spec.rb +0 -240
  393. data/spec/models/spree/option_type_spec.rb +0 -16
  394. data/spec/models/spree/option_value_spec.rb +0 -52
  395. data/spec/models/spree/order/address_spec.rb +0 -52
  396. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  397. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  398. data/spec/models/spree/order/checkout_spec.rb +0 -740
  399. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  400. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  401. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  402. data/spec/models/spree/order/payment_spec.rb +0 -280
  403. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  404. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  405. data/spec/models/spree/order/totals_spec.rb +0 -26
  406. data/spec/models/spree/order/updating_spec.rb +0 -18
  407. data/spec/models/spree/order/validations_spec.rb +0 -17
  408. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  409. data/spec/models/spree/order_capturing_spec.rb +0 -16
  410. data/spec/models/spree/order_contents_spec.rb +0 -362
  411. data/spec/models/spree/order_inventory_spec.rb +0 -285
  412. data/spec/models/spree/order_merger_spec.rb +0 -162
  413. data/spec/models/spree/order_mutex_spec.rb +0 -89
  414. data/spec/models/spree/order_promotion_spec.rb +0 -33
  415. data/spec/models/spree/order_shipping_spec.rb +0 -247
  416. data/spec/models/spree/order_spec.rb +0 -1694
  417. data/spec/models/spree/order_taxation_spec.rb +0 -128
  418. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  419. data/spec/models/spree/order_updater_spec.rb +0 -555
  420. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  421. data/spec/models/spree/payment_create_spec.rb +0 -205
  422. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  423. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  424. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  425. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  426. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  427. data/spec/models/spree/payment_method_spec.rb +0 -408
  428. data/spec/models/spree/payment_spec.rb +0 -1270
  429. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  430. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  431. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  432. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  433. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  434. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  435. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  436. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  437. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  438. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  439. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  440. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  441. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  442. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  443. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  444. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -56
  445. data/spec/models/spree/preference_spec.rb +0 -79
  446. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  447. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  448. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  449. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  450. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  451. data/spec/models/spree/preferences/store_spec.rb +0 -40
  452. data/spec/models/spree/price_spec.rb +0 -150
  453. data/spec/models/spree/product/scopes_spec.rb +0 -164
  454. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  455. data/spec/models/spree/product_filter_spec.rb +0 -28
  456. data/spec/models/spree/product_property_spec.rb +0 -20
  457. data/spec/models/spree/product_spec.rb +0 -584
  458. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  459. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  460. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  461. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  462. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  463. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  464. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  465. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  466. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  467. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  468. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  469. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  470. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -227
  471. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  472. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  473. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  474. data/spec/models/spree/promotion_action_spec.rb +0 -44
  475. data/spec/models/spree/promotion_category_spec.rb +0 -19
  476. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  477. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  478. data/spec/models/spree/promotion_code_spec.rb +0 -206
  479. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  480. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  481. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  482. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  483. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  484. data/spec/models/spree/promotion_spec.rb +0 -928
  485. data/spec/models/spree/refund_spec.rb +0 -200
  486. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  487. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  488. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  489. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  490. data/spec/models/spree/reimbursement_spec.rb +0 -278
  491. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  492. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  493. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  494. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  495. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  496. data/spec/models/spree/return_authorization_spec.rb +0 -226
  497. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  498. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  499. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  500. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  501. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  502. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  503. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  504. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  505. data/spec/models/spree/return_item_spec.rb +0 -785
  506. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  507. data/spec/models/spree/shipment_spec.rb +0 -914
  508. data/spec/models/spree/shipping_calculator_spec.rb +0 -57
  509. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  510. data/spec/models/spree/shipping_method_spec.rb +0 -260
  511. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  512. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  513. data/spec/models/spree/state_spec.rb +0 -43
  514. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  515. data/spec/models/spree/stock/availability_spec.rb +0 -143
  516. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  517. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  518. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  519. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  520. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  521. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  522. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  523. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  524. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  525. data/spec/models/spree/stock/package_spec.rb +0 -182
  526. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  527. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  528. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  529. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  530. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  531. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  532. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  533. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  534. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  535. data/spec/models/spree/stock_item_spec.rb +0 -348
  536. data/spec/models/spree/stock_location_spec.rb +0 -288
  537. data/spec/models/spree/stock_movement_spec.rb +0 -58
  538. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  539. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  540. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  541. data/spec/models/spree/store_credit_spec.rb +0 -900
  542. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  543. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  544. data/spec/models/spree/store_spec.rb +0 -156
  545. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  546. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  547. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  548. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  549. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  550. data/spec/models/spree/tax_category_spec.rb +0 -50
  551. data/spec/models/spree/tax_rate_spec.rb +0 -316
  552. data/spec/models/spree/taxon_spec.rb +0 -197
  553. data/spec/models/spree/taxonomy_spec.rb +0 -15
  554. data/spec/models/spree/unit_cancel_spec.rb +0 -121
  555. data/spec/models/spree/user_spec.rb +0 -247
  556. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  557. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  558. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  559. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  560. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  561. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  562. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  563. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  564. data/spec/models/spree/variant_spec.rb +0 -862
  565. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  566. data/spec/models/spree/wallet_spec.rb +0 -155
  567. data/spec/models/spree/zone_spec.rb +0 -248
  568. data/spec/rails_helper.rb +0 -46
  569. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  570. data/spec/spec_helper.rb +0 -36
  571. data/spec/support/big_decimal.rb +0 -7
  572. data/spec/support/concerns/default_price.rb +0 -44
  573. data/spec/support/concerns/payment_source.rb +0 -66
  574. data/spec/support/concerns/working_factories.rb +0 -15
  575. data/spec/support/dummy_ability.rb +0 -7
@@ -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_attributes({ 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,316 +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
- tax_rate.adjust(nil, item)
157
- end
158
-
159
- let(:adjustment_label) { item.adjustments.tax.first.label }
160
-
161
- context 'for included rates' do
162
- let(:included_in_price) { true }
163
- let(:order_address) { taxable_address }
164
-
165
- context 'with show rate in label' do
166
- let(:show_rate_in_label) { true }
167
-
168
- it 'shows the rate in the label' do
169
- expect(adjustment_label).to include("12.500%")
170
- end
171
-
172
- it 'adds a remark that the rate is included in the price' do
173
- expect(adjustment_label).to include("Included in Price")
174
- end
175
- end
176
-
177
- context 'with show rate in label turned off' do
178
- let(:show_rate_in_label) { false }
179
-
180
- it 'does not show the rate in the label' do
181
- expect(adjustment_label).not_to include("12.500%")
182
- end
183
-
184
- it 'does not have two consecutive spaces' do
185
- expect(adjustment_label).not_to include(" ")
186
- end
187
-
188
- it 'adds a remark that the rate is included in the price' do
189
- expect(adjustment_label).to include("Included in Price")
190
- end
191
- end
192
- end
193
-
194
- context 'for additional rates' do
195
- let(:included_in_price) { false }
196
- let(:order_address) { taxable_address }
197
-
198
- context 'with show rate in label' do
199
- let(:show_rate_in_label) { true }
200
-
201
- it 'shows the rate in the label' do
202
- expect(adjustment_label).to include("12.500%")
203
- end
204
-
205
- it 'does not add a remark that the rate is included in the price' do
206
- expect(adjustment_label).not_to include("Included in Price")
207
- end
208
- end
209
-
210
- context 'with show rate in label turned off' do
211
- let(:show_rate_in_label) { false }
212
-
213
- it 'does not show the rate in the label' do
214
- expect(adjustment_label).not_to include("12.500%")
215
- end
216
-
217
- it 'does not add a remark that the rate is included in the price' do
218
- expect(adjustment_label).not_to include("Included in Price")
219
- end
220
- end
221
- end
222
- end
223
- end
224
-
225
- describe "#active?" do
226
- subject(:rate) { create(:tax_rate, validity).active? }
227
-
228
- context "when validity is not set" do
229
- let(:validity) { {} }
230
-
231
- it { is_expected.to eq(true) }
232
- end
233
-
234
- context "when starts_at is set" do
235
- context "now" do
236
- let(:validity) { { starts_at: Time.current } }
237
-
238
- it { is_expected.to eq(true) }
239
- end
240
-
241
- context "in the past" do
242
- let(:validity) { { starts_at: 1.day.ago } }
243
-
244
- it { is_expected.to eq(true) }
245
- end
246
-
247
- context "in the future" do
248
- let(:validity) { { starts_at: 1.day.from_now } }
249
-
250
- it { is_expected.to eq(false) }
251
- end
252
- end
253
-
254
- context "when expires_at is set" do
255
- context "now" do
256
- let(:validity) { { expires_at: Time.current } }
257
-
258
- it { is_expected.to eq(false) }
259
- end
260
-
261
- context "in the past" do
262
- let(:validity) { { expires_at: 1.day.ago } }
263
-
264
- it { is_expected.to eq(false) }
265
- end
266
-
267
- context "in the future" do
268
- let(:validity) { { expires_at: 1.day.from_now } }
269
-
270
- it { is_expected.to eq(true) }
271
- end
272
- end
273
-
274
- context "when starts_at and expires_at are set" do
275
- context "so that today is in range" do
276
- let(:validity) { { starts_at: 1.day.ago, expires_at: 1.day.from_now } }
277
-
278
- it { is_expected.to eq(true) }
279
- end
280
-
281
- context "both in the past" do
282
- let(:validity) { { starts_at: 2.days.ago, expires_at: 1.day.ago } }
283
-
284
- it { is_expected.to eq(false) }
285
- end
286
-
287
- context "both in the future" do
288
- let(:validity) { { starts_at: 1.day.from_now, expires_at: 2.days.from_now } }
289
-
290
- it { is_expected.to eq(false) }
291
- end
292
- end
293
- end
294
-
295
- describe '#tax_category (deprecated)' do
296
- let(:tax_rate) { create(:tax_rate, tax_categories: [tax_category]) }
297
- let(:tax_category) { create(:tax_category) }
298
-
299
- it "returns the first tax category" do
300
- tax_category = Spree::Deprecation.silence { tax_rate.tax_category }
301
- expect(tax_category).to eq(tax_category)
302
- end
303
- end
304
-
305
- describe '#tax_category= (deprecated)' do
306
- let(:tax_rate) { Spree::TaxRate.new }
307
- let(:tax_category) { create(:tax_category) }
308
-
309
- it "can assign the tax categories" do
310
- Spree::Deprecation.silence {
311
- tax_rate.tax_category = tax_category
312
- }
313
- expect(tax_rate.tax_categories).to eq([tax_category])
314
- end
315
- end
316
- 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_attributes(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_attributes(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