spree_core 2.3.13 → 2.4.0.rc1

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 (232) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js.coffee.erb +1 -5
  3. data/app/helpers/spree/base_helper.rb +22 -11
  4. data/app/helpers/spree/products_helper.rb +8 -7
  5. data/app/mailers/spree/base_mailer.rb +1 -0
  6. data/app/mailers/spree/reimbursement_mailer.rb +10 -0
  7. data/app/mailers/spree/test_mailer.rb +2 -3
  8. data/app/models/concerns/spree/adjustment_source.rb +24 -0
  9. data/app/models/concerns/spree/calculated_adjustments.rb +33 -0
  10. data/app/models/concerns/spree/named_type.rb +12 -0
  11. data/app/models/concerns/spree/user_address.rb +30 -0
  12. data/app/models/concerns/spree/user_payment_source.rb +19 -0
  13. data/app/models/spree/address.rb +13 -6
  14. data/app/models/spree/adjustment.rb +5 -5
  15. data/app/models/spree/app_configuration.rb +8 -4
  16. data/app/models/spree/asset.rb +1 -1
  17. data/app/models/spree/base.rb +0 -3
  18. data/app/models/spree/calculator/flat_rate.rb +1 -5
  19. data/app/models/spree/calculator/returns/default_refund_amount.rb +36 -0
  20. data/app/models/spree/classification.rb +1 -1
  21. data/app/models/spree/credit_card.rb +18 -22
  22. data/app/models/spree/customer_return.rb +70 -0
  23. data/app/models/spree/exchange.rb +42 -0
  24. data/app/models/spree/gateway/bogus.rb +3 -3
  25. data/app/models/spree/image.rb +1 -1
  26. data/app/models/spree/inventory_unit.rb +32 -8
  27. data/app/models/spree/item_adjustments.rb +7 -11
  28. data/app/models/spree/legacy_user.rb +2 -2
  29. data/app/models/spree/line_item.rb +25 -12
  30. data/app/models/spree/option_type.rb +1 -1
  31. data/app/models/spree/option_value.rb +1 -8
  32. data/app/models/spree/order.rb +163 -145
  33. data/app/models/spree/order/checkout.rb +35 -23
  34. data/app/models/spree/order/payments.rb +66 -0
  35. data/app/models/spree/order_contents.rb +34 -24
  36. data/app/models/spree/order_populator.rb +6 -4
  37. data/app/models/spree/order_updater.rb +10 -1
  38. data/app/models/spree/payment.rb +19 -16
  39. data/app/models/spree/payment/processing.rb +40 -72
  40. data/app/models/spree/payment_method.rb +1 -1
  41. data/app/models/spree/payment_method/check.rb +0 -2
  42. data/app/models/spree/preference.rb +1 -1
  43. data/app/models/spree/preferences/preferable.rb +20 -0
  44. data/app/models/spree/price.rb +13 -3
  45. data/app/models/spree/product.rb +24 -29
  46. data/app/models/spree/product_property.rb +0 -2
  47. data/app/models/spree/promotion.rb +66 -24
  48. data/app/models/spree/promotion/actions/create_adjustment.rb +2 -2
  49. data/app/models/spree/promotion/actions/create_item_adjustments.rb +15 -11
  50. data/app/models/spree/promotion/actions/create_line_items.rb +2 -12
  51. data/app/models/spree/promotion/rules/first_order.rb +6 -2
  52. data/app/models/spree/promotion/rules/item_total.rb +42 -4
  53. data/app/models/spree/promotion/rules/one_use_per_user.rb +24 -0
  54. data/app/models/spree/promotion/rules/product.rb +13 -11
  55. data/app/models/spree/promotion/rules/taxon.rb +61 -0
  56. data/app/models/spree/promotion/rules/user.rb +1 -1
  57. data/app/models/spree/promotion/rules/user_logged_in.rb +4 -1
  58. data/app/models/spree/promotion_category.rb +6 -0
  59. data/app/models/spree/promotion_handler/cart.rb +14 -18
  60. data/app/models/spree/promotion_handler/coupon.rb +25 -16
  61. data/app/models/spree/promotion_rule.rb +13 -0
  62. data/app/models/spree/property.rb +1 -3
  63. data/app/models/spree/refund.rb +91 -0
  64. data/app/models/spree/refund_reason.rb +13 -0
  65. data/app/models/spree/reimbursement.rb +148 -0
  66. data/app/models/spree/reimbursement/credit.rb +25 -0
  67. data/app/models/spree/reimbursement/reimbursement_type_engine.rb +56 -0
  68. data/app/models/spree/reimbursement/reimbursement_type_validator.rb +12 -0
  69. data/app/models/spree/reimbursement_performer.rb +43 -0
  70. data/app/models/spree/reimbursement_tax_calculator.rb +38 -0
  71. data/app/models/spree/reimbursement_type.rb +16 -0
  72. data/app/models/spree/reimbursement_type/credit.rb +13 -0
  73. data/app/models/spree/reimbursement_type/exchange.rb +9 -0
  74. data/app/models/spree/reimbursement_type/original_payment.rb +13 -0
  75. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +50 -0
  76. data/app/models/spree/return_authorization.rb +52 -68
  77. data/app/models/spree/return_authorization_reason.rb +7 -0
  78. data/app/models/spree/return_item.rb +230 -0
  79. data/app/models/spree/return_item/default_eligibility_validator.rb +27 -0
  80. data/app/models/spree/return_item/eligibility_validator/base_validator.rb +24 -0
  81. data/app/models/spree/return_item/eligibility_validator/rma_required.rb +17 -0
  82. data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +16 -0
  83. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +34 -0
  84. data/app/models/spree/return_item/exchange_variant_eligibility/same_product.rb +10 -0
  85. data/app/models/spree/returns_calculator.rb +8 -0
  86. data/app/models/spree/shipment.rb +209 -154
  87. data/app/models/spree/shipment_handler.rb +43 -0
  88. data/app/models/spree/shipping_calculator.rb +1 -1
  89. data/app/models/spree/shipping_category.rb +2 -2
  90. data/app/models/spree/shipping_method.rb +1 -1
  91. data/app/models/spree/shipping_method_category.rb +1 -1
  92. data/app/models/spree/shipping_rate.rb +4 -0
  93. data/app/models/spree/stock/adjuster.rb +10 -11
  94. data/app/models/spree/stock/availability_validator.rb +6 -10
  95. data/app/models/spree/stock/content_item.rb +48 -0
  96. data/app/models/spree/stock/coordinator.rb +14 -7
  97. data/app/models/spree/stock/estimator.rb +1 -1
  98. data/app/models/spree/stock/inventory_unit_builder.rb +21 -0
  99. data/app/models/spree/stock/package.rb +38 -51
  100. data/app/models/spree/stock/packer.rb +13 -11
  101. data/app/models/spree/stock/prioritizer.rb +7 -7
  102. data/app/models/spree/stock/splitter/base.rb +2 -2
  103. data/app/models/spree/stock_item.rb +6 -9
  104. data/app/models/spree/stock_location.rb +17 -25
  105. data/app/models/spree/stock_movement.rb +1 -8
  106. data/app/models/spree/stock_transfer.rb +0 -2
  107. data/app/models/spree/store.rb +1 -1
  108. data/app/models/spree/tax_category.rb +2 -2
  109. data/app/models/spree/tax_rate.rb +16 -22
  110. data/app/models/spree/taxon.rb +1 -1
  111. data/app/models/spree/variant.rb +45 -23
  112. data/app/models/spree/zone.rb +17 -17
  113. data/app/models/spree/zone_member.rb +1 -1
  114. data/app/views/layouts/spree/base_mailer.html.erb +784 -0
  115. data/app/views/spree/order_mailer/cancel_email.html.erb +45 -0
  116. data/app/views/spree/order_mailer/cancel_email.text.erb +2 -2
  117. data/app/views/spree/order_mailer/confirm_email.html.erb +84 -0
  118. data/app/views/spree/order_mailer/confirm_email.text.erb +2 -2
  119. data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +22 -0
  120. data/app/views/spree/shared/_base_mailer_footer.html.erb +20 -0
  121. data/app/views/spree/shared/_base_mailer_header.html.erb +31 -0
  122. data/app/views/spree/shipment_mailer/shipped_email.html.erb +34 -0
  123. data/app/views/spree/test_mailer/test_email.html.erb +40 -0
  124. data/app/views/spree/test_mailer/test_email.text.erb +2 -2
  125. data/config/initializers/friendly_id.rb +88 -0
  126. data/config/initializers/premailer_assets.rb +1 -0
  127. data/config/initializers/user_class_extensions.rb +9 -22
  128. data/config/locales/en.yml +180 -12
  129. data/db/default/spree/states.rb +73 -55
  130. data/db/migrate/20130213191427_create_default_stock.rb +1 -0
  131. data/db/migrate/20130807024301_upgrade_adjustments.rb +4 -5
  132. data/db/migrate/20140309033438_create_store_from_preferences.rb +0 -7
  133. data/db/migrate/20140318191500_create_spree_taxons_promotion_rules.rb +8 -0
  134. data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +1 -1
  135. data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +5 -3
  136. data/db/migrate/20140625214618_create_spree_refunds.rb +12 -0
  137. data/db/migrate/20140702140656_create_spree_return_authorization_inventory_unit.rb +12 -0
  138. data/db/migrate/20140707125621_rename_return_authorization_inventory_unit_to_return_items.rb +5 -0
  139. data/db/migrate/20140709160534_backfill_line_item_pre_tax_amount.rb +10 -0
  140. data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +55 -0
  141. data/db/migrate/20140710181204_add_amount_fields_to_return_items.rb +7 -0
  142. data/db/migrate/20140710190048_drop_return_authorization_amount.rb +5 -0
  143. data/db/migrate/20140713140455_create_spree_return_authorization_reasons.rb +28 -0
  144. data/db/migrate/20140713140527_create_spree_refund_reasons.rb +14 -0
  145. data/db/migrate/20140713142214_rename_return_authorization_reason.rb +5 -0
  146. data/db/migrate/20140715182625_create_spree_promotion_categories.rb +11 -0
  147. data/db/migrate/20140716204111_drop_received_at_on_return_items.rb +9 -0
  148. data/db/migrate/20140716212330_add_reception_and_acceptance_status_to_return_items.rb +6 -0
  149. data/db/migrate/20140717155155_create_default_refund_reason.rb +9 -0
  150. data/db/migrate/20140717185932_add_default_to_spree_stock_locations.rb +5 -0
  151. data/db/migrate/20140718133010_create_spree_customer_returns.rb +9 -0
  152. data/db/migrate/20140718133349_add_customer_return_id_to_return_item.rb +6 -0
  153. data/db/migrate/20140718195325_create_friendly_id_slugs.rb +15 -0
  154. data/db/migrate/20140723004419_rename_spree_refund_return_authorization_id.rb +5 -0
  155. data/db/migrate/20140723152808_increase_return_item_pre_tax_amount_precision.rb +13 -0
  156. data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +15 -0
  157. data/db/migrate/20140725131539_create_spree_reimbursements.rb +21 -0
  158. data/db/migrate/20140728225422_add_promotionable_to_spree_products.rb +5 -0
  159. data/db/migrate/20140729133613_add_exchange_inventory_unit_foreign_keys.rb +7 -0
  160. data/db/migrate/20140730155938_add_acceptance_status_errors_to_return_item.rb +5 -0
  161. data/db/migrate/20140731150017_create_spree_reimbursement_types.rb +20 -0
  162. data/db/migrate/20140805171035_add_default_to_spree_credit_cards.rb +5 -0
  163. data/db/migrate/20140805171219_make_existing_credit_cards_default.rb +10 -0
  164. data/db/migrate/20140806144901_add_type_to_reimbursement_type.rb +9 -0
  165. data/db/migrate/20140808184039_create_spree_reimbursement_credits.rb +10 -0
  166. data/db/migrate/20140827170513_add_meta_title_to_spree_products.rb +7 -0
  167. data/db/migrate/20140924164824_add_code_to_spree_tax_categories.rb +5 -0
  168. data/db/migrate/20141002191113_add_code_to_spree_shipping_methods.rb +5 -0
  169. data/db/migrate/20141007230328_add_cancel_audit_fields_to_spree_orders.rb +6 -0
  170. data/db/migrate/20141009204607_add_store_id_to_orders.rb +8 -0
  171. data/lib/generators/spree/install/install_generator.rb +7 -3
  172. data/lib/spree/core.rb +11 -10
  173. data/lib/spree/core/controller_helpers/common.rb +3 -10
  174. data/lib/spree/core/controller_helpers/order.rb +15 -12
  175. data/lib/spree/core/controller_helpers/strong_parameters.rb +9 -9
  176. data/lib/spree/core/engine.rb +8 -1
  177. data/lib/spree/core/importer/order.rb +5 -17
  178. data/lib/spree/core/search/base.rb +1 -1
  179. data/lib/spree/core/validators/email.rb +1 -1
  180. data/lib/spree/core/version.rb +1 -1
  181. data/lib/spree/instrumentation.rb +41 -0
  182. data/lib/spree/migrations.rb +3 -7
  183. data/lib/spree/money.rb +2 -2
  184. data/lib/spree/permitted_attributes.rb +10 -9
  185. data/lib/spree/testing_support/ability_helpers.rb +25 -25
  186. data/lib/spree/testing_support/authorization_helpers.rb +3 -5
  187. data/lib/spree/testing_support/capybara_ext.rb +2 -2
  188. data/lib/spree/testing_support/factories/calculator_factory.rb +0 -8
  189. data/lib/spree/testing_support/factories/credit_card_factory.rb +1 -1
  190. data/lib/spree/testing_support/factories/customer_return_factory.rb +31 -0
  191. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +1 -0
  192. data/lib/spree/testing_support/factories/line_item_factory.rb +2 -1
  193. data/lib/spree/testing_support/factories/order_factory.rb +11 -6
  194. data/lib/spree/testing_support/factories/promotion_category_factory.rb +6 -0
  195. data/lib/spree/testing_support/factories/promotion_factory.rb +9 -7
  196. data/lib/spree/testing_support/factories/refund_factory.rb +14 -0
  197. data/lib/spree/testing_support/factories/reimbursement_factory.rb +16 -0
  198. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +7 -0
  199. data/lib/spree/testing_support/factories/return_authorization_factory.rb +9 -3
  200. data/lib/spree/testing_support/factories/return_item_factory.rb +10 -0
  201. data/lib/spree/testing_support/factories/shipment_factory.rb +1 -0
  202. data/lib/spree/testing_support/factories/shipping_method_factory.rb +3 -2
  203. data/lib/spree/testing_support/factories/stock_factory.rb +12 -11
  204. data/lib/spree/testing_support/flash.rb +2 -2
  205. data/lib/tasks/email.rake +7 -0
  206. data/lib/tasks/exchanges.rake +70 -0
  207. data/vendor/assets/javascripts/jquery.validate/localization/messages_et.js +23 -0
  208. data/vendor/assets/javascripts/jquery.validate/localization/messages_eu.js +25 -0
  209. data/vendor/assets/javascripts/jquery.validate/localization/messages_hr.js +25 -0
  210. data/vendor/assets/javascripts/jquery.validate/localization/messages_ka.js +25 -0
  211. data/vendor/assets/javascripts/jquery.validate/localization/messages_ko.js +25 -0
  212. data/vendor/assets/javascripts/jquery.validate/localization/messages_my.js +25 -0
  213. data/vendor/assets/javascripts/jquery.validate/localization/messages_pt_BR.js +26 -0
  214. data/vendor/assets/javascripts/jquery.validate/localization/messages_pt_PT.js +26 -0
  215. data/vendor/assets/javascripts/jquery.validate/localization/messages_sl.js +25 -0
  216. data/vendor/assets/javascripts/jquery.validate/localization/messages_sv.js +23 -0
  217. data/vendor/assets/javascripts/jquery.validate/localization/messages_uk.js +25 -0
  218. data/vendor/assets/javascripts/jquery.validate/localization/messages_zh.js +25 -0
  219. data/vendor/assets/javascripts/jquery.validate/localization/messages_zh_TW.js +26 -0
  220. metadata +163 -47
  221. data/app/models/concerns/spree/ransackable_attributes.rb +0 -19
  222. data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +0 -5
  223. data/db/migrate/20141101231208_fix_adjustment_order_presence.rb +0 -13
  224. data/db/migrate/20141105213646_update_classifications_positions.rb +0 -9
  225. data/db/migrate/20141120135441_add_guest_token_index_to_spree_orders.rb +0 -5
  226. data/db/migrate/20150515211137_fix_adjustment_order_id.rb +0 -70
  227. data/lib/spree/core/adjustment_source.rb +0 -26
  228. data/lib/spree/core/calculated_adjustments.rb +0 -35
  229. data/lib/spree/core/controller_helpers.rb +0 -20
  230. data/lib/spree/core/user_address.rb +0 -32
  231. data/lib/spree/core/user_payment_source.rb +0 -20
  232. data/lib/spree/localized_number.rb +0 -20
