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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d38685bcc1d7ee47ba79564d398c99a21dd0d480
4
- data.tar.gz: 7397b8dc2aa601f44baef214fd09939ed87d5d1d
3
+ metadata.gz: e28b0ee86c1ba03353662094d58504d304637094
4
+ data.tar.gz: fe5c696d0f48fc4e4e587fe205a7d806588e2304
5
5
  SHA512:
6
- metadata.gz: 59cad15903b2db9b9168b62aae5da114d58bf2550abdd21f1bf583f32d60430eb4f373289bf7301013b0dd7ccb75039c10118daed54a134816e833c25858bf67
7
- data.tar.gz: 180d7e3848e58b98e1e17e7ffaa29b8339f915f07cd1f8f06c57c9859526015c068cd7eb96c66d708625a91d77d0dffcc6fdfe5352bce99ed90bf8938cd6c0e7
6
+ metadata.gz: 85cac5bfcff4dc8b64841eb1474f185d9238b6d6c630817f46ffb8d02858005c8c1e9457c7a84222b505137f618b3072dcaff3a5b0efb3245604644ea4dc2fdf
7
+ data.tar.gz: 753061a48745dc0a1596bf0c6bab75b8e65c0bb5ee23091271e561d71e363dd9f52e3c8fe14011d91e9e3a3ab12190b4c9c5225e521452d264e568d1161b3c21
@@ -5,11 +5,10 @@ class Spree::BaseController < ApplicationController
5
5
  include Spree::Core::ControllerHelpers::Auth
6
6
  include Spree::Core::ControllerHelpers::RespondWith
7
7
  include Spree::Core::ControllerHelpers::Common
8
+ include Spree::Core::ControllerHelpers::PaymentParameters
8
9
  include Spree::Core::ControllerHelpers::Search
9
10
  include Spree::Core::ControllerHelpers::Store
10
11
  include Spree::Core::ControllerHelpers::StrongParameters
11
12
 
12
13
  respond_to :html
13
14
  end
14
-
15
- require 'spree/i18n/initializer'
@@ -13,11 +13,11 @@ module Spree
13
13
  end
14
14
 
15
15
  def link_to_cart(text = nil)
16
- text = text ? h(text) : Spree.t('cart')
16
+ text = text ? h(text) : Spree.t(:cart)
17
17
  css_class = nil
18
18
 
19
19
  if simple_current_order.nil? or simple_current_order.item_count.zero?
20
- text = "#{text}: (#{Spree.t('empty')})"
20
+ text = "#{text}: (#{Spree.t(:empty)})"
21
21
  css_class = 'empty'
22
22
  else
23
23
  text = "#{text}: (#{simple_current_order.item_count}) <span class='amount'>#{simple_current_order.display_total.to_html}</span>"
@@ -107,14 +107,13 @@ module Spree
107
107
  def taxons_tree(root_taxon, current_taxon, max_level = 1)
108
108
  return '' if max_level < 1 || root_taxon.children.empty?
109
109
  content_tag :ul, class: 'taxons-list' do
110
- taxons = root_taxon.children.map do |taxon|
110
+ root_taxon.children.map do |taxon|
111
111
  css_class = (current_taxon && current_taxon.self_and_ancestors.include?(taxon)) ? 'current' : nil
112
112
  content_tag :li, class: css_class do
113
113
  link_to(taxon.name, seo_url(taxon)) +
114
114
  taxons_tree(taxon, current_taxon, max_level - 1)
115
115
  end
116
- end
117
- safe_join(taxons, "\n")
116
+ end.join("\n").html_safe
118
117
  end
119
118
  end
120
119
 
@@ -52,14 +52,6 @@ module Spree
52
52
  end
53
53
  end
54
54
 
55
- # Deprecated and may be removed from future releases; use
56
- # line_item_description_text(line_item.description) instead.
57
- def line_item_description(variant)
58
- ActiveSupport::Deprecation.warn "line_item_description(variant) is deprecated and may be removed from future releases, use line_item_description_text(line_item.description) instead.", caller
59
-
60
- line_item_description_text(variant.product.description)
61
- end
62
-
63
55
  # Filters and truncates the given description.
