solidus_core 1.0.7 → 1.1.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 (349) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/spree/base_controller.rb +1 -2
  3. data/app/helpers/spree/base_helper.rb +4 -5
  4. data/app/helpers/spree/products_helper.rb +0 -8
  5. data/app/mailers/spree/carton_mailer.rb +17 -5
  6. data/app/mailers/spree/order_mailer.rb +12 -4
  7. data/app/models/concerns/spree/adjustment_source.rb +7 -8
  8. data/app/models/concerns/spree/default_price.rb +8 -2
  9. data/app/models/concerns/spree/named_type.rb +1 -1
  10. data/app/models/concerns/spree/ordered_property_value_list.rb +28 -0
  11. data/app/models/concerns/spree/user_address_book.rb +125 -0
  12. data/app/models/concerns/spree/user_api_authentication.rb +6 -2
  13. data/app/models/concerns/spree/user_methods.rb +5 -6
  14. data/app/models/spree/ability.rb +1 -38
  15. data/app/models/spree/address.rb +79 -36
  16. data/app/models/spree/adjustment.rb +74 -25
  17. data/app/models/spree/adjustment_reason.rb +1 -1
  18. data/app/models/spree/app_configuration.rb +35 -0
  19. data/app/models/spree/carton.rb +3 -3
  20. data/app/models/spree/country.rb +7 -1
  21. data/app/models/spree/credit_card.rb +5 -1
  22. data/app/models/spree/gateway.rb +0 -8
  23. data/app/models/spree/inventory_unit.rb +1 -1
  24. data/app/models/spree/item_adjustments.rb +1 -1
  25. data/app/models/spree/line_item_action.rb +1 -1
  26. data/app/models/spree/option_type.rb +3 -2
  27. data/app/models/spree/option_value.rb +1 -1
  28. data/app/models/spree/option_values_variant.rb +1 -1
  29. data/app/models/spree/order.rb +28 -56
  30. data/app/models/spree/order/checkout.rb +18 -20
  31. data/app/models/spree/order_mutex.rb +1 -1
  32. data/app/models/spree/order_promotion.rb +1 -1
  33. data/app/models/spree/order_shipping.rb +6 -12
  34. data/app/models/spree/order_stock_location.rb +1 -1
  35. data/app/models/spree/payment.rb +3 -14
  36. data/app/models/spree/payment/processing.rb +7 -14
  37. data/app/models/spree/payment_method.rb +5 -5
  38. data/app/models/spree/permission_sets/default_customer.rb +31 -0
  39. data/app/models/spree/permission_sets/order_display.rb +4 -0
  40. data/app/models/spree/permission_sets/order_management.rb +3 -0
  41. data/app/models/spree/permission_sets/promotion_display.rb +2 -1
  42. data/app/models/spree/permission_sets/restricted_stock_display.rb +16 -0
  43. data/app/models/spree/permission_sets/restricted_stock_management.rb +16 -0
  44. data/app/models/spree/permission_sets/restricted_stock_transfer_display.rb +17 -0
  45. data/app/models/spree/permission_sets/restricted_stock_transfer_management.rb +51 -0
  46. data/app/models/spree/permission_sets/stock_display.rb +1 -1
  47. data/app/models/spree/permission_sets/stock_management.rb +1 -2
  48. data/app/models/spree/permission_sets/stock_transfer_display.rb +10 -0
  49. data/app/models/spree/permission_sets/stock_transfer_management.rb +11 -0
  50. data/app/models/spree/permission_sets/super_user.rb +9 -0
  51. data/app/models/spree/product.rb +66 -28
  52. data/app/models/spree/product/scopes.rb +7 -22
  53. data/app/models/spree/product_option_type.rb +1 -1
  54. data/app/models/spree/product_promotion_rule.rb +6 -0
  55. data/app/models/spree/product_property.rb +2 -20
  56. data/app/models/spree/promotion/rules/product.rb +2 -1
  57. data/app/models/spree/refund.rb +0 -10
  58. data/app/models/spree/reimbursement.rb +1 -1
  59. data/app/models/spree/return_item.rb +5 -3
  60. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +13 -4
  61. data/app/models/spree/return_item/exchange_variant_eligibility/same_product.rb +2 -2
  62. data/app/models/spree/return_reason.rb +1 -1
  63. data/app/models/spree/role.rb +1 -1
  64. data/app/models/spree/role_user.rb +1 -1
  65. data/app/models/spree/shipment.rb +13 -4
  66. data/app/models/spree/shipping_manifest.rb +9 -3
  67. data/app/models/spree/shipping_method.rb +2 -3
  68. data/app/models/spree/shipping_method_zone.rb +6 -0
  69. data/app/models/spree/state.rb +1 -1
  70. data/app/models/spree/stock_item.rb +15 -3
  71. data/app/models/spree/stock_movement.rb +1 -1
  72. data/app/models/spree/store.rb +3 -0
  73. data/app/models/spree/store_credit.rb +1 -1
  74. data/app/models/spree/store_credit_category.rb +1 -1
  75. data/app/models/spree/store_credit_event.rb +1 -1
  76. data/app/models/spree/store_credit_type.rb +1 -1
  77. data/app/models/spree/store_credit_update_reason.rb +1 -1
  78. data/app/models/spree/store_payment_method.rb +6 -0
  79. data/app/models/spree/tax_rate.rb +3 -10
  80. data/app/models/spree/taxonomy.rb +1 -1
  81. data/app/models/spree/transfer_item.rb +1 -1
  82. data/app/models/spree/unit_cancel.rb +2 -2
  83. data/app/models/spree/user_address.rb +21 -0
  84. data/app/models/spree/user_stock_location.rb +1 -1
  85. data/app/models/spree/variant.rb +28 -13
  86. data/app/models/spree/variant_property_rule.rb +42 -0
  87. data/app/models/spree/variant_property_rule_condition.rb +8 -0
  88. data/app/models/spree/variant_property_rule_value.rb +8 -0
  89. data/app/models/spree/zone.rb +4 -2
  90. data/app/views/spree/carton_mailer/shipped_email.text.erb +1 -1
  91. data/config/locales/en.yml +13 -0
  92. data/db/default/spree/store_credit.rb +0 -1
  93. data/db/default/spree/zones.rb +1 -1
  94. data/db/migrate/20130228210442_create_shipping_method_zone.rb +1 -1
  95. data/db/migrate/20150121022521_remove_environment_from_payment_method.rb +6 -0
  96. data/db/migrate/20150506181611_create_spree_store_credit_payment_method.rb +9 -5
  97. data/db/migrate/20150731201146_add_spree_user_addresses.rb +16 -0
  98. data/db/migrate/20150811210350_remove_mandatory_from_adjustments.rb +5 -0
  99. data/db/migrate/20150811211025_add_finalized_to_spree_adjustments.rb +11 -0
  100. data/db/migrate/20150820160821_add_store_payment_methods.rb +10 -0
  101. data/db/migrate/20150824213633_convert_habtm_to_hmt_for_shipping_methods_zones.rb +17 -0
  102. data/db/migrate/20150824214129_convert_habtm_to_hmt_for_products_promotion_rules.rb +17 -0
  103. data/db/migrate/20150825204216_drop_spree_gateways.rb +20 -0
  104. data/db/migrate/20150909123605_create_variant_properties_and_rules.rb +28 -0
  105. data/lib/generators/spree/dummy/dummy_generator.rb +1 -1
  106. data/lib/generators/spree/install/templates/config/initializers/spree.rb +4 -3
  107. data/lib/spree/core.rb +4 -0
  108. data/lib/spree/core/controller_helpers/payment_parameters.rb +67 -0
  109. data/lib/spree/core/delegate_belongs_to.rb +1 -0
  110. data/lib/spree/core/engine.rb +9 -1
  111. data/lib/spree/core/importer/order.rb +1 -1
  112. data/lib/spree/core/role_configuration.rb +1 -1
  113. data/lib/spree/core/search/variant.rb +20 -2
  114. data/lib/spree/core/unreturned_item_charger.rb +21 -16
  115. data/lib/spree/i18n.rb +6 -24
  116. data/lib/spree/mailer_previews/carton_preview.rb +10 -0
  117. data/lib/spree/mailer_previews/order_preview.rb +18 -0
  118. data/lib/spree/permitted_attributes.rb +4 -1
  119. data/lib/spree/testing_support/capybara_ext.rb +2 -1
  120. data/lib/spree/testing_support/factories/address_factory.rb +9 -1
  121. data/lib/spree/testing_support/factories/credit_card_factory.rb +1 -0
  122. data/lib/spree/testing_support/factories/image_factory.rb +5 -0
  123. data/lib/spree/testing_support/factories/payment_method_factory.rb +4 -8
  124. data/lib/spree/testing_support/factories/user_factory.rb +8 -2
  125. data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +6 -0
  126. data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +16 -0
  127. data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +6 -0
  128. data/lib/tasks/migrations/migrate_user_addresses.rake +29 -0
  129. data/vendor/assets/javascripts/jquery-migrate-1.0.0.js +498 -0
  130. metadata +40 -238
  131. data/CHANGELOG.md +0 -1
  132. data/Gemfile +0 -3
  133. data/Rakefile +0 -16
  134. data/app/models/concerns/spree/user_address.rb +0 -30
  135. data/app/models/spree/permission_sets/restricted_transfer_management.rb +0 -35
  136. data/app/views/spree/admin/orders/customer_details/_autocomplete.js.erb +0 -19
  137. data/lib/spree/i18n/base.rb +0 -17
  138. data/lib/spree/i18n/initializer.rb +0 -1
  139. data/lib/spree/testing_support/mail.rb +0 -20
  140. data/script/rails +0 -9
  141. data/solidus_core.gemspec +0 -48
  142. data/spec/fixtures/thinking-cat.jpg +0 -0
  143. data/spec/helpers/base_helper_spec.rb +0 -173
  144. data/spec/helpers/order_helper_spec.rb +0 -12
  145. data/spec/helpers/products_helper_spec.rb +0 -220
  146. data/spec/helpers/taxons_helper_spec.rb +0 -17
  147. data/spec/lib/calculated_adjustments_spec.rb +0 -7
  148. data/spec/lib/i18n_spec.rb +0 -123
  149. data/spec/lib/search/base_spec.rb +0 -86
  150. data/spec/lib/search/variant_spec.rb +0 -92
  151. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -66
  152. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -92
  153. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -17
  154. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -16
  155. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -39
  156. data/spec/lib/spree/core/current_store_spec.rb +0 -36
  157. data/spec/lib/spree/core/delegate_belongs_to_spec.rb +0 -22
  158. data/spec/lib/spree/core/importer/order_spec.rb +0 -431
  159. data/spec/lib/spree/core/role_configuration_spec.rb +0 -138
  160. data/spec/lib/spree/core/validators/email_spec.rb +0 -48
  161. data/spec/lib/spree/localized_number_spec.rb +0 -38
  162. data/spec/lib/spree/migrations_spec.rb +0 -36
  163. data/spec/lib/spree/money_spec.rb +0 -127
  164. data/spec/lib/tasks/exchanges_spec.rb +0 -231
  165. data/spec/lib/tasks/migrations/copy_shipped_shipments_to_cartons_spec.rb +0 -115
  166. data/spec/lib/tasks/order_capturing_spec.rb +0 -56
  167. data/spec/mailers/carton_mailer_spec.rb +0 -43
  168. data/spec/mailers/order_mailer_spec.rb +0 -122
  169. data/spec/mailers/reimbursement_mailer_spec.rb +0 -40
  170. data/spec/mailers/test_mailer_spec.rb +0 -15
  171. data/spec/models/spree/ability_spec.rb +0 -276
  172. data/spec/models/spree/address_spec.rb +0 -250
  173. data/spec/models/spree/adjustment_reason_spec.rb +0 -13
  174. data/spec/models/spree/adjustment_spec.rb +0 -177
  175. data/spec/models/spree/app_configuration_spec.rb +0 -20
  176. data/spec/models/spree/asset_spec.rb +0 -24
  177. data/spec/models/spree/calculator/default_tax_spec.rb +0 -127
  178. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -25
  179. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -47
  180. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -41
  181. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -15
  182. data/spec/models/spree/calculator/price_sack_spec.rb +0 -30
  183. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -51
  184. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -23
  185. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -13
  186. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -52
  187. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -20
  188. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -30
  189. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -36
  190. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -47
  191. data/spec/models/spree/calculator_spec.rb +0 -36
  192. data/spec/models/spree/carton_spec.rb +0 -133
  193. data/spec/models/spree/classification_spec.rb +0 -15
  194. data/spec/models/spree/concerns/display_money_spec.rb +0 -43
  195. data/spec/models/spree/concerns/user_methods_spec.rb +0 -41
  196. data/spec/models/spree/credit_card_spec.rb +0 -334
  197. data/spec/models/spree/customer_return_spec.rb +0 -276
  198. data/spec/models/spree/exchange_spec.rb +0 -79
  199. data/spec/models/spree/gateway/bogus_simple.rb +0 -20
  200. data/spec/models/spree/gateway/bogus_spec.rb +0 -13
  201. data/spec/models/spree/gateway_spec.rb +0 -82
  202. data/spec/models/spree/inventory_unit_spec.rb +0 -307
  203. data/spec/models/spree/item_adjustments_spec.rb +0 -256
  204. data/spec/models/spree/line_item_spec.rb +0 -191
  205. data/spec/models/spree/option_type_spec.rb +0 -14
  206. data/spec/models/spree/option_value_spec.rb +0 -22
  207. data/spec/models/spree/order/address_spec.rb +0 -50
  208. data/spec/models/spree/order/adjustments_spec.rb +0 -39
  209. data/spec/models/spree/order/callbacks_spec.rb +0 -42
  210. data/spec/models/spree/order/checkout_spec.rb +0 -902
  211. data/spec/models/spree/order/currency_updater_spec.rb +0 -32
  212. data/spec/models/spree/order/finalizing_spec.rb +0 -111
  213. data/spec/models/spree/order/payment_spec.rb +0 -210
  214. data/spec/models/spree/order/risk_assessment_spec.rb +0 -68
  215. data/spec/models/spree/order/state_machine_spec.rb +0 -221
  216. data/spec/models/spree/order/tax_spec.rb +0 -84
  217. data/spec/models/spree/order/totals_spec.rb +0 -24
  218. data/spec/models/spree/order/updating_spec.rb +0 -18
  219. data/spec/models/spree/order/validations_spec.rb +0 -15
  220. data/spec/models/spree/order_cancellations_spec.rb +0 -120
  221. data/spec/models/spree/order_capturing_spec.rb +0 -116
  222. data/spec/models/spree/order_contents_spec.rb +0 -265
  223. data/spec/models/spree/order_inventory_spec.rb +0 -228
  224. data/spec/models/spree/order_mutex_spec.rb +0 -85
  225. data/spec/models/spree/order_promotion_spec.rb +0 -31
  226. data/spec/models/spree/order_shipping_spec.rb +0 -247
  227. data/spec/models/spree/order_spec.rb +0 -1464
  228. data/spec/models/spree/order_stock_location_spec.rb +0 -18
  229. data/spec/models/spree/order_updater_spec.rb +0 -299
  230. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -294
  231. data/spec/models/spree/payment_method_spec.rb +0 -96
  232. data/spec/models/spree/payment_spec.rb +0 -1045
  233. data/spec/models/spree/permission_sets/base_spec.rb +0 -12
  234. data/spec/models/spree/permission_sets/configuration_display.rb +0 -82
  235. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -50
  236. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -22
  237. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -49
  238. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -36
  239. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -60
  240. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -40
  241. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -34
  242. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -26
  243. data/spec/models/spree/permission_sets/report_display_spec.rb +0 -24
  244. data/spec/models/spree/permission_sets/restricted_transfer_management_spec.rb +0 -132
  245. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -26
  246. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -24
  247. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -36
  248. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -28
  249. data/spec/models/spree/preference_spec.rb +0 -80
  250. data/spec/models/spree/preferences/configuration_spec.rb +0 -30
  251. data/spec/models/spree/preferences/preferable_spec.rb +0 -294
  252. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -58
  253. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -78
  254. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -60
  255. data/spec/models/spree/preferences/store_spec.rb +0 -39
  256. data/spec/models/spree/price_spec.rb +0 -42
  257. data/spec/models/spree/product/scopes_spec.rb +0 -148
  258. data/spec/models/spree/product_duplicator_spec.rb +0 -103
  259. data/spec/models/spree/product_filter_spec.rb +0 -26
  260. data/spec/models/spree/product_property_spec.rb +0 -20
  261. data/spec/models/spree/product_spec.rb +0 -437
  262. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -96
  263. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -165
  264. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -115
  265. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -40
  266. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -75
  267. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -67
  268. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -70
  269. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -42
  270. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -94
  271. data/spec/models/spree/promotion/rules/product_spec.rb +0 -143
  272. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -102
  273. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -27
  274. data/spec/models/spree/promotion/rules/user_spec.rb +0 -37
  275. data/spec/models/spree/promotion_builder_spec.rb +0 -118
  276. data/spec/models/spree/promotion_category_spec.rb +0 -17
  277. data/spec/models/spree/promotion_code/code_builder_spec.rb +0 -79
  278. data/spec/models/spree/promotion_code_spec.rb +0 -187
  279. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -114
  280. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -335
  281. data/spec/models/spree/promotion_handler/free_shipping_spec.rb +0 -47
  282. data/spec/models/spree/promotion_handler/page_spec.rb +0 -44
  283. data/spec/models/spree/promotion_rule_spec.rb +0 -28
  284. data/spec/models/spree/promotion_spec.rb +0 -767
  285. data/spec/models/spree/refund_spec.rb +0 -204
  286. data/spec/models/spree/reimbursement/credit_spec.rb +0 -36
  287. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -140
  288. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -83
  289. data/spec/models/spree/reimbursement_performer_spec.rb +0 -30
  290. data/spec/models/spree/reimbursement_spec.rb +0 -231
  291. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -51
  292. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -53
  293. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -46
  294. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -107
  295. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -97
  296. data/spec/models/spree/return_authorization_spec.rb +0 -290
  297. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -77
  298. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -58
  299. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -85
  300. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -32
  301. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -29
  302. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -35
  303. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -65
  304. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  305. data/spec/models/spree/return_item_spec.rb +0 -775
  306. data/spec/models/spree/returns_calculator_spec.rb +0 -14
  307. data/spec/models/spree/shipment_spec.rb +0 -709
  308. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  309. data/spec/models/spree/shipping_method_spec.rb +0 -88
  310. data/spec/models/spree/shipping_rate_spec.rb +0 -142
  311. data/spec/models/spree/state_spec.rb +0 -14
  312. data/spec/models/spree/stock/availability_validator_spec.rb +0 -83
  313. data/spec/models/spree/stock/coordinator_spec.rb +0 -116
  314. data/spec/models/spree/stock/differentiator_spec.rb +0 -39
  315. data/spec/models/spree/stock/estimator_spec.rb +0 -146
  316. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -38
  317. data/spec/models/spree/stock/package_spec.rb +0 -163
  318. data/spec/models/spree/stock/packer_spec.rb +0 -91
  319. data/spec/models/spree/stock/prioritizer_spec.rb +0 -125
  320. data/spec/models/spree/stock/quantifier_spec.rb +0 -115
  321. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -29
  322. data/spec/models/spree/stock/splitter/base_spec.rb +0 -21
  323. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -50
  324. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -29
  325. data/spec/models/spree/stock_item_spec.rb +0 -426
  326. data/spec/models/spree/stock_location_spec.rb +0 -279
  327. data/spec/models/spree/stock_movement_spec.rb +0 -56
  328. data/spec/models/spree/stock_transfer_spec.rb +0 -290
  329. data/spec/models/spree/store_credit_category_spec.rb +0 -17
  330. data/spec/models/spree/store_credit_event_spec.rb +0 -314
  331. data/spec/models/spree/store_credit_spec.rb +0 -876
  332. data/spec/models/spree/store_spec.rb +0 -55
  333. data/spec/models/spree/tax_category_spec.rb +0 -27
  334. data/spec/models/spree/tax_rate_spec.rb +0 -378
  335. data/spec/models/spree/taxon_spec.rb +0 -74
  336. data/spec/models/spree/taxonomy_spec.rb +0 -18
  337. data/spec/models/spree/tracker_spec.rb +0 -21
  338. data/spec/models/spree/transfer_item_spec.rb +0 -264
  339. data/spec/models/spree/unit_cancel_spec.rb +0 -148
  340. data/spec/models/spree/user_spec.rb +0 -223
  341. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -23
  342. data/spec/models/spree/variant/scopes_spec.rb +0 -55
  343. data/spec/models/spree/variant_spec.rb +0 -546
  344. data/spec/models/spree/zone_spec.rb +0 -305
  345. data/spec/spec_helper.rb +0 -78
  346. data/spec/support/big_decimal.rb +0 -5
  347. data/spec/support/concerns/default_price.rb +0 -34
  348. data/spec/support/dummy_ability.rb +0 -4
  349. data/spec/support/test_gateway.rb +0 -2