@@ -10,12 +10,10 @@ module Spree
10
10
  ensure_country_id_from_params params[:bill_address_attributes]
11
11
  ensure_state_id_from_params params[:bill_address_attributes]
12
12
 
13
- order = Spree::Order.create!
13
+ create_params = params.slice :currency
14
+ order = Spree::Order.create! create_params
14
15
  order.associate_user!(user)
15
16
 
16
- shipments_attrs = params.delete(:shipments_attributes)
17
-
18
- create_shipments_from_params(shipments_attrs, order)
19
17
  create_line_items_from_params(params.delete(:line_items_attributes),order)
20
18
  create_shipments_from_params(params.delete(:shipments_attributes), order)
21
19
  create_adjustments_from_params(params.delete(:adjustments_attributes), order)
@@ -30,15 +28,8 @@ module Spree
30
28
 
31
29
  order.update_attributes!(params)
32
30
 
33
- order.create_proposed_shipments unless shipments_attrs.present?
34
-
35
31
  # Really ensure that the order totals & states are correct
36
32
  order.updater.update
37
- if shipments_attrs.present?
38
- order.shipments.each_with_index do |shipment, index|
39
- shipment.update_columns(cost: shipments_attrs[index][:cost].to_f) if shipments_attrs[index][:cost].present?
40
- end
41
- end
42
33
  order.reload
