solidus_core 2.4.2 → 2.5.0.beta1

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 (313) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +1 -5
  3. data/Rakefile +23 -6
  4. data/app/helpers/spree/base_helper.rb +15 -10
  5. data/app/helpers/spree/checkout_helper.rb +1 -1
  6. data/app/helpers/spree/products_helper.rb +2 -2
  7. data/app/mailers/spree/carton_mailer.rb +2 -2
  8. data/app/mailers/spree/order_mailer.rb +4 -4
  9. data/app/mailers/spree/reimbursement_mailer.rb +2 -2
  10. data/app/mailers/spree/test_mailer.rb +1 -1
  11. data/app/models/concerns/spree/adjustment_source.rb +17 -11
  12. data/app/models/concerns/spree/calculated_adjustments.rb +2 -2
  13. data/app/models/spree/ability.rb +1 -1
  14. data/app/models/spree/address.rb +7 -0
  15. data/app/models/spree/adjustment.rb +6 -2
  16. data/app/models/spree/calculator.rb +1 -1
  17. data/app/models/spree/calculator/flexi_rate.rb +1 -0
  18. data/app/models/spree/calculator/free_shipping.rb +2 -0
  19. data/app/models/spree/calculator/percent_on_line_item.rb +6 -6
  20. data/app/models/spree/calculator/percent_per_item.rb +2 -0
  21. data/app/models/spree/calculator/returns/default_refund_amount.rb +4 -4
  22. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +1 -0
  23. data/app/models/spree/calculator/shipping/flat_rate.rb +1 -0
  24. data/app/models/spree/calculator/shipping/flexi_rate.rb +1 -0
  25. data/app/models/spree/calculator/shipping/per_item.rb +1 -0
  26. data/app/models/spree/calculator/shipping/price_sack.rb +1 -0
  27. data/app/models/spree/classification.rb +1 -1
  28. data/app/models/spree/customer_return.rb +1 -1
  29. data/app/models/spree/inventory_unit.rb +8 -2
  30. data/app/models/spree/log_entry.rb +0 -11
  31. data/app/models/spree/order.rb +31 -16
  32. data/app/models/spree/order_contents.rb +0 -14
  33. data/app/models/spree/order_shipping.rb +0 -5
  34. data/app/models/spree/order_updater.rb +0 -4
  35. data/app/models/spree/payment.rb +6 -1
  36. data/app/models/spree/payment/processing.rb +4 -4
  37. data/app/models/spree/payment_method.rb +8 -3
  38. data/app/models/spree/payment_method/credit_card.rb +1 -1
  39. data/app/models/spree/payment_method/store_credit.rb +4 -4
  40. data/app/models/spree/price.rb +7 -1
  41. data/app/models/spree/product.rb +34 -6
  42. data/app/models/spree/product/scopes.rb +2 -2
  43. data/app/models/spree/promotion.rb +1 -2
  44. data/app/models/spree/promotion/actions/create_adjustment.rb +3 -2
  45. data/app/models/spree/promotion/actions/create_item_adjustments.rb +7 -8
  46. data/app/models/spree/promotion/actions/free_shipping.rb +1 -1
  47. data/app/models/spree/promotion/rules/taxon.rb +25 -24
  48. data/app/models/spree/promotion_action.rb +7 -1
  49. data/app/models/spree/promotion_chooser.rb +1 -1
  50. data/app/models/spree/promotion_code.rb +3 -3
  51. data/app/models/spree/promotion_handler/coupon.rb +8 -29
  52. data/app/models/spree/promotion_rule.rb +1 -1
  53. data/app/models/spree/refund.rb +3 -3
  54. data/app/models/spree/reimbursement.rb +1 -1
  55. data/app/models/spree/return_authorization.rb +2 -2
  56. data/app/models/spree/return_item.rb +3 -3
  57. data/app/models/spree/return_item/eligibility_validator/base_validator.rb +2 -2
  58. data/app/models/spree/return_item/eligibility_validator/inventory_shipped.rb +1 -1
  59. data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +1 -1
  60. data/app/models/spree/return_item/eligibility_validator/order_completed.rb +1 -1
  61. data/app/models/spree/return_item/eligibility_validator/rma_required.rb +1 -1
  62. data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +1 -1
  63. data/app/models/spree/shipment.rb +16 -6
  64. data/app/models/spree/shipping_method.rb +7 -0
  65. data/app/models/spree/shipping_rate.rb +6 -6
  66. data/app/models/spree/shipping_rate_tax.rb +2 -2
  67. data/app/models/spree/stock/availability_validator.rb +2 -2
  68. data/app/models/spree/stock/estimator.rb +9 -1
  69. data/app/models/spree/stock/inventory_unit_builder.rb +1 -2
  70. data/app/models/spree/stock/inventory_validator.rb +2 -2
  71. data/app/models/spree/stock/package.rb +1 -1
  72. data/app/models/spree/stock/simple_coordinator.rb +2 -2
  73. data/app/models/spree/stock_item.rb +6 -0
  74. data/app/models/spree/stock_location.rb +2 -2
  75. data/app/models/spree/store_credit.rb +19 -12
  76. data/app/models/spree/store_credit_category.rb +1 -1
  77. data/app/models/spree/store_credit_event.rb +7 -1
  78. data/app/models/spree/tax/shipping_rate_taxer.rb +1 -1
  79. data/app/models/spree/tax_calculator/shipping_rate.rb +12 -3
  80. data/app/models/spree/tax_rate.rb +10 -3
  81. data/app/models/spree/taxon.rb +14 -4
  82. data/app/models/spree/taxonomy.rb +1 -1
  83. data/app/models/spree/unit_cancel.rb +1 -1
  84. data/app/models/spree/variant.rb +33 -1
  85. data/app/models/spree/variant/price_selector.rb +1 -1
  86. data/app/models/spree/variant/pricing_options.rb +1 -1
  87. data/app/models/spree/variant/scopes.rb +1 -1
  88. data/app/models/spree/variant/vat_price_generator.rb +1 -1
  89. data/app/views/spree/carton_mailer/shipped_email.html.erb +6 -6
  90. data/app/views/spree/carton_mailer/shipped_email.text.erb +6 -6
  91. data/app/views/spree/order_mailer/cancel_email.html.erb +5 -5
  92. data/app/views/spree/order_mailer/cancel_email.text.erb +5 -5
  93. data/app/views/spree/order_mailer/confirm_email.html.erb +9 -9
  94. data/app/views/spree/order_mailer/confirm_email.text.erb +9 -9
  95. data/app/views/spree/order_mailer/inventory_cancellation_email.html.erb +3 -3
  96. data/app/views/spree/order_mailer/inventory_cancellation_email.text.erb +3 -3
  97. data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_errored.text.erb +1 -1
  98. data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_finished.text.erb +1 -1
  99. data/app/views/spree/reimbursement_mailer/reimbursement_email.html.erb +5 -5
  100. data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +5 -5
  101. data/app/views/spree/shared/_error_messages.html.erb +2 -2
  102. data/app/views/spree/test_mailer/test_email.html.erb +2 -2
  103. data/app/views/spree/test_mailer/test_email.text.erb +2 -2
  104. data/config/initializers/assets.rb +3 -1
  105. data/config/locales/en.yml +44 -48
  106. data/db/default/spree/store_credit.rb +1 -1
  107. data/db/default/spree/stores.rb +7 -8
  108. data/db/migrate/20160101010000_solidus_one_four.rb +4 -46
  109. data/db/migrate/20170317035819_add_lft_and_rgt_indexes_to_taxons.rb +6 -0
  110. data/db/migrate/20170319191942_remove_order_id_from_inventory_units.rb +28 -0
  111. data/db/migrate/20170608074534_rename_bogus_gateways.rb +4 -2
  112. data/db/migrate/20170831201542_remove_default_tax_from_spree_zones.rb +1 -1
  113. data/lib/generators/spree/custom_user/custom_user_generator.rb +11 -22
  114. data/lib/generators/spree/install/install_generator.rb +10 -5
  115. data/lib/spree/app_configuration.rb +103 -5
  116. data/lib/spree/core.rb +3 -2
  117. data/lib/spree/core/active_merchant_dependencies.rb +11 -0
  118. data/lib/spree/core/controller_helpers/auth.rb +3 -1
  119. data/lib/spree/core/controller_helpers/common.rb +3 -7
  120. data/lib/spree/core/engine.rb +18 -100
  121. data/lib/spree/core/environment.rb +3 -3
  122. data/lib/spree/core/importer/order.rb +0 -1
  123. data/lib/spree/core/permalinks.rb +9 -15
  124. data/lib/spree/core/product_filters.rb +5 -3
  125. data/lib/spree/core/role_configuration.rb +23 -7
  126. data/lib/spree/core/search/base.rb +16 -13
  127. data/lib/spree/core/version.rb +1 -1
  128. data/lib/spree/paranoia_deprecations.rb +19 -0
  129. data/lib/spree/permission_sets.rb +0 -4
  130. data/lib/spree/permitted_attributes.rb +0 -3
  131. data/lib/spree/preferences/preferable.rb +70 -34
  132. data/lib/spree/preferences/preferable_class_methods.rb +22 -0
  133. data/lib/spree/testing_support/authorization_helpers.rb +2 -0
  134. data/lib/spree/testing_support/common_rake.rb +0 -1
  135. data/lib/spree/testing_support/dummy_app.rb +100 -0
  136. data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/backend/all.js +10 -0
  137. data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/frontend/all.js +10 -0
  138. data/lib/spree/testing_support/dummy_app/assets/stylesheets/spree/backend/all.css +9 -0
  139. data/lib/spree/testing_support/dummy_app/assets/stylesheets/spree/frontend/all.css +9 -0
  140. data/lib/spree/testing_support/dummy_app/database.yml +31 -0
  141. data/lib/spree/testing_support/dummy_app/migrations.rb +35 -0
  142. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +60 -0
  143. data/lib/spree/testing_support/dummy_app/views/layouts/application.html.erb +1 -0
  144. data/lib/spree/testing_support/factories.rb +1 -1
  145. data/lib/spree/testing_support/factories/address_factory.rb +2 -2
  146. data/lib/spree/testing_support/factories/adjustment_factory.rb +2 -2
  147. data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +1 -1
  148. data/lib/spree/testing_support/factories/calculator_factory.rb +1 -1
  149. data/lib/spree/testing_support/factories/carton_factory.rb +1 -1
  150. data/lib/spree/testing_support/factories/country_factory.rb +1 -1
  151. data/lib/spree/testing_support/factories/credit_card_factory.rb +1 -1
  152. data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -2
  153. data/lib/spree/testing_support/factories/image_factory.rb +1 -1
  154. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +13 -4
  155. data/lib/spree/testing_support/factories/line_item_factory.rb +1 -1
  156. data/lib/spree/testing_support/factories/option_type_factory.rb +1 -1
  157. data/lib/spree/testing_support/factories/option_value_factory.rb +1 -1
  158. data/lib/spree/testing_support/factories/order_factory.rb +5 -1
  159. data/lib/spree/testing_support/factories/order_promotion_factory.rb +1 -1
  160. data/lib/spree/testing_support/factories/payment_factory.rb +1 -1
  161. data/lib/spree/testing_support/factories/payment_method_factory.rb +1 -1
  162. data/lib/spree/testing_support/factories/price_factory.rb +1 -1
  163. data/lib/spree/testing_support/factories/product_factory.rb +1 -1
  164. data/lib/spree/testing_support/factories/product_option_type_factory.rb +1 -1
  165. data/lib/spree/testing_support/factories/product_property_factory.rb +1 -1
  166. data/lib/spree/testing_support/factories/promotion_category_factory.rb +1 -1
  167. data/lib/spree/testing_support/factories/promotion_code_factory.rb +2 -2
  168. data/lib/spree/testing_support/factories/promotion_factory.rb +1 -1
  169. data/lib/spree/testing_support/factories/property_factory.rb +1 -1
  170. data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
  171. data/lib/spree/testing_support/factories/refund_reason_factory.rb +1 -1
  172. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  173. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +1 -1
  174. data/lib/spree/testing_support/factories/return_authorization_factory.rb +1 -1
  175. data/lib/spree/testing_support/factories/return_item_factory.rb +1 -1
  176. data/lib/spree/testing_support/factories/return_reason_factory.rb +1 -1
  177. data/lib/spree/testing_support/factories/role_factory.rb +1 -1
  178. data/lib/spree/testing_support/factories/shipment_factory.rb +1 -2
  179. data/lib/spree/testing_support/factories/shipping_category_factory.rb +1 -1
  180. data/lib/spree/testing_support/factories/shipping_method_factory.rb +2 -2
  181. data/lib/spree/testing_support/factories/shipping_rate_factory.rb +1 -1
  182. data/lib/spree/testing_support/factories/state_factory.rb +1 -7
  183. data/lib/spree/testing_support/factories/stock_item_factory.rb +1 -1
  184. data/lib/spree/testing_support/factories/stock_location_factory.rb +1 -1
  185. data/lib/spree/testing_support/factories/stock_movement_factory.rb +1 -1
  186. data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -1
  187. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +1 -1
  188. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +1 -1
  189. data/lib/spree/testing_support/factories/store_credit_factory.rb +1 -1
  190. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +2 -2
  191. data/lib/spree/testing_support/factories/store_credit_update_reason_factory.rb +1 -1
  192. data/lib/spree/testing_support/factories/store_factory.rb +1 -1
  193. data/lib/spree/testing_support/factories/tax_category_factory.rb +1 -2
  194. data/lib/spree/testing_support/factories/tax_rate_factory.rb +1 -1
  195. data/lib/spree/testing_support/factories/taxon_factory.rb +1 -1
  196. data/lib/spree/testing_support/factories/taxonomy_factory.rb +1 -1
  197. data/lib/spree/testing_support/factories/user_factory.rb +4 -10
  198. data/lib/spree/testing_support/factories/variant_factory.rb +1 -1
  199. data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +1 -1
  200. data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +1 -1
  201. data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +1 -1
  202. data/lib/spree/testing_support/factories/zone_factory.rb +2 -4
  203. data/lib/spree/testing_support/flash.rb +2 -2
  204. data/lib/spree/testing_support/order_walkthrough.rb +9 -9
  205. data/lib/spree/testing_support/preferences.rb +4 -0
  206. data/lib/spree/testing_support/sequences.rb +3 -12
  207. data/solidus_core.gemspec +12 -8
  208. data/spec/helpers/base_helper_spec.rb +19 -3
  209. data/spec/helpers/products_helper_spec.rb +1 -1
  210. data/spec/lib/calculated_adjustments_spec.rb +20 -0
  211. data/spec/lib/i18n_spec.rb +4 -69
  212. data/spec/lib/search/base_spec.rb +1 -0
  213. data/spec/lib/search/variant_spec.rb +4 -4
  214. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +6 -6
  215. data/spec/lib/spree/core/importer/order_spec.rb +2 -2
  216. data/spec/lib/spree/core/role_configuration_spec.rb +6 -9
  217. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +12 -8
  218. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +1 -1
  219. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +1 -1
  220. data/spec/mailers/carton_mailer_spec.rb +3 -7
  221. data/spec/mailers/order_mailer_spec.rb +7 -11
  222. data/spec/mailers/reimbursement_mailer_spec.rb +1 -5
  223. data/spec/mailers/test_mailer_spec.rb +0 -4
  224. data/spec/models/spree/ability_spec.rb +2 -1
  225. data/spec/models/spree/address_spec.rb +32 -19
  226. data/spec/models/spree/app_configuration_spec.rb +1 -1
  227. data/spec/models/spree/calculator/distributed_amount_spec.rb +1 -1
  228. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +8 -10
  229. data/spec/models/spree/calculator/percent_per_item_spec.rb +4 -4
  230. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +10 -3
  231. data/spec/models/spree/classification_spec.rb +19 -0
  232. data/spec/models/spree/credit_card_spec.rb +1 -1
  233. data/spec/models/spree/customer_return_spec.rb +17 -6
  234. data/spec/models/spree/distributed_amounts_handler_spec.rb +1 -1
  235. data/spec/models/spree/exchange_spec.rb +1 -1
  236. data/spec/models/spree/inventory_unit_spec.rb +3 -7
  237. data/spec/models/spree/line_item_spec.rb +6 -6
  238. data/spec/models/spree/option_value_spec.rb +11 -6
  239. data/spec/models/spree/order/callbacks_spec.rb +2 -2
  240. data/spec/models/spree/order/checkout_spec.rb +31 -31
  241. data/spec/models/spree/order/risk_assessment_spec.rb +9 -9
  242. data/spec/models/spree/order_contents_spec.rb +1 -9
  243. data/spec/models/spree/order_inventory_spec.rb +2 -2
  244. data/spec/models/spree/order_mutex_spec.rb +3 -1
  245. data/spec/models/spree/order_shipping_spec.rb +7 -4
  246. data/spec/models/spree/order_spec.rb +36 -13
  247. data/spec/models/spree/order_taxation_spec.rb +7 -7
  248. data/spec/models/spree/order_updater_spec.rb +6 -4
  249. data/spec/models/spree/payment/cancellation_spec.rb +1 -1
  250. data/spec/models/spree/payment_create_spec.rb +2 -2
  251. data/spec/models/spree/payment_method/store_credit_spec.rb +13 -13
  252. data/spec/models/spree/payment_spec.rb +23 -4
  253. data/spec/models/spree/preferences/preferable_spec.rb +44 -0
  254. data/spec/models/spree/preferences/statically_configurable_spec.rb +1 -0
  255. data/spec/models/spree/price_spec.rb +6 -4
  256. data/spec/models/spree/product/scopes_spec.rb +1 -1
  257. data/spec/models/spree/product_spec.rb +49 -9
  258. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +13 -3
  259. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +146 -134
  260. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +6 -6
  261. data/spec/models/spree/promotion/rules/taxon_spec.rb +14 -14
  262. data/spec/models/spree/promotion_code_spec.rb +31 -19
  263. data/spec/models/spree/promotion_handler/coupon_spec.rb +42 -17
  264. data/spec/models/spree/promotion_handler/shipping_spec.rb +1 -6
  265. data/spec/models/spree/promotion_spec.rb +14 -14
  266. data/spec/models/spree/refund_spec.rb +1 -1
  267. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +1 -1
  268. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +1 -1
  269. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +3 -2
  270. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +1 -1
  271. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +2 -2
  272. data/spec/models/spree/return_item_spec.rb +6 -6
  273. data/spec/models/spree/shipment_spec.rb +14 -10
  274. data/spec/models/spree/shipping_manifest_spec.rb +22 -9
  275. data/spec/models/spree/shipping_method_spec.rb +9 -5
  276. data/spec/models/spree/stock/availability_spec.rb +16 -2
  277. data/spec/models/spree/stock/estimator_spec.rb +11 -12
  278. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -4
  279. data/spec/models/spree/stock/package_spec.rb +3 -2
  280. data/spec/models/spree/stock/simple_coordinator_spec.rb +1 -24
  281. data/spec/models/spree/stock_item_spec.rb +6 -6
  282. data/spec/models/spree/stock_location_spec.rb +16 -3
  283. data/spec/models/spree/store_credit_spec.rb +12 -6
  284. data/spec/models/spree/tax/taxation_integration_spec.rb +6 -6
  285. data/spec/models/spree/tax_calculator/default_spec.rb +7 -7
  286. data/spec/models/spree/taxon_spec.rb +42 -19
  287. data/spec/models/spree/variant/vat_price_generator_spec.rb +1 -1
  288. data/spec/models/spree/variant_spec.rb +69 -11
  289. data/spec/rails_helper.rb +7 -13
  290. data/spec/spec_helper.rb +3 -12
  291. data/spec/support/concerns/default_price.rb +1 -1
  292. data/spec/support/dummy_ability.rb +2 -0
  293. metadata +144 -73
  294. data/Gemfile +0 -3
  295. data/app/models/spree/order_stock_location.rb +0 -15
  296. data/app/models/spree/stock_transfer.rb +0 -110
  297. data/app/models/spree/transfer_item.rb +0 -54
  298. data/lib/generators/spree/custom_user/templates/initializer.rb.tt +0 -1
  299. data/lib/spree/permission_sets/restricted_stock_transfer_display.rb +0 -17
  300. data/lib/spree/permission_sets/restricted_stock_transfer_management.rb +0 -52
  301. data/lib/spree/permission_sets/stock_transfer_display.rb +0 -10
  302. data/lib/spree/permission_sets/stock_transfer_management.rb +0 -11
  303. data/lib/spree/testing_support/factories/stock_transfer_factory.rb +0 -28
  304. data/lib/spree/testing_support/i18n.rb +0 -97
  305. data/spec/lib/spree/core/testing_support/factories/stock_transfer_factory_spec.rb +0 -12
  306. data/spec/models/spree/order_stock_location_spec.rb +0 -18
  307. data/spec/models/spree/permission_sets/restricted_stock_transfer_display_spec.rb +0 -49
  308. data/spec/models/spree/permission_sets/restricted_stock_transfer_management_spec.rb +0 -218
  309. data/spec/models/spree/permission_sets/stock_transfer_display_spec.rb +0 -23
  310. data/spec/models/spree/permission_sets/stock_transfer_management_spec.rb +0 -23
  311. data/spec/models/spree/stock_transfer_spec.rb +0 -308
  312. data/spec/models/spree/transfer_item_spec.rb +0 -275
  313. data/spec/support/test_gateway.rb +0 -2
