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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/spree.js.coffee.erb +1 -5
- data/app/helpers/spree/base_helper.rb +22 -11
- data/app/helpers/spree/products_helper.rb +8 -7
- data/app/mailers/spree/base_mailer.rb +1 -0
- data/app/mailers/spree/reimbursement_mailer.rb +10 -0
- data/app/mailers/spree/test_mailer.rb +2 -3
- data/app/models/concerns/spree/adjustment_source.rb +24 -0
- data/app/models/concerns/spree/calculated_adjustments.rb +33 -0
- data/app/models/concerns/spree/named_type.rb +12 -0
- data/app/models/concerns/spree/user_address.rb +30 -0
- data/app/models/concerns/spree/user_payment_source.rb +19 -0
- data/app/models/spree/address.rb +13 -6
- data/app/models/spree/adjustment.rb +5 -5
- data/app/models/spree/app_configuration.rb +8 -4
- data/app/models/spree/asset.rb +1 -1
- data/app/models/spree/base.rb +0 -3
- data/app/models/spree/calculator/flat_rate.rb +1 -5
- data/app/models/spree/calculator/returns/default_refund_amount.rb +36 -0
- data/app/models/spree/classification.rb +1 -1
- data/app/models/spree/credit_card.rb +18 -22
- data/app/models/spree/customer_return.rb +70 -0
- data/app/models/spree/exchange.rb +42 -0
- data/app/models/spree/gateway/bogus.rb +3 -3
- data/app/models/spree/image.rb +1 -1
- data/app/models/spree/inventory_unit.rb +32 -8
- data/app/models/spree/item_adjustments.rb +7 -11
- data/app/models/spree/legacy_user.rb +2 -2
- data/app/models/spree/line_item.rb +25 -12
- data/app/models/spree/option_type.rb +1 -1
- data/app/models/spree/option_value.rb +1 -8
- data/app/models/spree/order.rb +163 -145
- data/app/models/spree/order/checkout.rb +35 -23
- data/app/models/spree/order/payments.rb +66 -0
- data/app/models/spree/order_contents.rb +34 -24
- data/app/models/spree/order_populator.rb +6 -4
- data/app/models/spree/order_updater.rb +10 -1
- data/app/models/spree/payment.rb +19 -16
- data/app/models/spree/payment/processing.rb +40 -72
- data/app/models/spree/payment_method.rb +1 -1
- data/app/models/spree/payment_method/check.rb +0 -2
- data/app/models/spree/preference.rb +1 -1
- data/app/models/spree/preferences/preferable.rb +20 -0
- data/app/models/spree/price.rb +13 -3
- data/app/models/spree/product.rb +24 -29
- data/app/models/spree/product_property.rb +0 -2
- data/app/models/spree/promotion.rb +66 -24
- data/app/models/spree/promotion/actions/create_adjustment.rb +2 -2
- data/app/models/spree/promotion/actions/create_item_adjustments.rb +15 -11
- data/app/models/spree/promotion/actions/create_line_items.rb +2 -12
- data/app/models/spree/promotion/rules/first_order.rb +6 -2
- data/app/models/spree/promotion/rules/item_total.rb +42 -4
- data/app/models/spree/promotion/rules/one_use_per_user.rb +24 -0
- data/app/models/spree/promotion/rules/product.rb +13 -11
- data/app/models/spree/promotion/rules/taxon.rb +61 -0
- data/app/models/spree/promotion/rules/user.rb +1 -1
- data/app/models/spree/promotion/rules/user_logged_in.rb +4 -1
- data/app/models/spree/promotion_category.rb +6 -0
- data/app/models/spree/promotion_handler/cart.rb +14 -18
- data/app/models/spree/promotion_handler/coupon.rb +25 -16
- data/app/models/spree/promotion_rule.rb +13 -0
- data/app/models/spree/property.rb +1 -3
- data/app/models/spree/refund.rb +91 -0
- data/app/models/spree/refund_reason.rb +13 -0
- data/app/models/spree/reimbursement.rb +148 -0
- data/app/models/spree/reimbursement/credit.rb +25 -0
- data/app/models/spree/reimbursement/reimbursement_type_engine.rb +56 -0
- data/app/models/spree/reimbursement/reimbursement_type_validator.rb +12 -0
- data/app/models/spree/reimbursement_performer.rb +43 -0
- data/app/models/spree/reimbursement_tax_calculator.rb +38 -0
- data/app/models/spree/reimbursement_type.rb +16 -0
- data/app/models/spree/reimbursement_type/credit.rb +13 -0
- data/app/models/spree/reimbursement_type/exchange.rb +9 -0
- data/app/models/spree/reimbursement_type/original_payment.rb +13 -0
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +50 -0
- data/app/models/spree/return_authorization.rb +52 -68
- data/app/models/spree/return_authorization_reason.rb +7 -0
- data/app/models/spree/return_item.rb +230 -0
- data/app/models/spree/return_item/default_eligibility_validator.rb +27 -0
- data/app/models/spree/return_item/eligibility_validator/base_validator.rb +24 -0
- data/app/models/spree/return_item/eligibility_validator/rma_required.rb +17 -0
- data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +16 -0
- data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +34 -0
- data/app/models/spree/return_item/exchange_variant_eligibility/same_product.rb +10 -0
- data/app/models/spree/returns_calculator.rb +8 -0
- data/app/models/spree/shipment.rb +209 -154
- data/app/models/spree/shipment_handler.rb +43 -0
- data/app/models/spree/shipping_calculator.rb +1 -1
- data/app/models/spree/shipping_category.rb +2 -2
- data/app/models/spree/shipping_method.rb +1 -1
- data/app/models/spree/shipping_method_category.rb +1 -1
- data/app/models/spree/shipping_rate.rb +4 -0
- data/app/models/spree/stock/adjuster.rb +10 -11
- data/app/models/spree/stock/availability_validator.rb +6 -10
- data/app/models/spree/stock/content_item.rb +48 -0
- data/app/models/spree/stock/coordinator.rb +14 -7
- data/app/models/spree/stock/estimator.rb +1 -1
- data/app/models/spree/stock/inventory_unit_builder.rb +21 -0
- data/app/models/spree/stock/package.rb +38 -51
- data/app/models/spree/stock/packer.rb +13 -11
- data/app/models/spree/stock/prioritizer.rb +7 -7
- data/app/models/spree/stock/splitter/base.rb +2 -2
- data/app/models/spree/stock_item.rb +6 -9
- data/app/models/spree/stock_location.rb +17 -25
- data/app/models/spree/stock_movement.rb +1 -8
- data/app/models/spree/stock_transfer.rb +0 -2
- data/app/models/spree/store.rb +1 -1
- data/app/models/spree/tax_category.rb +2 -2
- data/app/models/spree/tax_rate.rb +16 -22
- data/app/models/spree/taxon.rb +1 -1
- data/app/models/spree/variant.rb +45 -23
- data/app/models/spree/zone.rb +17 -17
- data/app/models/spree/zone_member.rb +1 -1
- data/app/views/layouts/spree/base_mailer.html.erb +784 -0
- data/app/views/spree/order_mailer/cancel_email.html.erb +45 -0
- data/app/views/spree/order_mailer/cancel_email.text.erb +2 -2
- data/app/views/spree/order_mailer/confirm_email.html.erb +84 -0
- data/app/views/spree/order_mailer/confirm_email.text.erb +2 -2
- data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +22 -0
- data/app/views/spree/shared/_base_mailer_footer.html.erb +20 -0
- data/app/views/spree/shared/_base_mailer_header.html.erb +31 -0
- data/app/views/spree/shipment_mailer/shipped_email.html.erb +34 -0
- data/app/views/spree/test_mailer/test_email.html.erb +40 -0
- data/app/views/spree/test_mailer/test_email.text.erb +2 -2
- data/config/initializers/friendly_id.rb +88 -0
- data/config/initializers/premailer_assets.rb +1 -0
- data/config/initializers/user_class_extensions.rb +9 -22
- data/config/locales/en.yml +180 -12
- data/db/default/spree/states.rb +73 -55
- data/db/migrate/20130213191427_create_default_stock.rb +1 -0
- data/db/migrate/20130807024301_upgrade_adjustments.rb +4 -5
- data/db/migrate/20140309033438_create_store_from_preferences.rb +0 -7
- data/db/migrate/20140318191500_create_spree_taxons_promotion_rules.rb +8 -0
- data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +1 -1
- data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +5 -3
- data/db/migrate/20140625214618_create_spree_refunds.rb +12 -0
- data/db/migrate/20140702140656_create_spree_return_authorization_inventory_unit.rb +12 -0
- data/db/migrate/20140707125621_rename_return_authorization_inventory_unit_to_return_items.rb +5 -0
- data/db/migrate/20140709160534_backfill_line_item_pre_tax_amount.rb +10 -0
- data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +55 -0
- data/db/migrate/20140710181204_add_amount_fields_to_return_items.rb +7 -0
- data/db/migrate/20140710190048_drop_return_authorization_amount.rb +5 -0
- data/db/migrate/20140713140455_create_spree_return_authorization_reasons.rb +28 -0
- data/db/migrate/20140713140527_create_spree_refund_reasons.rb +14 -0
- data/db/migrate/20140713142214_rename_return_authorization_reason.rb +5 -0
- data/db/migrate/20140715182625_create_spree_promotion_categories.rb +11 -0
- data/db/migrate/20140716204111_drop_received_at_on_return_items.rb +9 -0
- data/db/migrate/20140716212330_add_reception_and_acceptance_status_to_return_items.rb +6 -0
- data/db/migrate/20140717155155_create_default_refund_reason.rb +9 -0
- data/db/migrate/20140717185932_add_default_to_spree_stock_locations.rb +5 -0
- data/db/migrate/20140718133010_create_spree_customer_returns.rb +9 -0
- data/db/migrate/20140718133349_add_customer_return_id_to_return_item.rb +6 -0
- data/db/migrate/20140718195325_create_friendly_id_slugs.rb +15 -0
- data/db/migrate/20140723004419_rename_spree_refund_return_authorization_id.rb +5 -0
- data/db/migrate/20140723152808_increase_return_item_pre_tax_amount_precision.rb +13 -0
- data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +15 -0
- data/db/migrate/20140725131539_create_spree_reimbursements.rb +21 -0
- data/db/migrate/20140728225422_add_promotionable_to_spree_products.rb +5 -0
- data/db/migrate/20140729133613_add_exchange_inventory_unit_foreign_keys.rb +7 -0
- data/db/migrate/20140730155938_add_acceptance_status_errors_to_return_item.rb +5 -0
- data/db/migrate/20140731150017_create_spree_reimbursement_types.rb +20 -0
- data/db/migrate/20140805171035_add_default_to_spree_credit_cards.rb +5 -0
- data/db/migrate/20140805171219_make_existing_credit_cards_default.rb +10 -0
- data/db/migrate/20140806144901_add_type_to_reimbursement_type.rb +9 -0
- data/db/migrate/20140808184039_create_spree_reimbursement_credits.rb +10 -0
- data/db/migrate/20140827170513_add_meta_title_to_spree_products.rb +7 -0
- data/db/migrate/20140924164824_add_code_to_spree_tax_categories.rb +5 -0
- data/db/migrate/20141002191113_add_code_to_spree_shipping_methods.rb +5 -0
- data/db/migrate/20141007230328_add_cancel_audit_fields_to_spree_orders.rb +6 -0
- data/db/migrate/20141009204607_add_store_id_to_orders.rb +8 -0
- data/lib/generators/spree/install/install_generator.rb +7 -3
- data/lib/spree/core.rb +11 -10
- data/lib/spree/core/controller_helpers/common.rb +3 -10
- data/lib/spree/core/controller_helpers/order.rb +15 -12
- data/lib/spree/core/controller_helpers/strong_parameters.rb +9 -9
- data/lib/spree/core/engine.rb +8 -1
- data/lib/spree/core/importer/order.rb +5 -17
- data/lib/spree/core/search/base.rb +1 -1
- data/lib/spree/core/validators/email.rb +1 -1
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/instrumentation.rb +41 -0
- data/lib/spree/migrations.rb +3 -7
- data/lib/spree/money.rb +2 -2
- data/lib/spree/permitted_attributes.rb +10 -9
- data/lib/spree/testing_support/ability_helpers.rb +25 -25
- data/lib/spree/testing_support/authorization_helpers.rb +3 -5
- data/lib/spree/testing_support/capybara_ext.rb +2 -2
- data/lib/spree/testing_support/factories/calculator_factory.rb +0 -8
- data/lib/spree/testing_support/factories/credit_card_factory.rb +1 -1
- data/lib/spree/testing_support/factories/customer_return_factory.rb +31 -0
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +1 -0
- data/lib/spree/testing_support/factories/line_item_factory.rb +2 -1
- data/lib/spree/testing_support/factories/order_factory.rb +11 -6
- data/lib/spree/testing_support/factories/promotion_category_factory.rb +6 -0
- data/lib/spree/testing_support/factories/promotion_factory.rb +9 -7
- data/lib/spree/testing_support/factories/refund_factory.rb +14 -0
- data/lib/spree/testing_support/factories/reimbursement_factory.rb +16 -0
- data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +7 -0
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +9 -3
- data/lib/spree/testing_support/factories/return_item_factory.rb +10 -0
- data/lib/spree/testing_support/factories/shipment_factory.rb +1 -0
- data/lib/spree/testing_support/factories/shipping_method_factory.rb +3 -2
- data/lib/spree/testing_support/factories/stock_factory.rb +12 -11
- data/lib/spree/testing_support/flash.rb +2 -2
- data/lib/tasks/email.rake +7 -0
- data/lib/tasks/exchanges.rake +70 -0
- data/vendor/assets/javascripts/jquery.validate/localization/messages_et.js +23 -0
- data/vendor/assets/javascripts/jquery.validate/localization/messages_eu.js +25 -0
- data/vendor/assets/javascripts/jquery.validate/localization/messages_hr.js +25 -0
- data/vendor/assets/javascripts/jquery.validate/localization/messages_ka.js +25 -0
- data/vendor/assets/javascripts/jquery.validate/localization/messages_ko.js +25 -0
- data/vendor/assets/javascripts/jquery.validate/localization/messages_my.js +25 -0
- data/vendor/assets/javascripts/jquery.validate/localization/messages_pt_BR.js +26 -0
- data/vendor/assets/javascripts/jquery.validate/localization/messages_pt_PT.js +26 -0
- data/vendor/assets/javascripts/jquery.validate/localization/messages_sl.js +25 -0
- data/vendor/assets/javascripts/jquery.validate/localization/messages_sv.js +23 -0
- data/vendor/assets/javascripts/jquery.validate/localization/messages_uk.js +25 -0
- data/vendor/assets/javascripts/jquery.validate/localization/messages_zh.js +25 -0
- data/vendor/assets/javascripts/jquery.validate/localization/messages_zh_TW.js +26 -0
- metadata +163 -47
- data/app/models/concerns/spree/ransackable_attributes.rb +0 -19
- data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +0 -5
- data/db/migrate/20141101231208_fix_adjustment_order_presence.rb +0 -13
- data/db/migrate/20141105213646_update_classifications_positions.rb +0 -9
- data/db/migrate/20141120135441_add_guest_token_index_to_spree_orders.rb +0 -5
- data/db/migrate/20150515211137_fix_adjustment_order_id.rb +0 -70
- data/lib/spree/core/adjustment_source.rb +0 -26
- data/lib/spree/core/calculated_adjustments.rb +0 -35
- data/lib/spree/core/controller_helpers.rb +0 -20
- data/lib/spree/core/user_address.rb +0 -32
- data/lib/spree/core/user_payment_source.rb +0 -20
- 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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
class EmailValidator < ActiveModel::EachValidator
|
|
2
2
|
def validate_each(record,attribute,value)
|
|
3
|
-
unless value =~ /\A
|
|
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
|
data/lib/spree/core/version.rb
CHANGED
|
@@ -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
|
data/lib/spree/migrations.rb
CHANGED
|
@@ -28,13 +28,9 @@ module Spree
|
|
|
28
28
|
name
|
|
29
29
|
end.compact! || []
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
|
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
|
|
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
|
-
:
|
|
35
|
-
:
|
|
35
|
+
country: [:iso, :name, :iso3, :iso_name],
|
|
36
|
+
state: [:name, :abbr]
|
|
36
37
|
]
|
|
37
38
|
|
|
38
|
-
@@checkout_attributes = [
|
|
39
|
-
|
|
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, :
|
|
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
|
-
|
|
4
|
-
|
|
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
|
-
|
|
9
|
-
|
|
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
|
-
|
|
14
|
-
|
|
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
|
-
|
|
20
|
+
ability.should_not be_able_to(:read, resource)
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
it 'should not allow create' do
|
|
24
|
-
|
|
24
|
+
ability.should_not be_able_to(:create, resource)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
it 'should not allow update' do
|
|
28
|
-
|
|
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
|
-
|
|
35
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
59
|
+
ability.should be_able_to(:create, resource)
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
it 'should not allow read' do
|
|
63
|
-
|
|
63
|
+
ability.should_not be_able_to(:read, resource)
|
|
64
64
|
end
|
|
65
65
|
|
|
66
66
|
it 'should not allow update' do
|
|
67
|
-
|
|
67
|
+
ability.should_not be_able_to(:update, resource)
|
|
68
68
|
end
|
|
69
69
|
|
|
70
70
|
it 'should not allow index' do
|
|
71
|
-
|
|
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
|
-
|
|
77
|
+
ability.should_not be_able_to(:create, resource)
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
it 'should not allow update' do
|
|
81
|
-
|
|
81
|
+
ability.should_not be_able_to(:update, resource)
|
|
82
82
|
end
|
|
83
83
|
|
|
84
84
|
it 'should allow index' do
|
|
85
|
-
|
|
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
|
-
|
|
91
|
+
ability.should_not be_able_to(:create, resource)
|
|
92
92
|
end
|
|
93
93
|
|
|
94
94
|
it 'should not allow read' do
|
|
95
|
-
|
|
95
|
+
ability.should_not be_able_to(:read, resource)
|
|
96
96
|
end
|
|
97
97
|
|
|
98
98
|
it 'should allow update' do
|
|
99
|
-
|
|
99
|
+
ability.should be_able_to(:update, resource)
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
it 'should not allow index' do
|
|
103
|
-
|
|
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
|
-
|
|
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
|
|
62
|
-
config.extend Spree::TestingSupport::AuthorizationHelpers::Request, type
|
|
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
|
-
|
|
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
|
|
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 {
|
|
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
|