43
34
  rescue Exception => e
44
35
  order.destroy if order && order.persisted?
@@ -54,7 +45,7 @@ module Spree
54
45
  begin
55
46
  shipment = order.shipments.build
56
47
  shipment.tracking = s[:tracking]
57
- shipment.stock_location = Spree::StockLocation.find_by_admin_name(s[:stock_location]) || Spree::StockLocation.find_by_name!(s[:stock_location])
48
+ shipment.stock_location = Spree::StockLocation.find_by_name!(s[:stock_location])
58
49
 
59
50
  inventory_units = s[:inventory_units] || []
60
51
  inventory_units.each do |iu|
@@ -119,11 +110,8 @@ module Spree
119
110
  return [] unless adjustments
120
111
  adjustments.each do |a|
121
112
  begin
122
- adjustment = order.adjustments.build(
123
- order: order,
124
- amount: a[:amount].to_f,
125
- label: a[:label]
126
- )
113
+ adjustment = order.adjustments.build(:amount => a[:amount].to_f,
114
+ :label => a[:label])
127
115
  adjustment.save!
128
116
  adjustment.close!
129
117
  rescue Exception => e
@@ -42,7 +42,7 @@ module Spree
42
42
 
43
43
  def add_eagerload_scopes scope
44
44
  if include_images