@@ -232,7 +232,7 @@ RSpec.describe Spree::Promotion, type: :model do
232
232
  let(:usage_limit) { 1 }
233
233
  context "on a different order" do
234
234
  before do
235
- FactoryGirl.create(
235
+ FactoryBot.create(
236
236
  :completed_order_with_promotion,
237
237
  promotion: promotion
238
238
  )
@@ -253,7 +253,7 @@ RSpec.describe Spree::Promotion, type: :model do
253
253
 
254
254
  context "with an order-level adjustment" do
255
255
  let(:promotion) do
256
- FactoryGirl.create(
256
+ FactoryBot.create(
257
257
  :promotion,
258
258
  :with_order_adjustment,
259
259
  code: "discount",
@@ -261,7 +261,7 @@ RSpec.describe Spree::Promotion, type: :model do
261
261
  )
262
262
  end
263
263
  let(:promotable) do
264
- FactoryGirl.create(
264
+ FactoryBot.create(
265
265
  :completed_order_with_promotion,
266
266
  promotion: promotion
267
267
  )
@@ -271,7 +271,7 @@ RSpec.describe Spree::Promotion, type: :model do
271
271
 
272
272
  context "with an item-level adjustment" do
273
273
  let(:promotion) do
274
- FactoryGirl.create(
274
+ FactoryBot.create(
275
275
  :promotion,
276
276
  :with_line_item_adjustment,
277
277
  code: "discount",
@@ -286,7 +286,7 @@ RSpec.describe Spree::Promotion, type: :model do
286
286
  })
287
287
  end
288
288
  context "when there are multiple line items" do
289
- let(:order) { FactoryGirl.create(:order_with_line_items, line_items_count: 2) }
289
+ let(:order) { FactoryBot.create(:order_with_line_items, line_items_count: 2) }
290
290
  describe "the first item" do
291
291
  let(:promotable) { order.line_items.first }
292
292
  it_behaves_like "it should"
@@ -297,7 +297,7 @@ RSpec.describe Spree::Promotion, type: :model do
297
297
  end
298
298
  end
299
299
  context "when there is a single line item" do
300
- let(:order) { FactoryGirl.create(:order_with_line_items) }
300
+ let(:order) { FactoryBot.create(:order_with_line_items) }
301
301
  let(:promotable) { order.line_items.first }
302
302
  it_behaves_like "it should"
303
303
  end
@@ -306,7 +306,7 @@ RSpec.describe Spree::Promotion, type: :model do
306
306
 
307
307
  describe "#usage_count" do
308
308
  let(:promotion) do
309
- FactoryGirl.create(
309
+ FactoryBot.create(
310
310
  :promotion,
311
311
  :with_order_adjustment,
312
312
  code: "discount"
@@ -316,13 +316,13 @@ RSpec.describe Spree::Promotion, type: :model do
316
316
  subject { promotion.usage_count }
317
317
 
318
318
  context "when the code is applied to a non-complete order" do
319
- let(:order) { FactoryGirl.create(:order_with_line_items) }
319
+ let(:order) { FactoryBot.create(:order_with_line_items) }
320
320
  before { promotion.activate(order: order, promotion_code: promotion.codes.first) }
321
321
  it { is_expected.to eq 0 }
322
322
  end
323
323
  context "when the code is applied to a complete order" do
324
324
  let!(:order) do
325
- FactoryGirl.create(
325
+ FactoryBot.create(
326
326
  :completed_order_with_promotion,
327
327
  promotion: promotion
328
328
  )
@@ -487,11 +487,11 @@ RSpec.describe Spree::Promotion, type: :model do
487
487
  end
488
488
 
489
489
  context "when the promotion's usage limit is exceeded" do
490
- let(:order) { FactoryGirl.create(:completed_order_with_promotion, promotion: promotion) }
491
- let(:promotion) { FactoryGirl.create(:promotion, :with_order_adjustment) }
490
+ let(:order) { FactoryBot.create(:completed_order_with_promotion, promotion: promotion) }
491
+ let(:promotion) { FactoryBot.create(:promotion, :with_order_adjustment) }
492
492
 
493
493
  before do
494
- FactoryGirl.create(
494
+ FactoryBot.create(
495
495
  :completed_order_with_promotion,
496
496
  promotion: promotion
497
497
  )
@@ -504,12 +504,12 @@ RSpec.describe Spree::Promotion, type: :model do
504
504
  end
505
505
 
506
506
  context "when the promotion code's usage limit is exceeded" do
507
- let(:order) { FactoryGirl.create(:completed_order_with_promotion, promotion: promotion) }
507
+ let(:order) { FactoryBot.create(:completed_order_with_promotion, promotion: promotion) }
508
508
  let(:promotion) { create(:promotion, :with_order_adjustment, code: 'abc123', per_code_usage_limit: 1) }
509
509
  let(:promotion_code) { promotion.codes.first }
510
510
 
511
511
  before do
512
- FactoryGirl.create(
512
+ FactoryBot.create(
513
513
  :completed_order_with_promotion,
514
514
  promotion: promotion
515
515
  )
@@ -145,7 +145,7 @@ RSpec.describe Spree::Refund, type: :model do
145
145
  end
146
146
 
147
147
  it 'raises Spree::Core::GatewayError' do
148
- expect { subject }.to raise_error(Spree::Core::GatewayError, Spree.t(:unable_to_connect_to_gateway))
148
+ expect { subject }.to raise_error(Spree::Core::GatewayError, I18n.t('spree.unable_to_connect_to_gateway'))
149
149
  end
150
150
  end
151
151
 
@@ -24,7 +24,7 @@ RSpec.describe Spree::ReturnItem::EligibilityValidator::InventoryShipped do
24
24
 
25
25
  it "sets an error" do
26
26
  subject
27
- expect(validator.errors[:inventory_unit_shipped]).to eq Spree.t('return_item_inventory_unit_ineligible')
27
+ expect(validator.errors[:inventory_unit_shipped]).to eq I18n.t('spree.return_item_inventory_unit_ineligible')
28
28
  end
29
29
  end
30
30
  end
@@ -16,7 +16,7 @@ RSpec.describe Spree::ReturnItem::EligibilityValidator::NoReimbursements do
16
16
 
17
17
  it "sets an error" do
18
18
  subject
19
- expect(validator.errors[:inventory_unit_reimbursed]).to eq Spree.t('return_item_inventory_unit_reimbursed')
19
+ expect(validator.errors[:inventory_unit_reimbursed]).to eq I18n.t('spree.return_item_inventory_unit_reimbursed')
20
20
  end
21
21
 
22
22
  context "but the return item has been expired" do
@@ -1,7 +1,8 @@
1
1
  require 'rails_helper'
2
2
 
3
3
  RSpec.describe Spree::ReturnItem::EligibilityValidator::OrderCompleted do
4
- let(:inventory_unit) { create(:inventory_unit, order: order) }
4
+ let(:shipment) { create(:shipment, order: order) }
5
+ let(:inventory_unit) { create(:inventory_unit, shipment: shipment) }
5
6
  let(:return_item) { create(:return_item, inventory_unit: inventory_unit) }
6
7
  let(:validator) { Spree::ReturnItem::EligibilityValidator::OrderCompleted.new(return_item) }
7
8
 
@@ -25,7 +26,7 @@ RSpec.describe Spree::ReturnItem::EligibilityValidator::OrderCompleted do
25
26
 
26
27
  it "sets an error" do
27
28
  subject
28
- expect(validator.errors[:order_not_completed]).to eq Spree.t('return_item_order_not_completed')
29
+ expect(validator.errors[:order_not_completed]).to eq I18n.t('spree.return_item_order_not_completed')
29
30
  end
30
31
  end
31
32
  end
@@ -22,7 +22,7 @@ RSpec.describe Spree::ReturnItem::EligibilityValidator::RMARequired, type: :mode
22
22
 
23
23
  it "sets an error" do
24
24
  subject
25
- expect(validator.errors[:rma_required]).to eq Spree.t('return_item_rma_ineligible')
25
+ expect(validator.errors[:rma_required]).to eq I18n.t('spree.return_item_rma_ineligible')
26
26
  end
27
27
  end
28
28
  end
@@ -1,7 +1,7 @@
1
1
  require 'rails_helper'
2
2
 
3
3
  RSpec.describe Spree::ReturnItem::EligibilityValidator::TimeSincePurchase, type: :model do
4
- let(:inventory_unit) { create(:inventory_unit, order: create(:shipped_order)) }
4
+ let(:inventory_unit) { create(:inventory_unit, shipment: create(:shipped_order).shipments.first) }
5
5
  let(:return_item) { create(:return_item, inventory_unit: inventory_unit) }
6
6
  let(:validator) { Spree::ReturnItem::EligibilityValidator::TimeSincePurchase.new(return_item) }
7
7
 
@@ -28,7 +28,7 @@ RSpec.describe Spree::ReturnItem::EligibilityValidator::TimeSincePurchase, type:
28
28
 
29
29
  it "sets an error" do
30
30
  subject
31
- expect(validator.errors[:number_of_days]).to eq Spree.t('return_item_time_period_ineligible')
31
+ expect(validator.errors[:number_of_days]).to eq I18n.t('spree.return_item_time_period_ineligible')
32
32
  end
33
33
  end
34
34
  end
@@ -19,7 +19,7 @@ RSpec.describe Spree::ReturnItem, type: :model do
19
19
  describe '#receive!' do
20
20
  let(:now) { Time.current }
21
21
  let(:order) { create(:shipped_order) }
22
- let(:inventory_unit) { create(:inventory_unit, order: order, state: 'shipped') }
22
+ let(:inventory_unit) { create(:inventory_unit, state: 'shipped') }
23
23
  let!(:customer_return) { create(:customer_return_without_return_items, return_items: [return_item], stock_location_id: inventory_unit.shipment.stock_location_id) }
24
24
  let(:return_item) { create(:return_item, inventory_unit: inventory_unit) }
25
25
 
@@ -45,7 +45,7 @@ RSpec.describe Spree::ReturnItem, type: :model do
45
45
  let!(:return_item_with_dupe_inventory_unit) { create(:return_item, inventory_unit: inventory_unit, reception_status: 'received') }
46
46
 
47
47
  before do
48
- assert_raises(StateMachines::InvalidTransition) { subject }
48
+ expect { subject }.to raise_error { StateMachines::InvalidTransition }
49
49
  end
50
50
 
51
51
  it 'does not receive the return item' do
@@ -58,7 +58,7 @@ RSpec.describe Spree::ReturnItem, type: :model do
58
58
  end
59
59
 
60
60
  context 'when the received item is actually the exchange (aka customer changed mind about exchange)' do
61
- let(:exchange_inventory_unit) { create(:inventory_unit, order: order, state: 'shipped') }
61
+ let(:exchange_inventory_unit) { create(:inventory_unit, state: 'shipped') }
62
62
  let!(:return_item_with_exchange) { create(:return_item, inventory_unit: inventory_unit, exchange_inventory_unit: exchange_inventory_unit) }
63
63
  let!(:return_item_in_lieu) { create(:return_item, inventory_unit: exchange_inventory_unit) }
64
64
 
@@ -112,7 +112,7 @@ RSpec.describe Spree::ReturnItem, type: :model do
112
112
  end
113
113
 
114
114
  context "when the inventory unit's variant does not yet have a stock item for the stock location it was returned to" do
115
- before { inventory_unit.variant.stock_items.destroy_all }
115
+ before { inventory_unit.variant.stock_items.each(&:really_destroy!) }
116
116
 
117
117
  it "creates a new stock item for the inventory unit with a count of 1" do
118
118
  expect { subject }.to change(Spree::StockItem, :count).by(1)
@@ -222,7 +222,8 @@ RSpec.describe Spree::ReturnItem, type: :model do
222
222
  end
223
223
 
224
224
  describe "#receive" do
225
- let(:inventory_unit) { create(:inventory_unit, order: create(:shipped_order)) }
225
+ let(:order) { create(:shipped_order) }
226
+ let(:inventory_unit) { create(:inventory_unit, shipment: order.shipments.first) }
226
227
  let(:return_item) { create(:return_item, reception_status: status, inventory_unit: inventory_unit) }
227
228
 
228
229
  subject { return_item.receive! }
@@ -602,7 +603,6 @@ RSpec.describe Spree::ReturnItem, type: :model do
602
603
  expect(subject).not_to be_persisted
603
604
  expect(subject.original_return_item).to eq return_item
604
605
  expect(subject.line_item).to eq return_item.inventory_unit.line_item
605
- expect(subject.order).to eq return_item.inventory_unit.order
606
606
  end
607
607
  end
608
608
  end
@@ -196,7 +196,7 @@ RSpec.describe Spree::Shipment, type: :model do
196
196
  end
197
197
 
198
198
  context "variant was removed" do
199
- before { variant.destroy }
199
+ before { variant.discard }
200
200
 
201
201
  it "still returns variant expected" do
202
202
  expect(shipment.manifest.first.variant).to eq variant
@@ -264,6 +264,7 @@ RSpec.describe Spree::Shipment, type: :model do
264
264
  end
265
265
 
266
266
  before do
267
+ allow(line_item).to receive(:order) { order }
267
268
  allow(shipment).to receive(:inventory_units) { inventory_units }
268
269
  allow(inventory_units).to receive_message_chain(:includes, :joins).and_return inventory_units
269
270
  end
@@ -525,14 +526,6 @@ RSpec.describe Spree::Shipment, type: :model do
525
526
  allow(shipment).to receive_messages(require_inventory: false, update_order: true, state: state)
526
527
  end
527
528
 
528
- it "should call fulfill_order_with_stock_location" do
529
- expect(Spree::OrderStockLocation).to(
530
- receive(:fulfill_for_order_with_stock_location).
531
- with(order, stock_location)
532
- )
533
- shipment.ship!
534
- end
535
-
536
529
  it "finalizes adjustments" do
537
530
  shipment.adjustments.each do |adjustment|
538
531
  expect(adjustment).to receive(:finalize!)
@@ -658,7 +651,7 @@ RSpec.describe Spree::Shipment, type: :model do
658
651
  let(:inventory_units) { double }
659
652
 
660
653
  let(:params) do
661
- { variant_id: variant.id, state: 'on_hand', order_id: order.id, line_item_id: line_item.id }
654
+ { variant_id: variant.id, state: 'on_hand', line_item_id: line_item.id }
662
655
  end
663
656
 
664
657
  before { allow(shipment).to receive_messages inventory_units: inventory_units }
@@ -816,6 +809,14 @@ RSpec.describe Spree::Shipment, type: :model do
816
809
  let!(:air_shipping_method) { create(:shipping_method, name: "Air") }
817
810
  let(:new_rate) { shipment.shipping_rates.create!(shipping_method: air_shipping_method) }
818
811
 
812
+ context 'selecting the same id' do
813
+ it 'keeps the same shipping rate selected' do
814
+ expect {
815
+ shipment.selected_shipping_rate_id = shipping_rate.id
816
+ }.not_to change { shipping_rate.selected }.from(true)
817
+ end
818
+ end
819
+
819
820
  context 'when the id exists' do
820
821
  it 'sets the new shipping rate as selected' do
821
822
  expect {
@@ -835,6 +836,9 @@ RSpec.describe Spree::Shipment, type: :model do
835
836
  expect {
836
837
  shipment.selected_shipping_rate_id = -1
837
838
  }.to raise_error(ArgumentError)
839
+
840
+ # Should not change selection
841
+ expect(shipping_rate.reload).to be_selected
838
842
  end
839
843
  end
840
844
  end
@@ -6,16 +6,14 @@ module Spree
6
6
  let(:order) { Order.create! }
7
7
  let(:variant) { create :variant }
8
8
  let!(:shipment) { create(:shipment, state: 'pending', order: order) }
9
- let(:manifest) { described_class.new(inventory_units: inventory_units) }
9
+ subject(:manifest) { described_class.new(inventory_units: inventory_units) }
10
10
 
11
11
  def build_unit(variant, attrs = {})
12
- attrs = { order: order, variant: variant, shipment: shipment }.merge(attrs)
13
- attrs[:line_item] = attrs[:order].contents.add(attrs[:variant])
12
+ attrs = { variant: variant, shipment: shipment }.merge(attrs)
13
+ attrs[:line_item] = order.contents.add(variant)
14
14
  InventoryUnit.new(attrs)
15
15
  end
16
16
 
17
- subject{ manifest }
18
-
19
17
  describe "#items" do
20
18
  context 'empty' do
21
19
  let(:inventory_units) { [] }
@@ -68,9 +66,15 @@ module Spree
68
66
  end
69
67
 
70
68
  describe "#for_order" do
71
- let!(:order2) { Order.create! }
69
+ let!(:order2) { create(:order_with_line_items) }
72
70
  context 'single unit' do
73
- let(:inventory_units) { [build_unit(variant)] }
71
+ let(:inventory_units) { [inventory_unit] }
72
+ let(:inventory_unit) { build_unit(variant) }
73
+
74
+ before do
75
+ allow(inventory_unit).to receive(:order_id) { order.id }
76
+ end
77
+
74
78
  it "has single ManifestItem in correct order" do
75
79
  expect(manifest.for_order(order).items.count).to eq 1
76
80
  end
@@ -81,13 +85,22 @@ module Spree
81
85
  end
82
86
 
83
87
  context 'one units in each order' do
84
- let(:inventory_units) { [build_unit(variant), build_unit(variant, order: order2)] }
88
+ let(:order_2) { build_stubbed(:order) }
89
+ let(:inventory_units) { [inventory_unit_one, inventory_unit_two] }
90
+ let(:inventory_unit_one) { build_unit(variant) }
91
+ let(:inventory_unit_two) { build_unit(variant) }
92
+
93
+ before do
94
+ allow(inventory_unit_one).to receive(:order_id) { order.id }
95
+ allow(inventory_unit_two).to receive(:order_id) { order_2.id }
96
+ end
97
+
85
98
  it "has single ManifestItem in first order" do
86
99
  expect(manifest.for_order(order).items.count).to eq 1
87
100
  end
88
101
 
89
102
  it "has single ManifestItem in second order" do
90
- expect(manifest.for_order(order2).items.count).to eq 1
103
+ expect(manifest.for_order(order_2).items.count).to eq 1
91
104
  end
92
105
  end
93
106
  end
@@ -22,17 +22,21 @@ RSpec.describe Spree::ShippingMethod, type: :model do
22
22
  before { subject.valid? }
23
23
 
24
24
  it "validates presence of name" do
25
- expect(subject.error_on(:name).size).to eq(1)
25
+ expect(subject.errors[:name].size).to eq(1)
26
26
  end
27
27
 
28
28
  context "shipping category" do
29
29
  it "validates presence of at least one" do
30
- expect(subject.error_on(:base).size).to eq(1)
30
+ expect(subject.errors[:base].size).to eq(1)
31
31
  end
32
32
 
33
33
  context "one associated" do
34
- before { subject.shipping_categories.push create(:shipping_category) }
35
- it { expect(subject.error_on(:base).size).to eq(0) }
34
+ before do
35
+ subject.shipping_categories.push create(:shipping_category)
36
+ subject.valid?
37
+ end
38
+
39
+ it { expect(subject.errors[:base].size).to eq(0) }
36
40
  end
37
41
  end
38
42
  end
@@ -59,7 +63,7 @@ RSpec.describe Spree::ShippingMethod, type: :model do
59
63
  context "soft deletion" do
60
64
  let(:shipping_method) { create(:shipping_method) }
61
65
  it "soft-deletes when destroy is called" do
62
- shipping_method.destroy
66
+ shipping_method.discard
63
67
  expect(shipping_method.deleted_at).not_to be_blank
64
68
  end
65
69
  end
@@ -51,7 +51,15 @@ module Spree::Stock
51
51
  end
52
52
 
53
53
  context 'with no stock_item' do
54
- before { stock_item.destroy! }
54
+ before { stock_item.really_destroy! }
55
+
56
+ it "returns empty hash" do
57
+ expect(subject).to eq({})
58
+ end
59
+ end
60
+
61
+ context 'with soft-deleted stock_item' do
62
+ before { stock_item.discard }
55
63
 
56
64
  it "returns empty hash" do
57
65
  expect(subject).to eq({})
@@ -116,8 +124,14 @@ module Spree::Stock
116
124
  end
117
125
  end
118
126
 
127
+ context 'with soft-deleted stock_item' do
128
+ before { stock_item.discard }
129
+
130
+ it { is_expected.to eq({}) }
131
+ end
132
+
119
133
  context 'with no stock_item' do
120
- before { stock_item.destroy! }
134
+ before { stock_item.really_destroy! }
121
135
 
122
136
  it { is_expected.to eq({}) }
123
137
  end
@@ -83,7 +83,7 @@ module Spree
83
83
  end
84
84
 
85
85
  it "sorts shipping rates by cost" do
86
- ShippingMethod.destroy_all
86
+ ShippingMethod.all.each(&:really_destroy!)
87
87
  create(:shipping_method, cost: 5)
88
88
  create(:shipping_method, cost: 3)
89
89
  create(:shipping_method, cost: 4)
@@ -92,7 +92,7 @@ module Spree
92
92
  end
93
93
 
94
94
  context "general shipping methods" do
95
- before { Spree::ShippingMethod.destroy_all }
95
+ before { Spree::ShippingMethod.all.each(&:really_destroy!) }
96
96
 
97
97
  context 'with two shipping methods of different cost' do
98
98
  let!(:shipping_methods) do
@@ -125,7 +125,7 @@ module Spree
125
125
  end
126
126
 
127
127
  context "involves backend only shipping methods" do
128
- before{ Spree::ShippingMethod.destroy_all }
128
+ before{ Spree::ShippingMethod.all.each(&:really_destroy!) }
129
129
  let!(:backend_method) { create(:shipping_method, available_to_users: false, cost: 0.00) }
130
130
  let!(:generic_method) { create(:shipping_method, cost: 5.00) }
131
131
 
@@ -189,20 +189,19 @@ module Spree
189
189
  end
190
190
 
191
191
  it 'uses the configured shipping rate taxer' do
192
- class Spree::Tax::TestTaxer
193
- def initialize
192
+ class Spree::Tax::TestTaxCalculator
193
+ def initialize(_order)
194
194
  end
195
195
 
196
- def tax(_)
197
- Spree::ShippingRate.new
196
+ def calculate(_shipping_rate)
197
+ [
198
+ Spree::Tax::ItemTax.new(label: "TAX", amount: 5)
199
+ ]
198
200
  end
199
201
  end
200
- Spree::Config.shipping_rate_taxer_class = Spree::Tax::TestTaxer
201
-
202
- shipping_rate = Spree::ShippingRate.new
203
- allow(Spree::ShippingRate).to receive(:new).and_return(shipping_rate)
202
+ Spree::Config.shipping_rate_tax_calculator_class = Spree::Tax::TestTaxCalculator
204
203
 
205
- expect(Spree::Tax::TestTaxer).to receive(:new).and_call_original
204
+ expect(Spree::Tax::TestTaxCalculator).to receive(:new).and_call_original
206
205
  subject.shipping_rates(package)
207
206
  end
208
207
  end