@@ -41,7 +41,7 @@ module Spree
41
41
  promotion_adjustments = adjustments.select(&:promotion?)
42
42
  promotion_adjustments.each(&:update!)
43
43
 
44
- promo_total = PromotionChooser.new(promotion_adjustments).update
44
+ promo_total = Spree::Config.promotion_chooser_class.new(promotion_adjustments).update
45
45
 
46
46
  # Calculating the totals for the order here would be incorrect. Order's
47
47
  # totals are the sum of the adjustments on all child models, as well as
@@ -1,5 +1,5 @@
1
1
  module Spree
2
- class LineItemAction < ActiveRecord::Base
2
+ class LineItemAction < Spree::Base
3
3
  belongs_to :line_item
4
4
  belongs_to :action, class_name: "Spree::PromotionAction"
5
5
  end
@@ -17,14 +17,15 @@ module Spree
17
17
  validates :name, presence: true, uniqueness: true
18
18
  validates :presentation, presence: true
19
19
 
20
- default_scope -> { order("#{self.table_name}.position") }
20
+ default_scope -> { order(:position) }
21
21
 
22
22
  accepts_nested_attributes_for :option_values, reject_if: lambda { |ov| ov[:name].blank? || ov[:presentation].blank? }, allow_destroy: true
23
23
 