45
- scope.includes({master: [:prices, :images]})
45
+ scope.eager_load({master: [:prices, :images]})
46
46
  else
47
47
  scope.includes(master: :prices)
48
48
  end
@@ -1,6 +1,6 @@
1
1
  class EmailValidator < ActiveModel::EachValidator
2
2
  def validate_each(record,attribute,value)
3
- unless value =~ /\A([^@\.]|[^@\.]([^@\s]*)[^@\.])@([^@\s]+\.)+[^@\s]+\z/
3
+ unless value =~ /\A[^@\s]+@([^@\s]+\.)+[^@\s]+\z/
4
4
  record.errors.add(attribute, :invalid, {:value => value}.merge!(options))
5
5
  end
6
6
  end
@@ -1,5 +1,5 @@
1
1
  module Spree
2
2
  def self.version
3
- '2.3.13'
3
+ "2.4.0.rc1"
4
4
  end
5
5
  end
@@ -0,0 +1,41 @@
1
+ module Spree
2
+ class << self
3
+ attr_accessor :instrumenter
4
+
5
+ delegate :instrument, :instrument_method, to: :instrumenter
6
+ end
7
+
8
+ module Instrumentation
9
+ class Base
10
+ def instrument_method klass, method
11
+ klass.send(:alias_method, :"#{method}_without_instrumentation", method)
12
+ klass.send(:define_method, method) do |*args|
13
+ Spree.instrument("#{klass}.#{method}") do
14
+ send("#{method}_without_instrumentation", *args)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ class Logger < Base
20
+ def instrument name
21
+ Rails.logger.tagged name do
22
+ ret = nil
23
+ ms = Benchmark.ms do
24
+ ret = yield
25
+ end
26
+ Rails.logger.info "Finished in #{ms.round(1)}ms"
27
+ ret
28
+ end
29
+ end
30
+ end
31
+ class None
32
+ def instrument name
33
+ yield
34
+ end
35
+ def instrument_method klass, method
36
+ end
37
+ end
38
+ end
39
+
40
+ self.instrumenter = Rails.env.development?? Instrumentation::Logger.new : Instrumentation::None.new
41
+ end
@@ -28,13 +28,9 @@ module Spree
28
28
  name