64
56
  #
65
57
  # @param description_text [String] the text to filter
@@ -2,11 +2,23 @@ module Spree
2
2
  class CartonMailer < BaseMailer
3
3
  # Send an email to customers to notify that an individual carton has been
4
4
  # shipped.
5
- def shipped_email(carton_id, resend: false)
6
- @carton = Spree::Carton.find(carton_id)
7
- subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
8
- subject += "#{Spree::Store.current.name} #{Spree.t('shipment_mailer.shipped_email.subject')} ##{@carton.order_numbers.join(', ')}"
9
- mail(to: @carton.order_emails, from: from_address(Spree::Store.current), subject: subject)
5
+ def shipped_email(options, deprecated_options={})
6
+ if options.is_a?(Integer)
7
+ ActiveSupport::Deprecation.warn "Calling shipped_email with a carton_id is DEPRECATED. Instead use CartonMailer.shipped_email(order: order, carton: carton)"
8
+ @carton = Carton.find(options)
9
+ @order = @carton.orders.first # assume first order
10
+ @manifest = @carton.manifest # use the entire manifest, since we don't know the precise order
11
+ options = deprecated_options
12
+ else
13
+ @order = options.fetch(:order)
14
+ @carton = options.fetch(:carton)
15
+ @manifest = @carton.manifest_for_order(@order)
16
+ end
17
+ options = {resend: false}.merge(options)
18
+ @store = @order.store
19
+ subject = (options[:resend] ? "[#{Spree.t(:resend).upcase}] " : '')
20
+ subject += "#{@store.name} #{Spree.t('shipment_mailer.shipped_email.subject')} ##{@order.number}"
21
+ mail(to: @order.email, from: from_address(@store), subject: subject)
10
22
  end
11
23
  end
12
24
  end
@@ -2,29 +2,37 @@ module Spree
2
2
  class OrderMailer < BaseMailer
3
3
  def confirm_email(order, resend = false)
4
4
  @order = find_order(order)
5
+ @store = @order.store
5
6
  subject = build_subject(Spree.t('order_mailer.confirm_email.subject'), resend)
6
7
 
7
- mail(to: @order.email, from: from_address(@order.store), subject: subject)
8
+ mail(to: @order.email, from: from_address(@store), subject: subject)
8
9
  end
9
10
 
10
11
  def cancel_email(order, resend = false)
11
12
  @order = find_order(order)
13
+ @store = @order.store
12
14
  subject = build_subject(Spree.t('order_mailer.cancel_email.subject'), resend)
13
15
 
14
- mail(to: @order.email, from: from_address(@order.store), subject: subject)
16
+ mail(to: @order.email, from: from_address(@store), subject: subject)
15
17
  end
16
18
 
17
19
  def inventory_cancellation_email(order, inventory_units, resend = false)
18
20
  @order, @inventory_units = find_order(order), inventory_units
21
+ @store = @order.store
19
22
  subject = build_subject(Spree.t('order_mailer.inventory_cancellation.subject'), resend)
20
23
 
21
- mail(to: @order.email, from: from_address(@order.store), subject: subject)
24
+ mail(to: @order.email, from: from_address(@store), subject: subject)
22
25
  end
23
26
 
24
27
  private
25
28
 
26
29
  def find_order(order)
27
- @order = order.respond_to?(:id) ? order : Spree::Order.find(order)
30
+ if order.respond_to?(:id)
31
+ order
32
+ else
33
+ ActiveSupport::Deprecation.warn("Calling OrderMailer with an id is deprecated. Pass the Spree::Order object instead.")
34
+ Spree::Order.find(order)
35
+ end
28
36
  end
29
37
 
30
38
  def build_subject(subject_text, resend)
@@ -4,20 +4,19 @@ module Spree
4
4
 
5
5
  included do
6
6
  def deals_with_adjustments_for_deleted_source
7
- adjustment_scope = self.adjustments.includes(:order).references(:spree_orders)
7
+ adjustment_scope = self.adjustments.joins(:order)
8
8
 
