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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: fedc5c2cdf1cb1e25f80a181af360d2250eb273c
4
- data.tar.gz: 75df629b91496ec4e8d94f3624835237d7b0814a
2
+ SHA256:
3
+ metadata.gz: 87afc5077e860c226c85bb1b65fef534eea82174295c6650225ec4d06b5d03ba
4
+ data.tar.gz: d13a7557dd557f3d285ef7734de1a427b7c256d9433f2752bcf69e8c9dae6e17
5
5
  SHA512:
6
- metadata.gz: 96482c5df0535d60f3daaddba9efe951675e02c7ca38c7bbe3412c903b7020a5655eeafaa509d45af212c04c17161f26a759ab7ba587695929601c0f8f0f710c
7
- data.tar.gz: f23eec90d1da8eb97d4ffe8efd47be92ca48de63b7821282c0f96dd8146626283a9646a504cbd2961b97d4da3fab86cdc5990a759d91c4c3273cd515819896ef
6
+ metadata.gz: 9fd697a0d3056759267af069b85c21e6c4d480858dbf29b8db4a3c61ebec6568e037c5b75901ca5f64a52eb74d8d3b64d93e444a4f50bde1bf58c6652d003b57
7
+ data.tar.gz: a874cdab7c718290bc92e7add51f3df2f13208888c8399b0d07ad4b5fd13e6fc6acc501839cf9ac53c543e9fc676e670577b38f37463d3e2c0b875cd9a460265
data/README.md CHANGED
@@ -62,10 +62,6 @@ Developer Notes
62
62
  ---------------
63
63
  ## Testing
64
64
 
65
- Create the test site
66
-
67
- bundle exec rake test_app
68
-
69
65
  Run the tests
70
66
 
71
- bundle exec rake spec
67
+ bundle exec rspec
data/Rakefile CHANGED
@@ -2,14 +2,31 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'rake/testtask'
4
4
  require 'rspec/core/rake_task'
5
- require 'spree/testing_support/common_rake'
5
+ require 'spree/testing_support/dummy_app/rake_tasks'
6
6
 
7
7
  RSpec::Core::RakeTask.new
8
-
9
8
  task default: :spec
10
9
 
11
- desc "Generates a dummy app for testing"
12
- task :test_app do
13
- ENV['LIB_NAME'] = 'spree/core'
14
- Rake::Task['common:test_app'].invoke
10
+ DummyApp::RakeTasks.new(
11
+ gem_root: File.dirname(__FILE__),
12
+ lib_name: 'solidus_core'
13
+ )
14
+
15
+ namespace :spec do
16
+ task :isolated do
17
+ spec_files = Dir['spec/**/*_spec.rb']
18
+ failed_specs =
19
+ spec_files.reject do |file|
20
+ puts "rspec #{file}"
21
+ system('rspec', file)
22
+ end
23
+
24
+ if !failed_specs.empty?
25
+ puts "Failed specs:"
26
+ puts failed_specs
27
+ exit 1
28
+ end
29
+ end
15
30
  end
31
+
32
+ task test_app: 'db:reset'
@@ -1,11 +1,13 @@
1
+ require 'carmen'
2
+
1
3
  module Spree
2
4
  module BaseHelper
3
5
  def link_to_cart(text = nil)
4
- text = text ? h(text) : Spree.t(:cart)
6
+ text = text ? h(text) : t('spree.cart')
5
7
  css_class = nil
6
8
 
7
9
  if current_order.nil? || current_order.item_count.zero?
8
- text = "#{text}: (#{Spree.t(:empty)})"
10
+ text = "#{text}: (#{t('spree.empty')})"
9
11
  css_class = 'empty'
10
12
  else
11
13
  text = "#{text}: (#{current_order.item_count}) <span class='amount'>#{current_order.display_total.to_html}</span>"
@@ -69,14 +71,12 @@ module Spree
69
71
  def taxon_breadcrumbs(taxon, separator = '&nbsp;&raquo;&nbsp;', breadcrumb_class = 'inline')