29
29
  end.compact! || []
30
30
 
31
- missing_migrations = engine_migrations.sort - engine_in_app.sort
32
- unless missing_migrations.empty?
33
- puts "[#{engine_name.capitalize} WARNING] Missing migrations."
34
- missing_migrations.each do |migration|
35
- puts "[#{engine_name.capitalize} WARNING] #{migration} from #{engine_name} is missing."
36
- end
37
- puts "[#{engine_name.capitalize} WARNING] Run `bundle exec rake railties:install:migrations` to get them.\n\n"
31
+ unless (engine_migrations.sort - engine_in_app.sort).empty?
32
+ puts "[#{engine_name.capitalize} WARNING] Missing migrations." \
33
+ " Run `bundle exec rake railties:install:migrations` to get them.\n\n"
38
34
  true
39
35
  end
40
36
  end
data/lib/spree/money.rb CHANGED
@@ -6,7 +6,7 @@ module Spree
6
6
  class Money
7
7
  attr_reader :money
8
8
 
9
- delegate :cents, to: :money
9
+ delegate :cents, :to => :money
10
10
 
11
11
  def initialize(amount, options={})
12
12
  @money = Monetize.parse([amount, (options[:currency] || Spree::Config[:currency])].join)
@@ -26,7 +26,7 @@ module Spree
26
26
  @money.format(@options)