9
9
  # For incomplete orders, remove the adjustment completely.
10
- adjustment_scope.where("spree_orders.completed_at IS NULL").destroy_all
10
+ adjustment_scope.where(spree_orders: { completed_at: nil }).destroy_all
11
11
 
12
12
  # For complete orders, the source will be invalid.
13
13
  # Therefore we nullify the source_id, leaving the adjustment in place.
14
14
  # This would mean that the order's total is not altered at all.
15
- adjustment_scope.where("spree_orders.completed_at IS NOT NULL").each do |adjustment|
16
- adjustment.update_columns(
17
- source_id: nil,
18
- updated_at: Time.now,
19
- )
20
- end
15
+ attrs = {
16
+ source_id: nil,
17
+ updated_at: Time.now
18
+ }
19
+ adjustment_scope.where.not(spree_orders: { completed_at: nil }).update_all(attrs)
21
20
  end
22
21
  end
23
22
  end
@@ -4,11 +4,17 @@ module Spree
4
4
 
5
5
  included do
6
6
  has_one :default_price,
7
- -> { where currency: Spree::Config[:currency] },
7
+ -> { where currency: Spree::Config[:currency], is_default: true },
8
8
  class_name: 'Spree::Price',
9
9
  dependent: :destroy
10
10
 
11
- delegate_belongs_to :default_price, :display_price, :display_amount, :price, :price=, :currency
11
+ def find_or_build_default_price
12
+ default_price || build_default_price
13
+ end
14
+
15
+ delegate :display_price, :display_amount,
16
+ :price, :price=, :currency, :currency=,
17
+ to: :find_or_build_default_price
12
18
 
13
19
  after_save :save_default_price
14
20
 
@@ -4,7 +4,7 @@ module Spree
4
4
 
5
5
  included do
6
6
  scope :active, -> { where(active: true) }
7
- default_scope -> { order("LOWER(#{self.table_name}.name)") }
7
+ default_scope -> { order(arel_table[:name].lower) }
8
8
 
9
9
  validates :name, presence: true, uniqueness: { case_sensitive: false }
10
10
  end