24
24
  after_touch :touch_all_products
25
+ after_save :touch_all_products
25
26
 
26
27
  def touch_all_products
27
- products.update_all(updated_at: Time.current)
28
+ products.find_each(&:touch)
28
29
  end
29
30
  end
30
31
  end
@@ -9,7 +9,7 @@ module Spree
9
9
  validates :name, presence: true, uniqueness: { scope: :option_type_id }
10
10
  validates :presentation, presence: true
11
11
 
12
- after_save :touch
12
+ after_save :touch, if: :changed?
13
13
  after_touch :touch_all_variants
14
14
 
15
15
  self.whitelisted_ransackable_attributes = ['presentation']
@@ -1,5 +1,5 @@
1
1
  module Spree
2
- class OptionValuesVariant < ActiveRecord::Base
2
+ class OptionValuesVariant < Spree::Base
3
3
  belongs_to :variant
4
4
  belongs_to :option_value
5
5
  end
@@ -48,11 +48,11 @@ module Spree
48
48
 
49
49
  belongs_to :store, class_name: 'Spree::Store'
50
50
  has_many :state_changes, as: :stateful
51
- has_many :line_items, -> { order('created_at', 'id') }, dependent: :destroy, inverse_of: :order
51
+ has_many :line_items, -> { order(:created_at, :id) }, dependent: :destroy, inverse_of: :order
52
52
  has_many :payments, dependent: :destroy