70
72
  return '' if current_page?('/') || taxon.nil?
71
73
 
72
- crumbs = [[Spree.t(:home), spree.root_path]]
74
+ crumbs = [[t('spree.home'), spree.root_path]]
73
75
 
76
+ crumbs << [t('spree.products'), products_path]
74
77
  if taxon
75
- crumbs << [Spree.t(:products), products_path]
76
78
  crumbs += taxon.ancestors.collect { |a| [a.name, spree.nested_taxons_path(a.permalink)] } unless taxon.ancestors.empty?
77
79
  crumbs << [taxon.name, spree.nested_taxons_path(taxon.permalink)]
78
- else
79
- crumbs << [Spree.t(:products), products_path]
80
80
  end
81
81
 
82
82
  separator = raw(separator)
@@ -115,8 +115,14 @@ module Spree
115
115
  countries = Country.all
116
116
  end
117
117
 
118
+ country_names = Carmen::Country.all.map do |country|
119
+ [country.code, country.name]
120
+ end.to_h
121
+
122
+ country_names.update I18n.t('spree.country_names', default: {}).stringify_keys
123
+
118
124
  countries.collect do |country|
119
- country.name = Spree.t(country.iso, scope: 'country_names', default: country.name)
125
+ country.name = country_names.fetch(country.iso, country.name)
120
126
  country
121
127
  end.sort_by { |c| c.name.parameterize }
122
128
  end
@@ -129,9 +135,8 @@ module Spree
129
135
  product_or_variant.price_for(current_pricing_options).to_html
130
136
  end
131
137
 
132
- def pretty_time(time)
133
- [I18n.l(time.to_date, format: :long),
134
- time.strftime("%l:%M %p")].join(" ")
138
+ def pretty_time(time, format = :long)
139
+ I18n.l(time, format: :"solidus.#{format}")
135
140
  end
136
141
 
137
142
  def link_to_tracking(shipment, options = {})
@@ -7,7 +7,7 @@ module Spree
7
7
  def checkout_progress
8
8
  states = checkout_states
9
9
  items = states.map do |state|
10
- text = Spree.t("order_state.#{state}").titleize
10
+ text = I18n.t("spree.order_state.#{state}").titleize
11
11
 
12
12
  css_classes = []
13
13
  current_index = states.index(@order.state)
@@ -23,7 +23,7 @@ module Spree
23
23
  difference = variant.price_difference_from_master(current_pricing_options)
24
24
  absolute_amount = Spree::Money.new(difference.to_d.abs, currency: difference.currency.iso_code)
25
25
  i18n_key = difference.to_d > 0 ? :price_diff_add_html : :price_diff_subtract_html
26
- Spree.t(i18n_key, scope: [:helpers, :products], amount_html: absolute_amount.to_html)
26
+ t(i18n_key, scope: [:spree, :helpers, :products], amount_html: absolute_amount.to_html)
27
27
  end
28
28
 
29
29
  # Returns the formatted full price for the variant, if at least one variant
@@ -58,7 +58,7 @@ module Spree
58
58
  if description_text.present?
59
59
  truncate(strip_tags(description_text.gsub('&nbsp;', ' ')), length: 100)
60
60
  else
61
- Spree.t(:product_has_no_description)
61
+ t('spree.product_has_no_description')
62
62
  end
63
63
  end
64
64
 
@@ -19,8 +19,8 @@ module Spree
19
19
  @manifest = @carton.manifest_for_order(@order)
20
20
  options = { resend: false }.merge(options)
21
21
  @store = @order.store
22
- subject = (options[:resend] ? "[#{Spree.t(:resend).upcase}] " : '')
23
- subject += "#{@store.name} #{Spree.t('shipment_mailer.shipped_email.subject')} ##{@order.number}"
22
+ subject = (options[:resend] ? "[#{t('spree.resend').upcase}] " : '')
23
+ subject += "#{@store.name} #{t('spree.shipment_mailer.shipped_email.subject')} ##{@order.number}"
24
24
  mail(to: @order.email, from: from_address(@store), subject: subject)