@@ -0,0 +1,28 @@
1
+ module Spree
2
+ module OrderedPropertyValueList
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ acts_as_list
7
+
8
+ validates :property, presence: true
9
+ validates_with Spree::Validations::DbMaximumLengthValidator, field: :value
10
+
11
+ default_scope -> { order(:position) }
12
+
13
+ # virtual attributes for use with AJAX autocompletion
14
+ def property_name
15
+ property.name if property
16
+ end
17
+
18
+ def property_name=(name)
19
+ unless name.blank?
20
+ unless property = Property.find_by(name: name)
21
+ property = Property.create(name: name, presentation: name)
22
+ end
23
+ self.property = property
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,125 @@
1
+ module Spree
2
+ module UserAddressBook
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ has_many :user_addresses, -> { active }, {foreign_key: "user_id", class_name: "Spree::UserAddress"} do
7
+
8
+ def find_first_by_address_values(address_attrs)
9
+ detect { |ua| ua.address == Address.new(address_attrs) }
10
+ end
11
+
12
+ # @note this method enforces only one default address per user
13
+ def mark_default(user_address)
14
+ # the checks of persisted? allow us to build a User and associate Addresses at once
15
+ ActiveRecord::Base.transaction do
16
+ (self - [user_address]).each do |ua| #update_all would be nice, but it bypasses ActiveRecord callbacks
17
+ ua.persisted? ? ua.update!(default: false) : ua.default = false
18
+ end
19
+ user_address.persisted? ? user_address.update!(default: true, archived: false) : user_address.default = true
20
+ end
21
+ end
22
+ end
23
+
24
+ has_many :addresses, through: :user_addresses
25
+
26
+ # bill_address is only minimally used now, but we can't get rid of it without a major version release
27
+ belongs_to :bill_address, class_name: 'Spree::Address'
28
+
29
+ def bill_address=(address)
30
+ # stow a copy in our address book too
31
+ address = save_in_address_book(address.attributes) if address
32
+ super(address)
33
+ end
34
+
35
+ def bill_address_attributes=(attributes)
36
+ self.bill_address = Address.immutable_merge(bill_address, attributes)
37
+ end
38
+
39
+ def default_address
40
+ user_addresses.default.first.try(:address)
41
+ end
42
+
43
+ def default_address=(address)
44
+ save_in_address_book(address.attributes, true) if address
45
+ end
46
+
47
+ def default_address_attributes=(attributes)
48
+ # see "Nested Attributes Examples" section of http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for
49
+ # this #{fieldname}_attributes= method works with fields_for in the views
50
+ # even without declaring accepts_nested_attributes_for
51
+ self.default_address = Address.immutable_merge(default_address, attributes)
52
+ end
53
+
54
+ alias_method :ship_address, :default_address
55
+ alias_method :ship_address_attributes=, :default_address_attributes=
56
+
57
+ def ship_address=(address)
58
+ be_default = Spree::Config.automatic_default_address
59
+ save_in_address_book(address.attributes, be_default)
60
+ end
61
+
62
+ def persist_order_address(order)
63
+ if Spree::Config.automatic_default_address
64
+ save_in_address_book(order.ship_address.attributes, true)
65
+ save_in_address_book(order.bill_address.attributes, order.ship_address.nil?)
66
+ else
67
+ save_in_address_book(order.ship_address.attributes)
68
+ save_in_address_book(order.bill_address.attributes)
69
+ end
70
+ end
71
+
72
+ # Add an address to the user's list of saved addresses for future autofill
73
+ # @param address_attributes HashWithIndifferentAccess of attributes that will be
74
+ # treated as value equality to de-dup among existing Addresses
75
+ # @param default set whether or not this address will show up from
76
+ # #default_address or not
77
+ def save_in_address_book(address_attributes, default = false)
78
+ return nil unless address_attributes.present?
79
+ address_attributes = address_attributes.with_indifferent_access
80
+
81
+ new_address = Address.factory(address_attributes)
82
+ return new_address unless new_address.valid?
83
+
84
+ first_one = user_addresses.empty?
85
+
86
+ if address_attributes[:id].present? && new_address.id != address_attributes[:id]
87
+ remove_from_address_book(address_attributes[:id])
88
+ end
89
+
90
+ user_address = prepare_user_address(new_address)
91
+ user_addresses.mark_default(user_address) if (default || first_one)
92
+
93
+ if persisted?
94
+ user_address.save!
95
+ user_addresses.reset #ensures proper ordering
96
+ end
97
+
98
+ user_address.address
99
+ end
100
+
101
+ def mark_default_address(address)
102
+ user_addresses.mark_default(user_addresses.find_by(address: address))
103
+ end
104
+
105
+ def remove_from_address_book(address_id)
106
+ user_address = user_addresses.find_by(address_id: address_id)
107
+ if user_address
108
+ user_address.update_attributes(archived: true, default: false)
109
+ else
110
+ false
111
+ end
112
+ end
113
+
114
+ private
115
+
116
+ def prepare_user_address(new_address)
117
+ user_address = user_addresses.all_historical.find_first_by_address_values(new_address.attributes)
118
+ user_address ||= user_addresses.build
119
+ user_address.address = new_address
120
+ user_address.archived = false
121
+ user_address
122
+ end
123
+ end
124
+ end
125
+ end
@@ -1,7 +1,7 @@
1
1
  module Spree
2
2
  module UserApiAuthentication
3
3
  def generate_spree_api_key!
4
- self.spree_api_key = SecureRandom.hex(24)
4
+ generate_spree_api_key
5
5
  save!
6
6
  end
7
7
 
@@ -10,8 +10,12 @@ module Spree
10
10
  end
11
11
 
12
12
  def clear_spree_api_key!
13
- self.spree_api_key = nil
13
+ clear_spree_api_key
14
14
  save!
15
15
  end
16
+
17
+ def clear_spree_api_key
18
+ self.spree_api_key = nil
19
+ end
16
20
  end
17
21
  end