53
53
  has_many :return_authorizations, dependent: :destroy, inverse_of: :order
54
54
  has_many :reimbursements, inverse_of: :order
55
- has_many :adjustments, -> { order("#{Adjustment.table_name}.created_at ASC") }, as: :adjustable, inverse_of: :adjustable, dependent: :destroy
55
+ has_many :adjustments, -> { order(:created_at) }, as: :adjustable, inverse_of: :adjustable, dependent: :destroy
56
56
  has_many :line_item_adjustments, through: :line_items, source: :adjustments
57
57
  has_many :shipment_adjustments, through: :shipments, source: :adjustments
58
58
  has_many :inventory_units, inverse_of: :order
@@ -82,7 +82,7 @@ module Spree
82
82
  # Needs to happen before save_permalink is called
83
83
  before_validation :set_currency
84
84
  before_validation :generate_order_number, on: :create
85
- before_validation :clone_billing_address, if: :use_billing?
85
+ before_validation :assign_billing_to_shipping_address, if: :use_billing?
86
86
  attr_accessor :use_billing
87
87
 
88
88
 
@@ -93,7 +93,6 @@ module Spree
93
93
  validates :email, presence: true, if: :require_email
94
94
  validates :email, email: true, if: :require_email, allow_blank: true
95
95
  validates :number, presence: true, uniqueness: { allow_blank: true }