25
25
  end
26
26
  end
@@ -3,7 +3,7 @@ module Spree
3
3
  def confirm_email(order, resend = false)
4
4
  @order = order
5
5
  @store = @order.store
6
- subject = build_subject(Spree.t('order_mailer.confirm_email.subject'), resend)
6
+ subject = build_subject(t('.subject'), resend)
7
7
 
8
8
  mail(to: @order.email, from: from_address(@store), subject: subject)
9
9
  end
@@ -11,7 +11,7 @@ module Spree
11
11
  def cancel_email(order, resend = false)
12
12
  @order = order
13
13
  @store = @order.store
14
- subject = build_subject(Spree.t('order_mailer.cancel_email.subject'), resend)
14
+ subject = build_subject(t('.subject'), resend)
15
15
 
16
16
  mail(to: @order.email, from: from_address(@store), subject: subject)
17
17
  end
@@ -19,7 +19,7 @@ module Spree
19
19
  def inventory_cancellation_email(order, inventory_units, resend = false)
20
20
  @order, @inventory_units = order, inventory_units
21
21
  @store = @order.store
22
- subject = build_subject(Spree.t('order_mailer.inventory_cancellation.subject'), resend)
22
+ subject = build_subject(t('spree.order_mailer.inventory_cancellation.subject'), resend)
23
23
 
24
24
  mail(to: @order.email, from: from_address(@store), subject: subject)
25
25
  end
@@ -27,7 +27,7 @@ module Spree
27
27
  private
28
28
 
29
29
  def build_subject(subject_text, resend)
30
- resend_text = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
30
+ resend_text = (resend ? "[#{t('spree.resend').upcase}] " : '')
31
31
  "#{resend_text}#{@order.store.name} #{subject_text} ##{@order.number}"
32
32
  end
33
33
  end
@@ -3,8 +3,8 @@ module Spree
3
3
  def reimbursement_email(reimbursement, resend = false)
4
4
  @reimbursement = reimbursement.respond_to?(:id) ? reimbursement : Spree::Reimbursement.find(reimbursement)
5
5
  store = @reimbursement.order.store
6
- subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
7
- subject += "#{store.name} #{Spree.t('reimbursement_mailer.reimbursement_email.subject')} ##{@reimbursement.order.number}"
6
+ subject = (resend ? "[#{t('spree.resend').upcase}] " : '')
7
+ subject += "#{store.name} #{t('.subject')} ##{@reimbursement.order.number}"
8
8
  mail(to: @reimbursement.order.email, from: from_address(store), subject: subject)
9
9
  end
10
10
  end
@@ -2,7 +2,7 @@ module Spree
2
2
  class TestMailer < BaseMailer
3
3
  def test_email(email)
4
4
  store = Spree::Store.default
5
- subject = "#{store.name} #{Spree.t('test_mailer.test_email.subject')}"
5
+ subject = "#{store.name} #{t('.subject')}"
6
6
  mail(to: email, from: from_address(store), subject: subject)
7
7
  end
8
8
  end
@@ -1,19 +1,25 @@
1
1
  module Spree
2
2
  module AdjustmentSource
3
3
  def deals_with_adjustments_for_deleted_source
4
- adjustment_scope = adjustments.joins(:order)
4
+ Spree::Deprecation.warn "AdjustmentSource#deals_with_adjustments_for_deleted_source is deprecated. Please use AdjustmentSource#remove_adjustments_from_incomplete_orders instead."
5
5
 
6
- # For incomplete orders, remove the adjustment completely.
7
- adjustment_scope.where(spree_orders: { completed_at: nil }).destroy_all
6
+ remove_adjustments_from_incomplete_orders
8
7
 