27
27
  end
28
28
 
29
- def to_html(options = { html: true })
29
+ def to_html(options = { :html => true })
30
30
  output = @money.format(@options.merge(options))
31
31
  if options[:html]
32
32
  # 1) prevent blank, breaking spaces
@@ -3,6 +3,7 @@ module Spree
3
3
  ATTRIBUTES = [
4
4
  :address_attributes,
5
5
  :checkout_attributes,
6
+ :customer_return_attributes,
6
7
  :image_attributes,
7
8
  :inventory_unit_attributes,
8
9
  :line_item_attributes,
@@ -29,15 +30,15 @@ module Spree
29
30
 
30
31
  @@address_attributes = [
31
32
  :id, :firstname, :lastname, :first_name, :last_name,
32
- :address1, :address2, :city, :country_id, :state_id,
33
+ :address1, :address2, :city, :country_id, :state_id,
33
34
  :zipcode, :phone, :state_name, :alternative_phone, :company,
34
- :country => [:iso, :name, :iso3, :iso_name],
35
- :state => [:name, :abbr]
35
+ country: [:iso, :name, :iso3, :iso_name],
36
+ state: [:name, :abbr]
36
37
  ]
37
38
 
38
- @@checkout_attributes = [
39
- :coupon_code, :email, :shipping_method_id, :special_instructions, :use_billing
40
- ]
39
+ @@checkout_attributes = [:email, :use_billing, :shipping_method_id, :coupon_code, :special_instructions]
40
+
41
+ @@customer_return_attributes = [:stock_location_id, return_items_attributes: [:id, :inventory_unit_id, :return_authorization_id, :returned, :pre_tax_amount, :acceptance_status, :exchange_variant_id]]
41
42
 
42
43
  @@image_attributes = [:alt, :attachment, :position, :viewable_type, :viewable_id]
43
44
 
@@ -62,7 +63,7 @@ module Spree
62
63
 
63
64
  @@property_attributes = [:name, :presentation]
64
65
 
65
- @@return_authorization_attributes = [:amount, :reason, :stock_location_id]
66
+ @@return_authorization_attributes = [:amount, :memo, :stock_location_id, :inventory_units_attributes, :return_authorization_reason_id]
66
67
 
67
68
  @@shipment_attributes = [
68
69
  :order, :special_instructions, :stock_location_id, :id,
@@ -71,7 +72,7 @@ module Spree
71
72
  # month / year may be provided by some sources, or others may elect to use one field
72
73
  @@source_attributes = [
73
74
  :number, :month, :year, :expiry, :verification_value,
74
- :first_name, :last_name, :cc_type, :gateway_customer_profile_id,
75
+ :first_name, :last_name, :cc_type, :gateway_customer_profile_id,
75
76
  :gateway_payment_profile_id, :last_digits, :name, :encrypted_data]
76
77
 
77
78
  @@stock_item_attributes = [:variant, :stock_location, :backorderable, :variant_id]
@@ -85,7 +86,7 @@ module Spree
85
86
  :quantity, :stock_item, :stock_item_id, :originator, :action]
86
87
 
87
88
  @@store_attributes = [:name, :url, :seo_title, :meta_keywords,
88
- :meta_description, :default_currency]
89
+ :meta_description, :default_currency, :mail_from_address]
89
90
 
90
91
  @@taxonomy_attributes = [:name]
91
92
 
@@ -1,105 +1,105 @@
1
1
  shared_examples_for 'access granted' do
2
2
  it 'should allow read' do