@@ -4,13 +4,13 @@ module Spree
4
4
 
5
5
  include Spree::UserApiAuthentication
6
6
  include Spree::UserReporting
7
- include Spree::UserAddress
7
+ include Spree::UserAddressBook
8
8
  include Spree::UserPaymentSource
9
9
 
10
10
  included do
11
11
  extend Spree::DisplayMoney
12
12
 
13
- has_many :role_users, foreign_key: "user_id", class_name: "Spree::RoleUser"
13
+ has_many :role_users, foreign_key: "user_id", class_name: "Spree::RoleUser", dependent: :destroy
14
14
  has_many :spree_roles, through: :role_users, source: :role
15
15
 
16
16
  has_many :user_stock_locations, foreign_key: "user_id", class_name: "Spree::UserStockLocation"
@@ -23,11 +23,8 @@ module Spree
23
23
  has_many :store_credit_events, through: :store_credits
24
24
  money_methods :total_available_store_credit
25
25
 
26
- belongs_to :ship_address, class_name: 'Spree::Address'
27
- belongs_to :bill_address, class_name: 'Spree::Address'
28
-
29
26
  def self.ransackable_associations(auth_object=nil)
30
- %w[bill_address ship_address]
27
+ %w[addresses]
31
28
  end
32
29
 
33
30
  def self.ransackable_attributes(auth_object=nil)
@@ -46,6 +43,8 @@ module Spree
46
43
  self_orders = self.orders
47
44
  self_orders = self_orders.where(frontend_viewable: true) if only_frontend_viewable
48
45
  self_orders = self_orders.where(store: store) if store
46
+ self_orders = self_orders.where('updated_at > ?', Spree::Config.completable_order_updated_cutoff_days.days.ago) if Spree::Config.completable_order_updated_cutoff_days
47
+ self_orders = self_orders.where('created_at > ?', Spree::Config.completable_order_created_cutoff_days.days.ago) if Spree::Config.completable_order_created_cutoff_days
49
48
  last_order = self_orders.order(:created_at).last
50
49
  last_order unless last_order.try!(:completed?)
51
50
  end
@@ -28,9 +28,8 @@ module Spree
28
28
  @user = current_user || Spree.user_class.new
29
29
 
30
30
  alias_actions
31
- grant_default_permissions
32
- register_extension_abilities
33
31
  activate_permission_sets
32
+ register_extension_abilities
34
33
  end
35
34
 
36
35
  private
@@ -47,42 +46,6 @@ module Spree
47
46
  alias_action :index, :read, to: :display
48
47
  end
49
48
 
50
- def grant_default_permissions
51
- # if the user is a "super user" give them full permissions, otherwise give them the permissions
52
- # required to checkout and use the frontend.
53
- if user.respond_to?(:has_spree_role?) && user.has_spree_role?('admin')
54
- can :manage, :all
55
- else
56
- grant_generic_user_permissions
57
- end
58
- end
59
-
60
- def grant_generic_user_permissions
61
- can :display, Country
62
- can :display, OptionType
63
- can :display, OptionValue
64
- can :create, Order
65
- can [:read, :update], Order do |order, token|
66
- order.user == user || order.guest_token && token == order.guest_token
67
- end
68
- can :create, ReturnAuthorization do |return_authorization|
69
- return_authorization.order.user == user
70
- end
71
- can [:display, :update], CreditCard, user_id: user.id
72
- can :display, Product
73
- can :display, ProductProperty
74
- can :display, Property
75
- can :create, Spree.user_class
76
- can [:read, :update, :destroy], Spree.user_class, id: user.id
77
- can :display, State
78
- can :display, StockItem, stock_location: { active: true }
79
- can :display, StockLocation, active: true
80
- can :display, Taxon
81
- can :display, Taxonomy
82
- can [:display, :view_out_of_stock], Variant
83
- can :display, Zone
84
- end
85
-
86
49
  # Before, this was the only way to extend this ability. Permission sets have been added since.
87
50
  # It is recommended to use them instead for extension purposes if possible.
88
51
  def register_extension_abilities