9
- # For complete orders, the source will be invalid.
10
- # Therefore we nullify the source_id, leaving the adjustment in place.
11
- # This would mean that the order's total is not altered at all.
12
- attrs = {
13
- source_id: nil,
14
- updated_at: Time.current
15
- }
16
- adjustment_scope.where.not(spree_orders: { completed_at: nil }).update_all(attrs)
8
+ # The following is deprecated. As source_type without a source_id isn't
9
+ # much better than a source_id that doesn't exist. In Solidus itself the
10
+ # relevant classes use `acts_as_paranoid` so it is useful to keep the
11
+ # source_id around.
12
+ adjustments.
13
+ joins(:order).
14
+ merge(Spree::Order.complete).
15
+ update_all(source_id: nil, updated_at: Time.current)
16
+ end
17
+
18
+ def remove_adjustments_from_incomplete_orders
19
+ adjustments.
20
+ joins(:order).
21
+ merge(Spree::Order.incomplete).
22
+ destroy_all
17
23
  end
18
24
  end
19
25
  end
@@ -22,7 +22,7 @@ module Spree
22
22
  end
23
23
 
24
24
  def spree_calculators
25
- Rails.application.config.spree.calculators
25
+ Spree::Config.environment.calculators
26
26
  end
27
27
  end
28
28
 
@@ -32,7 +32,7 @@ module Spree
32
32
 
33
33
  def calculator_type=(calculator_type)
34
34
  klass = calculator_type.constantize if calculator_type
35
- self.calculator = klass.new if klass && !calculator.is_a?(klass)
35
+ self.calculator = klass.new if klass && !calculator.instance_of?(klass)
36
36
  end
37
37
  end
38
38
  end
@@ -56,7 +56,7 @@ module Spree
56
56
  end
57
57
 
58
58
  def activate_permission_sets
59
- Spree::RoleConfiguration.instance.activate_permissions! self, user
59
+ Spree::Config.roles.activate_permissions! self, user
60
60
  end
61
61
  end
62
62
  end
@@ -14,6 +14,7 @@ module Spree
14
14
  validates :phone, presence: true, if: :require_phone?
15
15
 
16
16
  validate :state_validate
17
+ validate :validate_state_matches_country
17
18
 
18
19
  alias_attribute :first_name, :firstname
19
20
  alias_attribute :last_name, :lastname
@@ -209,5 +210,11 @@ module Spree
209
210
  # ensure at least one state field is populated
210
211
  errors.add :state, :blank if state.blank? && state_name.blank?
211
212
  end
213
+
214
+ def validate_state_matches_country
215
+ if state && state.country != country
216
+ errors.add(:state, :does_not_match_country)
217
+ end
218
+ end
212
219
  end
213
220
  end
@@ -101,8 +101,12 @@ module Spree
101
101
  return amount
102
102
  end
103
103
 
104
- # If the adjustment has no source, do not attempt to re-calculate the amount.
105
- # Chances are likely that this was a manually created adjustment in the admin backend.
104
+ # If the adjustment has no source, do not attempt to re-calculate the
105
+ # amount.
106
+ # Some scenarios where this happens:
107
+ # - Adjustments that are manually created via the admin backend
108
+ # - PromotionAction adjustments where the PromotionAction was deleted
109
+ # after the order was completed.
106
110
  if source.present?
107
111
  self.amount = source.compute_amount(adjustable)
108
112
 
@@ -29,7 +29,7 @@ module Spree
29
29
  def self.calculators
30
30
  Spree::Deprecation.warn("Calling .calculators is deprecated. Please access through Rails.application.config.spree.calculators")
31
31
 
32
- Rails.application.config.spree.calculators
32
+ Spree::Config.environment.calculators
33
33
  end
34
34
 
35
35
  def to_s
@@ -8,6 +8,7 @@ module Spree
8
8
  preference :currency, :string, default: ->{ Spree::Config[:currency] }
9
9
 
10
10
  def self.available?(_object)
11
+ Spree::Deprecation.warn('Spree::Calculator::FlexiRate::available is DEPRECATED. Use the instance method instead.')
11
12
  true
12
13
  end
13
14
 
@@ -1,3 +1,5 @@
1
+ require_dependency 'spree/calculator'
2
+
1
3
  module Spree
