solidus_core 2.4.2 → 2.5.0.beta1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of solidus_core might be problematic. Click here for more details.

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