96
- validate :has_available_shipment
97
96
 
98
97
  make_permalink field: :number
99
98
 
@@ -191,6 +190,7 @@ module Spree
191
190
  end
192
191
 
193
192
  def confirmation_required?
193
+ ActiveSupport::Deprecation.warn "Order#confirmation_required is deprecated.", caller
194
194
  true
195
195
  end
196
196
 
@@ -217,12 +217,8 @@ module Spree
217
217
  updater.update
218
218
  end
219
219
 
220
- def clone_billing_address
221
- if bill_address and self.ship_address.nil?
222
- self.ship_address = bill_address.dup
223
- else
224
- self.ship_address.attributes = bill_address.attributes.except('id', 'updated_at', 'created_at')
225
- end
220
+ def assign_billing_to_shipping_address
221
+ self.ship_address = bill_address if bill_address
226
222
  true
227
223
  end
228
224
 
@@ -272,7 +268,7 @@ module Spree
272
268
 
273
269
  self.number ||= loop do
274
270
  # Make a random number.
275
- random = "#{options[:prefix]}#{(0...options[:length]).map { possible.shuffle.first }.join}"
271
+ random = "#{options[:prefix]}#{(0...options[:length]).map { possible.sample }.join}"
276
272
  # Use the random number if no other order exists with it.