3
- expect(ability).to be_able_to(:read, resource, token) if token
4
- expect(ability).to be_able_to(:read, resource) unless token
3
+ ability.should be_able_to(:read, resource, token) if token
4
+ ability.should be_able_to(:read, resource) unless token
5
5
  end
6
6
 
7
7
  it 'should allow create' do
8
- expect(ability).to be_able_to(:create, resource, token) if token
9
- expect(ability).to be_able_to(:create, resource) unless token
8
+ ability.should be_able_to(:create, resource, token) if token
9
+ ability.should be_able_to(:create, resource) unless token
10
10
  end
11
11
 
12
12
  it 'should allow update' do
13
- expect(ability).to be_able_to(:update, resource, token) if token
14
- expect(ability).to be_able_to(:update, resource) unless token
13
+ ability.should be_able_to(:update, resource, token) if token
14
+ ability.should be_able_to(:update, resource) unless token
15
15
  end
16
16
  end
17
17
 
18
18
  shared_examples_for 'access denied' do
19
19
  it 'should not allow read' do
20
- expect(ability).to_not be_able_to(:read, resource)
20
+ ability.should_not be_able_to(:read, resource)
21
21
  end
22
22
 
23
23
  it 'should not allow create' do
24
- expect(ability).to_not be_able_to(:create, resource)
24
+ ability.should_not be_able_to(:create, resource)
25
25
  end
26
26
 
27
27
  it 'should not allow update' do
28
- expect(ability).to_not be_able_to(:update, resource)
28
+ ability.should_not be_able_to(:update, resource)
29
29
  end
30
30
  end
31
31
 
32
32
  shared_examples_for 'admin granted' do
33
33
  it 'should allow admin' do
34
- expect(ability).to be_able_to(:admin, resource, token) if token
35
- expect(ability).to be_able_to(:admin, resource) unless token
34
+ ability.should be_able_to(:admin, resource, token) if token
35
+ ability.should be_able_to(:admin, resource) unless token
36
36
  end
37
37
  end
38
38
 
39
39
  shared_examples_for 'admin denied' do
40
40
  it 'should not allow admin' do
41
- expect(ability).to_not be_able_to(:admin, resource)
41
+ ability.should_not be_able_to(:admin, resource)
42
42
  end
43
43
  end
44
44
 
45
45
  shared_examples_for 'index allowed' do
46
46
  it 'should allow index' do
47
- expect(ability).to be_able_to(:index, resource)
47
+ ability.should be_able_to(:index, resource)
48
48
  end
49
49
  end
50
50
 
51
51
  shared_examples_for 'no index allowed' do
52
52
  it 'should not allow index' do
53
- expect(ability).to_not be_able_to(:index, resource)
53
+ ability.should_not be_able_to(:index, resource)
54
54
  end
55
55
  end
56
56
 
57
57
  shared_examples_for 'create only' do
58
58
  it 'should allow create' do
59
- expect(ability).to be_able_to(:create, resource)
59
+ ability.should be_able_to(:create, resource)
60
60
  end
61
61
 
62
62
  it 'should not allow read' do
63
- expect(ability).to_not be_able_to(:read, resource)
63
+ ability.should_not be_able_to(:read, resource)
64
64
  end
65
65
 
66
66
  it 'should not allow update' do
67
- expect(ability).to_not be_able_to(:update, resource)
67
+ ability.should_not be_able_to(:update, resource)
68
68
  end
69
69
 
70
70
  it 'should not allow index' do
71
- expect(ability).to_not be_able_to(:index, resource)
71
+ ability.should_not be_able_to(:index, resource)
72
72
  end
73
73
  end
74
74
 
75
75
  shared_examples_for 'read only' do
76
76
  it 'should not allow create' do
77
- expect(ability).to_not be_able_to(:create, resource)
77
+ ability.should_not be_able_to(:create, resource)
78
78
  end
79
79
 
80
80
  it 'should not allow update' do
81
- expect(ability).to_not be_able_to(:update, resource)
81
+ ability.should_not be_able_to(:update, resource)
82
82
  end
83
83
 
84
84
  it 'should allow index' do
85
- expect(ability).to be_able_to(:index, resource)
85
+ ability.should be_able_to(:index, resource)
86
86
  end
87
87
  end
88
88
 
89
89
  shared_examples_for 'update only' do
90
90
  it 'should not allow create' do
91
- expect(ability).to_not be_able_to(:create, resource)
91
+ ability.should_not be_able_to(:create, resource)
92
92
  end
93
93
 
94
94
  it 'should not allow read' do
95
- expect(ability).to_not be_able_to(:read, resource)
95
+ ability.should_not be_able_to(:read, resource)
96
96
  end
