solidus_core 1.0.7 → 1.1.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 (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