277
273
  if self.class.exists?(number: random)
278
274
  # If over half of all possible options are taken add another digit.
@@ -330,10 +326,14 @@ module Spree
330
326
  end
331
327
 
332
328
  def outstanding_balance
329
+ # If reimbursement has happened add it back to total to prevent balance_due payment state
330
+ # See: https://github.com/spree/spree/issues/6229
331
+ adjusted_payment_total = payment_total + refund_total
332
+
333
333
  if state == 'canceled'
334
- -1 * payment_total
334
+ -1 * adjusted_payment_total
335
335
  else
336
- total - payment_total
336
+ total - adjusted_payment_total
337
337
  end
338
338
  end
339
339
 
@@ -341,6 +341,10 @@ module Spree
341
341
  self.outstanding_balance != 0
342
342
  end
343
343
 
344
+ def refund_total
345
+ payments.flat_map(&:refunds).sum(&:amount)
346
+ end
347
+
344
348
  def name
345
349
  if (address = bill_address || ship_address)
346
350
  "#{address.firstname} #{address.lastname}"
@@ -365,7 +369,7 @@ module Spree
365
369
  # Called after transition to complete state when payments will have been processed
366
370
  def finalize!
367
371
  # lock all adjustments (coupon promotions, etc.)
368
- all_adjustments.each{|a| a.close}
372
+ all_adjustments.each(&:finalize!)
369
373
 
370
374
  # update payment and shipment(s) states, and save
371
375
  updater.update_payment_state
@@ -390,7 +394,7 @@ module Spree
390
394
  end
391
395
 
392
396
  def deliver_order_confirmation_email
393
- OrderMailer.confirm_email(self.id).deliver_now
397
+ OrderMailer.confirm_email(self).deliver_later
394
398
  update_column(:confirmation_delivered, true)
395
399
  end
396
400
 
@@ -400,7 +404,10 @@ module Spree
400
404
  end
401
405
 
402
406
  def available_payment_methods
403
- @available_payment_methods ||= (PaymentMethod.available(:front_end) + PaymentMethod.available(:both)).uniq
407
+ @available_payment_methods ||= (
408
+ PaymentMethod.available(:front_end, store: store) +
409
+ PaymentMethod.available(:both, store: store)
410
+ ).uniq
404
411
  end
405
412
 
406
413
  def billing_firstname
@@ -509,6 +516,8 @@ module Spree
509
516
  end
510
517
 
511
518
  def create_proposed_shipments
519
+ return self.shipments if unreturned_exchange?
520
+
512
521
  if completed?
513
522
  raise CannotRebuildShipments.new(Spree.t(:cannot_rebuild_shipments_order_completed))
514
523
  elsif shipments.any? { |s| !s.pending? }
@@ -556,7 +565,7 @@ module Spree
556
565
  end
557
566
 
558
567
  def shipping_eq_billing_address?
559
- (bill_address.empty? && ship_address.empty?) || bill_address.same_as?(ship_address)
568
+ bill_address == ship_address
560
569
  end
561
570
 
562
571
  def set_shipments_cost
@@ -587,19 +596,6 @@ module Spree
587
596
  !approved?
588
597
  end
589
598
 
590
- # moved from api order_decorator. This is a better place for it.
591
- def update_line_items(line_item_params)
592
- return if line_item_params.blank?
593
- line_item_params.each_value do |attributes|
594
- if attributes[:id].present?
595
- self.line_items.find(attributes[:id]).update_attributes!(attributes)
596
- else
597
- self.line_items.create!(attributes)
598
- end
599
- end
600
- self.ensure_updated_shipments
601
- end
602
-
603
599
  def reload(options=nil)
604
600
  remove_instance_variable(:@tax_zone) if defined?(@tax_zone)
605
601
  super
@@ -713,23 +709,6 @@ module Spree
713
709
  Spree::Money.new(total_available_store_credit - total_applicable_store_credit, { currency: currency })
714
710
  end
715
711
 
716
- def payments_attributes=(attributes)
717
- validate_payments_attributes(attributes)
718
- super(attributes)
719
- end
720
-
721
- def validate_payments_attributes(attributes)
722
- attributes = Array.wrap(attributes)
723
- # Ensure the payment methods specified are allowed for this user
724
- payment_methods = Spree::PaymentMethod.where(id: available_payment_methods)
725
- attributes.each do |payment_attributes|
726
- payment_method_id = payment_attributes[:payment_method_id]
727
-
728
- # raise RecordNotFound unless it is an allowed payment method
729
- payment_methods.find(payment_method_id) if payment_method_id
730
- end
731
- end
732
-
733
712
  private
734
713
 
735
714
  def link_by_email
@@ -770,18 +749,11 @@ module Spree
770
749
  end
771
750
  end
772
751
 
773
- def has_available_shipment
774
- return unless has_step?("delivery")
775
- return unless has_step?(:address) && address?
776
- return unless ship_address && ship_address.valid?
777
- # errors.add(:base, :no_shipping_methods_available) if available_shipping_methods.empty?
778
- end
779
-
780
752
  def ensure_available_shipping_rates