97
97
 
98
98
  it 'should allow update' do
99
- expect(ability).to be_able_to(:update, resource)
99
+ ability.should be_able_to(:update, resource)
100
100
  end
101
101
 
102
102
  it 'should not allow index' do
103
- expect(ability).to_not be_able_to(:index, resource)
103
+ ability.should_not be_able_to(:index, resource)
104
104
  end
105
105
  end
@@ -37,9 +37,7 @@ module Spree
37
37
  end
38
38
 
39
39
  before do
40
- allow(Spree.user_class).to receive(:find_by).
41
- with(hash_including(:spree_api_key)).
42
- and_return(Spree.user_class.new)
40
+ allow_any_instance_of(Api::BaseController).to receive(:try_spree_current_user).and_return(Spree.user_class.new)
43
41
  end
44
42
  end
45
43
 
@@ -58,6 +56,6 @@ module Spree
58
56
  end
59
57
 
60
58
  RSpec.configure do |config|
61
- config.extend Spree::TestingSupport::AuthorizationHelpers::Controller, type: :controller
62
- config.extend Spree::TestingSupport::AuthorizationHelpers::Request, type: :feature
59
+ config.extend Spree::TestingSupport::AuthorizationHelpers::Controller, :type => :controller
60
+ config.extend Spree::TestingSupport::AuthorizationHelpers::Request, :type => :feature
63
61
  end
@@ -8,7 +8,7 @@ module CapybaraExt
8
8
  end
9
9
 
10
10
  def eventually_fill_in(field, options={})
11
- expect(page).to have_css('#' + field)
11
+ page.should have_css('#' + field)
12
12
  fill_in field, options
13
13
  end
14
14
 
@@ -145,7 +145,7 @@ end
145
145
 
146
146
  RSpec::Matchers.define :have_title do |expected|
147
147
  match do |actual|
148
- has_css?("title", text: expected, visible: false)
148
+ has_css?("title", :text => expected, visible: false)
149
149
  end
150
150
 
151
151
  failure_message do |actual|
@@ -9,12 +9,4 @@ FactoryGirl.define do
9
9
 
10
10
  factory :default_tax_calculator, class: Spree::Calculator::DefaultTax do
11
11
  end
12
-
13
- factory :shipping_calculator, class: Spree::Calculator::Shipping::FlatRate do
14
- after(:create) { |c| c.set_preference(:amount, 10.0) }
15
- end
16
-
17
- factory :shipping_no_amount_calculator, class: Spree::Calculator::Shipping::FlatRate do
18
- after(:create) { |c| c.set_preference(:amount, 0) }
19
- end
20
12
  end
@@ -2,7 +2,7 @@ FactoryGirl.define do
2
2
  factory :credit_card, class: Spree::CreditCard do
3
3
  verification_value 123
4
4
  month 12
5
- year { 1.year.from_now.year }
5
+ year { Time.now.year }
6
6
  number '4111111111111111'
7
7
  name 'Spree Commerce'
8
8
  association(:payment_method, factory: :credit_card_payment_method)
@@ -0,0 +1,31 @@
1
+ FactoryGirl.define do
2
+
3
+ factory :customer_return, class: Spree::CustomerReturn do
4
+ association(:stock_location, factory: :stock_location)
5
+
6
+ ignore do
7
+ line_items_count 1
8
+ return_items_count { line_items_count }
9
+ end
10
+
11
+ before(:create) do |customer_return, evaluator|
12
+ shipped_order = create(:shipped_order, line_items_count: evaluator.line_items_count)
13
+
14
+ shipped_order.inventory_units.take(evaluator.return_items_count).each do |inventory_unit|
15
+ customer_return.return_items << build(:return_item, inventory_unit: inventory_unit)
16
+ end
17
+ end
18
+
19
+ factory :customer_return_with_accepted_items do
20
+ after(:create) do |customer_return|
21
+ customer_return.return_items.each(&:accept!)
22
+ end
23
+ end
24
+ end
25
+
26
+ # for the case when you want to supply existing return items instead of generating some
27
+ factory :customer_return_without_return_items, class: Spree::CustomerReturn do
28
+ association(:stock_location, factory: :stock_location)
29
+ end
30
+
31
+ end
@@ -2,6 +2,7 @@ FactoryGirl.define do
2
2
  factory :inventory_unit, class: Spree::InventoryUnit do
3
3
  variant
4
4
  order
5
+ line_item
5
6
  state 'on_hand'
6
7
  association(:shipment, factory: :shipment, state: 'pending')
7
8
  # return_authorization