2
4
  # @deprecated This calculator will be removed in future versions of Spree.
3
5
  # The only case where it was used was for Free Shipping Promotions. There is
@@ -1,11 +1,11 @@
1
+ require_dependency 'spree/calculator'
2
+
1
3
  module Spree
2
- class Calculator
3
- class PercentOnLineItem < Calculator
4
- preference :percent, :decimal, default: 0
4
+ class Calculator::PercentOnLineItem < Calculator
5
+ preference :percent, :decimal, default: 0
5
6
 
6
- def compute(object)
7
- (object.amount * preferred_percent) / 100
8
- end
7
+ def compute(object)
8
+ (object.amount * preferred_percent) / 100
9
9
  end
10
10
  end
11
11
  end
@@ -1,3 +1,5 @@
1
+ require_dependency 'spree/calculator'
2
+
1
3
  module Spree
2
4
  # A calculator for promotions that calculates a percent-off discount
3
5
  # for all matching products in an order. This should not be used as a
@@ -1,9 +1,9 @@
1
+ require_dependency 'spree/calculator'
1
2
  require_dependency 'spree/returns_calculator'
2
3
 
3
4
  module Spree
4
5
  module Calculator::Returns
5
6
  class DefaultRefundAmount < ReturnsCalculator
6
-
7
7
  def compute(return_item)
8
8
  return 0.0.to_d if return_item.part_of_exchange?
9
9
  weighted_order_adjustment_amount(return_item.inventory_unit) + weighted_line_item_amount(return_item.inventory_unit)
@@ -16,7 +16,7 @@ module Spree
16
16
  end
17
17
 
18
18
  def weighted_line_item_amount(inventory_unit)
19
- inventory_unit.line_item.total_before_tax * percentage_of_line_item(inventory_unit)
19
+ inventory_unit.line_item.total_before_tax / quantity_of_line_item(inventory_unit)
20
20
  end
21
21
 
22
22
  def percentage_of_order_total(inventory_unit)
@@ -24,8 +24,8 @@ module Spree
24
24
  weighted_line_item_amount(inventory_unit) / inventory_unit.order.item_total_before_tax
25
25
  end
26
26
 
27
- def percentage_of_line_item(inventory_unit)
28
- 1 / BigDecimal(inventory_unit.line_item.quantity)
27
+ def quantity_of_line_item(inventory_unit)
28
+ BigDecimal(inventory_unit.line_item.quantity)
29
29
  end
30
30
  end
31
31
  end
@@ -1,3 +1,4 @@
1
+ require_dependency 'spree/calculator'
1
2
  require_dependency 'spree/shipping_calculator'
2
3
 
3
4
  module Spree
@@ -1,3 +1,4 @@
1
+ require_dependency 'spree/calculator'
1
2
  require_dependency 'spree/shipping_calculator'
2
3
 
3
4
  module Spree
@@ -1,3 +1,4 @@
1
+ require_dependency 'spree/calculator'
1
2
  require_dependency 'spree/shipping_calculator'
2
3
 
3
4
  module Spree
@@ -1,3 +1,4 @@
1
+ require_dependency 'spree/calculator'
1
2
  require_dependency 'spree/shipping_calculator'
2
3
 
3
4
  module Spree
@@ -1,3 +1,4 @@
1
+ require_dependency 'spree/calculator'
1
2
  require_dependency 'spree/shipping_calculator'
2
3
 
3
4
  module Spree
@@ -2,7 +2,7 @@ module Spree
2
2
  class Classification < Spree::Base
3
3
  self.table_name = 'spree_products_taxons'
4
4
  acts_as_list scope: :taxon
5
- belongs_to :product, class_name: "Spree::Product", inverse_of: :classifications
5
+ belongs_to :product, class_name: "Spree::Product", inverse_of: :classifications, touch: true
6
6
  belongs_to :taxon, class_name: "Spree::Taxon", inverse_of: :classifications, touch: true
7
7
 
8
8
  # For https://github.com/spree/spree/issues/3494