781
753
  if shipments.empty? || shipments.any? { |shipment| shipment.shipping_rates.blank? }
782
754
  # After this point, order redirects back to 'address' state and asks user to pick a proper address
783
755
  # Therefore, shipments are not necessary at this point.
784
- shipments.delete_all
756
+ shipments.destroy_all
785
757
  errors.add(:base, Spree.t(:items_cannot_be_shipped)) and return false
786
758
  end
787
759
  end
@@ -796,7 +768,7 @@ module Spree
796
768
  end
797
769
 
798
770
  def send_cancel_email
799
- OrderMailer.cancel_email(self.id).deliver_now
771
+ OrderMailer.cancel_email(self).deliver_later
800
772
  end
801
773
 
802
774
  def after_resume
@@ -67,6 +67,10 @@ module Spree
67
67
  transition to: :awaiting_return
68
68
  end
69
69
 
70
+ event :complete do
71
+ transition to: :complete, from: :confirm
72
+ end
73
+
70
74
  if states[:payment]
71
75
  event :payment_failed do
72
76
  transition to: :payment, from: :confirm
@@ -81,11 +85,6 @@ module Spree
81
85
 
82
86
  # see also process_payments_before_complete below which needs to
83
87
  # be added in the correct sequence.
84
-
85
- event :complete do
86
- transition to: :complete, from: :confirm
87
- transition to: :complete, from: :payment
88
- end
89
88
  end
90
89
 
91
90
  before_transition from: :cart, do: :ensure_line_items_present
@@ -274,12 +273,21 @@ module Spree
274
273
  success
275
274
  end
276
275
 
276
+ def bill_address_attributes=(attributes)
277
+ self.bill_address = Address.immutable_merge(bill_address, attributes)
278
+ end
279
+
280
+ def ship_address_attributes=(attributes)
281
+ self.ship_address = Address.immutable_merge(ship_address, attributes)
282
+ end
283
+
277
284
  def assign_default_addresses!
278
285
  if self.user
279
- self.bill_address = user.bill_address.try!(:dup) if !self.bill_address_id && user.bill_address.try!(:valid?)
286
+ # this is one of 2 places still using User#bill_address
287
+ self.bill_address ||= user.bill_address if user.bill_address.try!(:valid?)
280
288
  # Skip setting ship address if order doesn't have a delivery checkout step
281
289
  # to avoid triggering validations on shipping address
282
- self.ship_address = user.ship_address.try!(:dup) if !self.ship_address_id && user.ship_address.try!(:valid?) && self.checkout_steps.include?("delivery")
290
+ self.ship_address ||= user.ship_address if user.ship_address.try!(:valid?) && self.checkout_steps.include?("delivery")
283
291
  end
284
292
  end
285
293
 
@@ -292,6 +300,7 @@ module Spree
292
300
  def persist_user_credit_card
293
301
  if !self.temporary_credit_card && self.user_id && self.valid_credit_cards.present?
294
302
  default_cc = self.valid_credit_cards.first
303
+ # TODO target for refactoring -- why is order checkout responsible for the user -> credit_card relationship?
295
304
  default_cc.user_id = self.user_id
296
305
  default_cc.default = true
297
306
  default_cc.save
@@ -302,7 +311,8 @@ module Spree
302
311
  if self.payments.from_credit_card.count == 0 && self.user && self.user.default_credit_card.try(:valid?)
303
312
  cc = self.user.default_credit_card
304
313
  self.payments.create!(payment_method_id: cc.payment_method_id, source: cc)
305
- self.bill_address ||= self.user.bill_address.try!(:dup) if self.user.bill_address.try!(:valid?)
314
+ # this is one of 2 places still using User#bill_address
315
+ self.bill_address ||= user.default_credit_card.address || user.bill_address
306
316
  end
307
317
  end
308
318
 
@@ -326,10 +336,6 @@ module Spree
326
336
  end
327
337
  end
328
338
 
329
- # For payment step, filter order parameters to produce the expected nested
330
- # attributes for a single payment and its source, discarding attributes
331
- # for payment methods other than the one selected
332
- #
333
339
  # In case a existing credit card is provided it needs to build the payment
334
340
  # attributes from scratch so we can set the amount. example payload:
335
341
  #
@@ -340,14 +346,6 @@ module Spree
340
346
  # }
341
347
  #
342
348
  def update_params_payment_source
343
- if @updating_params[:payment_source].present?
344
- source_params = @updating_params.delete(:payment_source)[@updating_params[:order][:payments_attributes].first[:payment_method_id].to_s]
345
-
346
- if source_params
347
- @updating_params[:order][:payments_attributes].first[:source_attributes] = source_params
348
- end
349
- end
350
-
351
349
  if @updating_params[:order] && (@updating_params[:order][:payments_attributes] || @updating_params[:order][:existing_card])
352
350
  @updating_params[:order][:payments_attributes] ||= [{}]
353
351
  @updating_params[:order][:payments_attributes].first[:amount] = self.total
@@ -1,5 +1,5 @@
1
1
  module Spree
2
- class OrderMutex < ActiveRecord::Base
2
+ class OrderMutex < Spree::Base
3
3
 
4
4
  class LockFailed < StandardError; end
5
5
 
@@ -3,7 +3,7 @@ module Spree
3
3
  #
4
4
  # 1. A promotion that a user attempted to apply to their order
5
5
  # 2. The specific code that they used
