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
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