6
- class OrderPromotion < ActiveRecord::Base
6
+ class OrderPromotion < Spree::Base
7
7
  self.table_name = 'spree_orders_promotions'
8
8
 
9
9
  belongs_to :order, class_name: 'Spree::Order'
@@ -72,9 +72,9 @@ class Spree::OrderShipping
72
72
  end
73
73
  end
74
74
 
75
- send_shipment_email(carton) if stock_location.fulfillable? && !suppress_mailer # e.g. digital gift cards that aren't actually shipped
75
+ send_shipment_emails(carton) if stock_location.fulfillable? && !suppress_mailer # e.g. digital gift cards that aren't actually shipped
76
76
  fulfill_order_stock_locations(stock_location)
77
- update_order_state
77
+ @order.update!
78
78
 
79
79
  carton
80
80
  end
@@ -85,15 +85,9 @@ class Spree::OrderShipping
85
85
  Spree::OrderStockLocation.fulfill_for_order_with_stock_location(@order, stock_location)
86
86
  end
87
87
 
88
- def update_order_state
89
- new_state = Spree::OrderUpdater.new(@order).update_shipment_state
90
- @order.update_columns(
91
- shipment_state: new_state,
92
- updated_at: Time.now,
93
- )
94
- end
95
-
96
- def send_shipment_email(carton)
97
- Spree::CartonMailer.shipped_email(carton.id).deliver_now
88
+ def send_shipment_emails(carton)
89
+ carton.orders.each do |order|
90
+ Spree::CartonMailer.shipped_email(order: order, carton: carton).deliver_later
91
+ end
98
92
  end
99
93
  end
@@ -1,5 +1,5 @@
1
1
  module Spree
2
- class OrderStockLocation < ActiveRecord::Base
2
+ class OrderStockLocation < Spree::Base
3
3
  belongs_to :variant, class_name: "Spree::Variant"
4
4
  belongs_to :stock_location, class_name: "Spree::StockLocation"
5
5
  belongs_to :order, class_name: "Spree::Order"
@@ -35,9 +35,8 @@ module Spree
35
35
 
36
36
  validates :amount, numericality: true
37
37
  validates :source, presence: true, if: :source_required?
38
- validates :payment_method, presence: true
39
38
 
40
- default_scope -> { order("#{self.table_name}.created_at") }
39
+ default_scope -> { order(:created_at) }
41
40
 
42
41
  scope :from_credit_card, -> { where(source_type: 'Spree::CreditCard') }
43
42
  scope :with_state, ->(s) { where(state: s.to_s) }
@@ -244,18 +243,8 @@ module Spree
244
243
  end
245
244
 
246
245
  def update_order
247
- if completed? || void?
248
- order.updater.update_payment_total
249
- end
250
-
251
- if order.completed?
252
- order.updater.update_payment_state
253
- order.updater.update_shipments
254
- order.updater.update_shipment_state
255
- end
256
-
257
- if self.completed? || order.completed?
258
- order.persist_totals
246
+ if order.completed? || completed? || void?
247
+ order.update!
259
248
  end
260
249
  end
261
250
 
@@ -51,7 +51,6 @@ module Spree
51
51
  amount ||= money.money.cents
52
52
  started_processing!
53
53
  protect_from_connection_error do
54
- check_environment
55
54
  # Standard ActiveMerchant capture usage
56
55
  response = payment_method.capture(
57
56
  amount,
@@ -68,7 +67,6 @@ module Spree
68
67
  def void_transaction!
69
68
  return true if void?
70
69
  protect_from_connection_error do
71
- check_environment
72
70
 
73
71
  if payment_method.payment_profiles_supported?
74
72
  # Gateways supporting payment profiles will need access to credit card object because this stores the payment profile information
@@ -106,8 +104,13 @@ module Spree
106
104
  :discount => order.promo_total * 100,
107
105
  :currency => currency })
108
106
 
109
- options.merge!({ :billing_address => order.bill_address.try(:active_merchant_hash),
110
- :shipping_address => order.ship_address.try(:active_merchant_hash) })
107
+ bill_address = source.try(:address)
108
+ bill_address ||= order.bill_address
109
+
110
+ options.merge!(
111
+ billing_address: bill_address.try!(:active_merchant_hash),
112
+ shipping_address: order.ship_address.try!(:active_merchant_hash),
113
+ )
111
114
 
112
115
  options
113
116
  end
@@ -150,8 +153,6 @@ module Spree
150
153
 
151
154
  def gateway_action(source, action, success_state)
152
155
  protect_from_connection_error do
153
- check_environment
154
-
155
156
  response = payment_method.send(action, money.money.cents,
156
157
  source,
157
158
  gateway_options)
@@ -215,14 +216,6 @@ module Spree
215
216
  raise Core::GatewayError.new(text)
216
217
  end
217
218
 
218
- # Saftey check to make sure we're not accidentally performing operations on a live gateway.
219
- # Ex. When testing in staging environment with a copy of production data.
220
- def check_environment
221
- return if payment_method.environment == Rails.env
222
- message = Spree.t(:gateway_config_unavailable) + " - #{Rails.env}"
223
- raise Core::GatewayError.new(message)
224
- end
225
-
226
219
  # The unique identifier to be passed in to the payment gateway
227
220
  def gateway_order_id
228
221
  "#{order.number}-#{self.identifier}"