solidus_core 2.4.2 → 2.5.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of solidus_core might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/README.md +1 -5
- data/Rakefile +23 -6
- data/app/helpers/spree/base_helper.rb +15 -10
- data/app/helpers/spree/checkout_helper.rb +1 -1
- data/app/helpers/spree/products_helper.rb +2 -2
- data/app/mailers/spree/carton_mailer.rb +2 -2
- data/app/mailers/spree/order_mailer.rb +4 -4
- data/app/mailers/spree/reimbursement_mailer.rb +2 -2
- data/app/mailers/spree/test_mailer.rb +1 -1
- data/app/models/concerns/spree/adjustment_source.rb +17 -11
- data/app/models/concerns/spree/calculated_adjustments.rb +2 -2
- data/app/models/spree/ability.rb +1 -1
- data/app/models/spree/address.rb +7 -0
- data/app/models/spree/adjustment.rb +6 -2
- data/app/models/spree/calculator.rb +1 -1
- data/app/models/spree/calculator/flexi_rate.rb +1 -0
- data/app/models/spree/calculator/free_shipping.rb +2 -0
- data/app/models/spree/calculator/percent_on_line_item.rb +6 -6
- data/app/models/spree/calculator/percent_per_item.rb +2 -0
- data/app/models/spree/calculator/returns/default_refund_amount.rb +4 -4
- data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +1 -0
- data/app/models/spree/calculator/shipping/flat_rate.rb +1 -0
- data/app/models/spree/calculator/shipping/flexi_rate.rb +1 -0
- data/app/models/spree/calculator/shipping/per_item.rb +1 -0
- data/app/models/spree/calculator/shipping/price_sack.rb +1 -0
- data/app/models/spree/classification.rb +1 -1
- data/app/models/spree/customer_return.rb +1 -1
- data/app/models/spree/inventory_unit.rb +8 -2
- data/app/models/spree/log_entry.rb +0 -11
- data/app/models/spree/order.rb +31 -16
- data/app/models/spree/order_contents.rb +0 -14
- data/app/models/spree/order_shipping.rb +0 -5
- data/app/models/spree/order_updater.rb +0 -4
- data/app/models/spree/payment.rb +6 -1
- data/app/models/spree/payment/processing.rb +4 -4
- data/app/models/spree/payment_method.rb +8 -3
- data/app/models/spree/payment_method/credit_card.rb +1 -1
- data/app/models/spree/payment_method/store_credit.rb +4 -4
- data/app/models/spree/price.rb +7 -1
- data/app/models/spree/product.rb +34 -6
- data/app/models/spree/product/scopes.rb +2 -2
- data/app/models/spree/promotion.rb +1 -2
- data/app/models/spree/promotion/actions/create_adjustment.rb +3 -2
- data/app/models/spree/promotion/actions/create_item_adjustments.rb +7 -8
- data/app/models/spree/promotion/actions/free_shipping.rb +1 -1
- data/app/models/spree/promotion/rules/taxon.rb +25 -24
- data/app/models/spree/promotion_action.rb +7 -1
- data/app/models/spree/promotion_chooser.rb +1 -1
- data/app/models/spree/promotion_code.rb +3 -3
- data/app/models/spree/promotion_handler/coupon.rb +8 -29
- data/app/models/spree/promotion_rule.rb +1 -1
- data/app/models/spree/refund.rb +3 -3
- data/app/models/spree/reimbursement.rb +1 -1
- data/app/models/spree/return_authorization.rb +2 -2
- data/app/models/spree/return_item.rb +3 -3
- data/app/models/spree/return_item/eligibility_validator/base_validator.rb +2 -2
- data/app/models/spree/return_item/eligibility_validator/inventory_shipped.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/order_completed.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/rma_required.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +1 -1
- data/app/models/spree/shipment.rb +16 -6
- data/app/models/spree/shipping_method.rb +7 -0
- data/app/models/spree/shipping_rate.rb +6 -6
- data/app/models/spree/shipping_rate_tax.rb +2 -2
- data/app/models/spree/stock/availability_validator.rb +2 -2
- data/app/models/spree/stock/estimator.rb +9 -1
- data/app/models/spree/stock/inventory_unit_builder.rb +1 -2
- data/app/models/spree/stock/inventory_validator.rb +2 -2
- data/app/models/spree/stock/package.rb +1 -1
- data/app/models/spree/stock/simple_coordinator.rb +2 -2
- data/app/models/spree/stock_item.rb +6 -0
- data/app/models/spree/stock_location.rb +2 -2
- data/app/models/spree/store_credit.rb +19 -12
- data/app/models/spree/store_credit_category.rb +1 -1
- data/app/models/spree/store_credit_event.rb +7 -1
- data/app/models/spree/tax/shipping_rate_taxer.rb +1 -1
- data/app/models/spree/tax_calculator/shipping_rate.rb +12 -3
- data/app/models/spree/tax_rate.rb +10 -3
- data/app/models/spree/taxon.rb +14 -4
- data/app/models/spree/taxonomy.rb +1 -1
- data/app/models/spree/unit_cancel.rb +1 -1
- data/app/models/spree/variant.rb +33 -1
- data/app/models/spree/variant/price_selector.rb +1 -1
- data/app/models/spree/variant/pricing_options.rb +1 -1
- data/app/models/spree/variant/scopes.rb +1 -1
- data/app/models/spree/variant/vat_price_generator.rb +1 -1
- data/app/views/spree/carton_mailer/shipped_email.html.erb +6 -6
- data/app/views/spree/carton_mailer/shipped_email.text.erb +6 -6
- data/app/views/spree/order_mailer/cancel_email.html.erb +5 -5
- data/app/views/spree/order_mailer/cancel_email.text.erb +5 -5
- data/app/views/spree/order_mailer/confirm_email.html.erb +9 -9
- data/app/views/spree/order_mailer/confirm_email.text.erb +9 -9
- data/app/views/spree/order_mailer/inventory_cancellation_email.html.erb +3 -3
- data/app/views/spree/order_mailer/inventory_cancellation_email.text.erb +3 -3
- data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_errored.text.erb +1 -1
- data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_finished.text.erb +1 -1
- data/app/views/spree/reimbursement_mailer/reimbursement_email.html.erb +5 -5
- data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +5 -5
- data/app/views/spree/shared/_error_messages.html.erb +2 -2
- data/app/views/spree/test_mailer/test_email.html.erb +2 -2
- data/app/views/spree/test_mailer/test_email.text.erb +2 -2
- data/config/initializers/assets.rb +3 -1
- data/config/locales/en.yml +44 -48
- data/db/default/spree/store_credit.rb +1 -1
- data/db/default/spree/stores.rb +7 -8
- data/db/migrate/20160101010000_solidus_one_four.rb +4 -46
- data/db/migrate/20170317035819_add_lft_and_rgt_indexes_to_taxons.rb +6 -0
- data/db/migrate/20170319191942_remove_order_id_from_inventory_units.rb +28 -0
- data/db/migrate/20170608074534_rename_bogus_gateways.rb +4 -2
- data/db/migrate/20170831201542_remove_default_tax_from_spree_zones.rb +1 -1
- data/lib/generators/spree/custom_user/custom_user_generator.rb +11 -22
- data/lib/generators/spree/install/install_generator.rb +10 -5
- data/lib/spree/app_configuration.rb +103 -5
- data/lib/spree/core.rb +3 -2
- data/lib/spree/core/active_merchant_dependencies.rb +11 -0
- data/lib/spree/core/controller_helpers/auth.rb +3 -1
- data/lib/spree/core/controller_helpers/common.rb +3 -7
- data/lib/spree/core/engine.rb +18 -100
- data/lib/spree/core/environment.rb +3 -3
- data/lib/spree/core/importer/order.rb +0 -1
- data/lib/spree/core/permalinks.rb +9 -15
- data/lib/spree/core/product_filters.rb +5 -3
- data/lib/spree/core/role_configuration.rb +23 -7
- data/lib/spree/core/search/base.rb +16 -13
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/paranoia_deprecations.rb +19 -0
- data/lib/spree/permission_sets.rb +0 -4
- data/lib/spree/permitted_attributes.rb +0 -3
- data/lib/spree/preferences/preferable.rb +70 -34
- data/lib/spree/preferences/preferable_class_methods.rb +22 -0
- data/lib/spree/testing_support/authorization_helpers.rb +2 -0
- data/lib/spree/testing_support/common_rake.rb +0 -1
- data/lib/spree/testing_support/dummy_app.rb +100 -0
- data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/backend/all.js +10 -0
- data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/frontend/all.js +10 -0
- data/lib/spree/testing_support/dummy_app/assets/stylesheets/spree/backend/all.css +9 -0
- data/lib/spree/testing_support/dummy_app/assets/stylesheets/spree/frontend/all.css +9 -0
- data/lib/spree/testing_support/dummy_app/database.yml +31 -0
- data/lib/spree/testing_support/dummy_app/migrations.rb +35 -0
- data/lib/spree/testing_support/dummy_app/rake_tasks.rb +60 -0
- data/lib/spree/testing_support/dummy_app/views/layouts/application.html.erb +1 -0
- data/lib/spree/testing_support/factories.rb +1 -1
- data/lib/spree/testing_support/factories/address_factory.rb +2 -2
- data/lib/spree/testing_support/factories/adjustment_factory.rb +2 -2
- data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +1 -1
- data/lib/spree/testing_support/factories/calculator_factory.rb +1 -1
- data/lib/spree/testing_support/factories/carton_factory.rb +1 -1
- data/lib/spree/testing_support/factories/country_factory.rb +1 -1
- data/lib/spree/testing_support/factories/credit_card_factory.rb +1 -1
- data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -2
- data/lib/spree/testing_support/factories/image_factory.rb +1 -1
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +13 -4
- data/lib/spree/testing_support/factories/line_item_factory.rb +1 -1
- data/lib/spree/testing_support/factories/option_type_factory.rb +1 -1
- data/lib/spree/testing_support/factories/option_value_factory.rb +1 -1
- data/lib/spree/testing_support/factories/order_factory.rb +5 -1
- data/lib/spree/testing_support/factories/order_promotion_factory.rb +1 -1
- data/lib/spree/testing_support/factories/payment_factory.rb +1 -1
- data/lib/spree/testing_support/factories/payment_method_factory.rb +1 -1
- data/lib/spree/testing_support/factories/price_factory.rb +1 -1
- data/lib/spree/testing_support/factories/product_factory.rb +1 -1
- data/lib/spree/testing_support/factories/product_option_type_factory.rb +1 -1
- data/lib/spree/testing_support/factories/product_property_factory.rb +1 -1
- data/lib/spree/testing_support/factories/promotion_category_factory.rb +1 -1
- data/lib/spree/testing_support/factories/promotion_code_factory.rb +2 -2
- data/lib/spree/testing_support/factories/promotion_factory.rb +1 -1
- data/lib/spree/testing_support/factories/property_factory.rb +1 -1
- data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
- data/lib/spree/testing_support/factories/refund_reason_factory.rb +1 -1
- data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
- data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +1 -1
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +1 -1
- data/lib/spree/testing_support/factories/return_item_factory.rb +1 -1
- data/lib/spree/testing_support/factories/return_reason_factory.rb +1 -1
- data/lib/spree/testing_support/factories/role_factory.rb +1 -1
- data/lib/spree/testing_support/factories/shipment_factory.rb +1 -2
- data/lib/spree/testing_support/factories/shipping_category_factory.rb +1 -1
- data/lib/spree/testing_support/factories/shipping_method_factory.rb +2 -2
- data/lib/spree/testing_support/factories/shipping_rate_factory.rb +1 -1
- data/lib/spree/testing_support/factories/state_factory.rb +1 -7
- data/lib/spree/testing_support/factories/stock_item_factory.rb +1 -1
- data/lib/spree/testing_support/factories/stock_location_factory.rb +1 -1
- data/lib/spree/testing_support/factories/stock_movement_factory.rb +1 -1
- data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_credit_category_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_credit_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_credit_type_factory.rb +2 -2
- data/lib/spree/testing_support/factories/store_credit_update_reason_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_factory.rb +1 -1
- data/lib/spree/testing_support/factories/tax_category_factory.rb +1 -2
- data/lib/spree/testing_support/factories/tax_rate_factory.rb +1 -1
- data/lib/spree/testing_support/factories/taxon_factory.rb +1 -1
- data/lib/spree/testing_support/factories/taxonomy_factory.rb +1 -1
- data/lib/spree/testing_support/factories/user_factory.rb +4 -10
- data/lib/spree/testing_support/factories/variant_factory.rb +1 -1
- data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +1 -1
- data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +1 -1
- data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +1 -1
- data/lib/spree/testing_support/factories/zone_factory.rb +2 -4
- data/lib/spree/testing_support/flash.rb +2 -2
- data/lib/spree/testing_support/order_walkthrough.rb +9 -9
- data/lib/spree/testing_support/preferences.rb +4 -0
- data/lib/spree/testing_support/sequences.rb +3 -12
- data/solidus_core.gemspec +12 -8
- data/spec/helpers/base_helper_spec.rb +19 -3
- data/spec/helpers/products_helper_spec.rb +1 -1
- data/spec/lib/calculated_adjustments_spec.rb +20 -0
- data/spec/lib/i18n_spec.rb +4 -69
- data/spec/lib/search/base_spec.rb +1 -0
- data/spec/lib/search/variant_spec.rb +4 -4
- data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +6 -6
- data/spec/lib/spree/core/importer/order_spec.rb +2 -2
- data/spec/lib/spree/core/role_configuration_spec.rb +6 -9
- data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +12 -8
- data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +1 -1
- data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +1 -1
- data/spec/mailers/carton_mailer_spec.rb +3 -7
- data/spec/mailers/order_mailer_spec.rb +7 -11
- data/spec/mailers/reimbursement_mailer_spec.rb +1 -5
- data/spec/mailers/test_mailer_spec.rb +0 -4
- data/spec/models/spree/ability_spec.rb +2 -1
- data/spec/models/spree/address_spec.rb +32 -19
- data/spec/models/spree/app_configuration_spec.rb +1 -1
- data/spec/models/spree/calculator/distributed_amount_spec.rb +1 -1
- data/spec/models/spree/calculator/percent_on_line_item_spec.rb +8 -10
- data/spec/models/spree/calculator/percent_per_item_spec.rb +4 -4
- data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +10 -3
- data/spec/models/spree/classification_spec.rb +19 -0
- data/spec/models/spree/credit_card_spec.rb +1 -1
- data/spec/models/spree/customer_return_spec.rb +17 -6
- data/spec/models/spree/distributed_amounts_handler_spec.rb +1 -1
- data/spec/models/spree/exchange_spec.rb +1 -1
- data/spec/models/spree/inventory_unit_spec.rb +3 -7
- data/spec/models/spree/line_item_spec.rb +6 -6
- data/spec/models/spree/option_value_spec.rb +11 -6
- data/spec/models/spree/order/callbacks_spec.rb +2 -2
- data/spec/models/spree/order/checkout_spec.rb +31 -31
- data/spec/models/spree/order/risk_assessment_spec.rb +9 -9
- data/spec/models/spree/order_contents_spec.rb +1 -9
- data/spec/models/spree/order_inventory_spec.rb +2 -2
- data/spec/models/spree/order_mutex_spec.rb +3 -1
- data/spec/models/spree/order_shipping_spec.rb +7 -4
- data/spec/models/spree/order_spec.rb +36 -13
- data/spec/models/spree/order_taxation_spec.rb +7 -7
- data/spec/models/spree/order_updater_spec.rb +6 -4
- data/spec/models/spree/payment/cancellation_spec.rb +1 -1
- data/spec/models/spree/payment_create_spec.rb +2 -2
- data/spec/models/spree/payment_method/store_credit_spec.rb +13 -13
- data/spec/models/spree/payment_spec.rb +23 -4
- data/spec/models/spree/preferences/preferable_spec.rb +44 -0
- data/spec/models/spree/preferences/statically_configurable_spec.rb +1 -0
- data/spec/models/spree/price_spec.rb +6 -4
- data/spec/models/spree/product/scopes_spec.rb +1 -1
- data/spec/models/spree/product_spec.rb +49 -9
- data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +13 -3
- data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +146 -134
- data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +6 -6
- data/spec/models/spree/promotion/rules/taxon_spec.rb +14 -14
- data/spec/models/spree/promotion_code_spec.rb +31 -19
- data/spec/models/spree/promotion_handler/coupon_spec.rb +42 -17
- data/spec/models/spree/promotion_handler/shipping_spec.rb +1 -6
- data/spec/models/spree/promotion_spec.rb +14 -14
- data/spec/models/spree/refund_spec.rb +1 -1
- data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +1 -1
- data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +1 -1
- data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +3 -2
- data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +1 -1
- data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +2 -2
- data/spec/models/spree/return_item_spec.rb +6 -6
- data/spec/models/spree/shipment_spec.rb +14 -10
- data/spec/models/spree/shipping_manifest_spec.rb +22 -9
- data/spec/models/spree/shipping_method_spec.rb +9 -5
- data/spec/models/spree/stock/availability_spec.rb +16 -2
- data/spec/models/spree/stock/estimator_spec.rb +11 -12
- data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -4
- data/spec/models/spree/stock/package_spec.rb +3 -2
- data/spec/models/spree/stock/simple_coordinator_spec.rb +1 -24
- data/spec/models/spree/stock_item_spec.rb +6 -6
- data/spec/models/spree/stock_location_spec.rb +16 -3
- data/spec/models/spree/store_credit_spec.rb +12 -6
- data/spec/models/spree/tax/taxation_integration_spec.rb +6 -6
- data/spec/models/spree/tax_calculator/default_spec.rb +7 -7
- data/spec/models/spree/taxon_spec.rb +42 -19
- data/spec/models/spree/variant/vat_price_generator_spec.rb +1 -1
- data/spec/models/spree/variant_spec.rb +69 -11
- data/spec/rails_helper.rb +7 -13
- data/spec/spec_helper.rb +3 -12
- data/spec/support/concerns/default_price.rb +1 -1
- data/spec/support/dummy_ability.rb +2 -0
- metadata +144 -73
- data/Gemfile +0 -3
- data/app/models/spree/order_stock_location.rb +0 -15
- data/app/models/spree/stock_transfer.rb +0 -110
- data/app/models/spree/transfer_item.rb +0 -54
- data/lib/generators/spree/custom_user/templates/initializer.rb.tt +0 -1
- data/lib/spree/permission_sets/restricted_stock_transfer_display.rb +0 -17
- data/lib/spree/permission_sets/restricted_stock_transfer_management.rb +0 -52
- data/lib/spree/permission_sets/stock_transfer_display.rb +0 -10
- data/lib/spree/permission_sets/stock_transfer_management.rb +0 -11
- data/lib/spree/testing_support/factories/stock_transfer_factory.rb +0 -28
- data/lib/spree/testing_support/i18n.rb +0 -97
- data/spec/lib/spree/core/testing_support/factories/stock_transfer_factory_spec.rb +0 -12
- data/spec/models/spree/order_stock_location_spec.rb +0 -18
- data/spec/models/spree/permission_sets/restricted_stock_transfer_display_spec.rb +0 -49
- data/spec/models/spree/permission_sets/restricted_stock_transfer_management_spec.rb +0 -218
- data/spec/models/spree/permission_sets/stock_transfer_display_spec.rb +0 -23
- data/spec/models/spree/permission_sets/stock_transfer_management_spec.rb +0 -23
- data/spec/models/spree/stock_transfer_spec.rb +0 -308
- data/spec/models/spree/transfer_item_spec.rb +0 -275
- data/spec/support/test_gateway.rb +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 87afc5077e860c226c85bb1b65fef534eea82174295c6650225ec4d06b5d03ba
|
4
|
+
data.tar.gz: d13a7557dd557f3d285ef7734de1a427b7c256d9433f2752bcf69e8c9dae6e17
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9fd697a0d3056759267af069b85c21e6c4d480858dbf29b8db4a3c61ebec6568e037c5b75901ca5f64a52eb74d8d3b64d93e444a4f50bde1bf58c6652d003b57
|
7
|
+
data.tar.gz: a874cdab7c718290bc92e7add51f3df2f13208888c8399b0d07ad4b5fd13e6fc6acc501839cf9ac53c543e9fc676e670577b38f37463d3e2c0b875cd9a460265
|
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -2,14 +2,31 @@ require 'rubygems'
|
|
2
2
|
require 'rake'
|
3
3
|
require 'rake/testtask'
|
4
4
|
require 'rspec/core/rake_task'
|
5
|
-
require 'spree/testing_support/
|
5
|
+
require 'spree/testing_support/dummy_app/rake_tasks'
|
6
6
|
|
7
7
|
RSpec::Core::RakeTask.new
|
8
|
-
|
9
8
|
task default: :spec
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
DummyApp::RakeTasks.new(
|
11
|
+
gem_root: File.dirname(__FILE__),
|
12
|
+
lib_name: 'solidus_core'
|
13
|
+
)
|
14
|
+
|
15
|
+
namespace :spec do
|
16
|
+
task :isolated do
|
17
|
+
spec_files = Dir['spec/**/*_spec.rb']
|
18
|
+
failed_specs =
|
19
|
+
spec_files.reject do |file|
|
20
|
+
puts "rspec #{file}"
|
21
|
+
system('rspec', file)
|
22
|
+
end
|
23
|
+
|
24
|
+
if !failed_specs.empty?
|
25
|
+
puts "Failed specs:"
|
26
|
+
puts failed_specs
|
27
|
+
exit 1
|
28
|
+
end
|
29
|
+
end
|
15
30
|
end
|
31
|
+
|
32
|
+
task test_app: 'db:reset'
|
@@ -1,11 +1,13 @@
|
|
1
|
+
require 'carmen'
|
2
|
+
|
1
3
|
module Spree
|
2
4
|
module BaseHelper
|
3
5
|
def link_to_cart(text = nil)
|
4
|
-
text = text ? h(text) :
|
6
|
+
text = text ? h(text) : t('spree.cart')
|
5
7
|
css_class = nil
|
6
8
|
|
7
9
|
if current_order.nil? || current_order.item_count.zero?
|
8
|
-
text = "#{text}: (#{
|
10
|
+
text = "#{text}: (#{t('spree.empty')})"
|
9
11
|
css_class = 'empty'
|
10
12
|
else
|
11
13
|
text = "#{text}: (#{current_order.item_count}) <span class='amount'>#{current_order.display_total.to_html}</span>"
|
@@ -69,14 +71,12 @@ module Spree
|
|
69
71
|
def taxon_breadcrumbs(taxon, separator = ' » ', breadcrumb_class = 'inline')
|
70
72
|
return '' if current_page?('/') || taxon.nil?
|
71
73
|
|
72
|
-
crumbs = [[
|
74
|
+
crumbs = [[t('spree.home'), spree.root_path]]
|
73
75
|
|
76
|
+
crumbs << [t('spree.products'), products_path]
|
74
77
|
if taxon
|
75
|
-
crumbs << [Spree.t(:products), products_path]
|
76
78
|
crumbs += taxon.ancestors.collect { |a| [a.name, spree.nested_taxons_path(a.permalink)] } unless taxon.ancestors.empty?
|
77
79
|
crumbs << [taxon.name, spree.nested_taxons_path(taxon.permalink)]
|
78
|
-
else
|
79
|
-
crumbs << [Spree.t(:products), products_path]
|
80
80
|
end
|
81
81
|
|
82
82
|
separator = raw(separator)
|
@@ -115,8 +115,14 @@ module Spree
|
|
115
115
|
countries = Country.all
|
116
116
|
end
|
117
117
|
|
118
|
+
country_names = Carmen::Country.all.map do |country|
|
119
|
+
[country.code, country.name]
|
120
|
+
end.to_h
|
121
|
+
|
122
|
+
country_names.update I18n.t('spree.country_names', default: {}).stringify_keys
|
123
|
+
|
118
124
|
countries.collect do |country|
|
119
|
-
country.name =
|
125
|
+
country.name = country_names.fetch(country.iso, country.name)
|
120
126
|
country
|
121
127
|
end.sort_by { |c| c.name.parameterize }
|
122
128
|
end
|
@@ -129,9 +135,8 @@ module Spree
|
|
129
135
|
product_or_variant.price_for(current_pricing_options).to_html
|
130
136
|
end
|
131
137
|
|
132
|
-
def pretty_time(time)
|
133
|
-
|
134
|
-
time.strftime("%l:%M %p")].join(" ")
|
138
|
+
def pretty_time(time, format = :long)
|
139
|
+
I18n.l(time, format: :"solidus.#{format}")
|
135
140
|
end
|
136
141
|
|
137
142
|
def link_to_tracking(shipment, options = {})
|
@@ -7,7 +7,7 @@ module Spree
|
|
7
7
|
def checkout_progress
|
8
8
|
states = checkout_states
|
9
9
|
items = states.map do |state|
|
10
|
-
text =
|
10
|
+
text = I18n.t("spree.order_state.#{state}").titleize
|
11
11
|
|
12
12
|
css_classes = []
|
13
13
|
current_index = states.index(@order.state)
|
@@ -23,7 +23,7 @@ module Spree
|
|
23
23
|
difference = variant.price_difference_from_master(current_pricing_options)
|
24
24
|
absolute_amount = Spree::Money.new(difference.to_d.abs, currency: difference.currency.iso_code)
|
25
25
|
i18n_key = difference.to_d > 0 ? :price_diff_add_html : :price_diff_subtract_html
|
26
|
-
|
26
|
+
t(i18n_key, scope: [:spree, :helpers, :products], amount_html: absolute_amount.to_html)
|
27
27
|
end
|
28
28
|
|
29
29
|
# Returns the formatted full price for the variant, if at least one variant
|
@@ -58,7 +58,7 @@ module Spree
|
|
58
58
|
if description_text.present?
|
59
59
|
truncate(strip_tags(description_text.gsub(' ', ' ')), length: 100)
|
60
60
|
else
|
61
|
-
|
61
|
+
t('spree.product_has_no_description')
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
@@ -19,8 +19,8 @@ module Spree
|
|
19
19
|
@manifest = @carton.manifest_for_order(@order)
|
20
20
|
options = { resend: false }.merge(options)
|
21
21
|
@store = @order.store
|
22
|
-
subject = (options[:resend] ? "[#{
|
23
|
-
subject += "#{@store.name} #{
|
22
|
+
subject = (options[:resend] ? "[#{t('spree.resend').upcase}] " : '')
|
23
|
+
subject += "#{@store.name} #{t('spree.shipment_mailer.shipped_email.subject')} ##{@order.number}"
|
24
24
|
mail(to: @order.email, from: from_address(@store), subject: subject)
|
25
25
|
end
|
26
26
|
end
|
@@ -3,7 +3,7 @@ module Spree
|
|
3
3
|
def confirm_email(order, resend = false)
|
4
4
|
@order = order
|
5
5
|
@store = @order.store
|
6
|
-
subject = build_subject(
|
6
|
+
subject = build_subject(t('.subject'), resend)
|
7
7
|
|
8
8
|
mail(to: @order.email, from: from_address(@store), subject: subject)
|
9
9
|
end
|
@@ -11,7 +11,7 @@ module Spree
|
|
11
11
|
def cancel_email(order, resend = false)
|
12
12
|
@order = order
|
13
13
|
@store = @order.store
|
14
|
-
subject = build_subject(
|
14
|
+
subject = build_subject(t('.subject'), resend)
|
15
15
|
|
16
16
|
mail(to: @order.email, from: from_address(@store), subject: subject)
|
17
17
|
end
|
@@ -19,7 +19,7 @@ module Spree
|
|
19
19
|
def inventory_cancellation_email(order, inventory_units, resend = false)
|
20
20
|
@order, @inventory_units = order, inventory_units
|
21
21
|
@store = @order.store
|
22
|
-
subject = build_subject(
|
22
|
+
subject = build_subject(t('spree.order_mailer.inventory_cancellation.subject'), resend)
|
23
23
|
|
24
24
|
mail(to: @order.email, from: from_address(@store), subject: subject)
|
25
25
|
end
|
@@ -27,7 +27,7 @@ module Spree
|
|
27
27
|
private
|
28
28
|
|
29
29
|
def build_subject(subject_text, resend)
|
30
|
-
resend_text = (resend ? "[#{
|
30
|
+
resend_text = (resend ? "[#{t('spree.resend').upcase}] " : '')
|
31
31
|
"#{resend_text}#{@order.store.name} #{subject_text} ##{@order.number}"
|
32
32
|
end
|
33
33
|
end
|
@@ -3,8 +3,8 @@ module Spree
|
|
3
3
|
def reimbursement_email(reimbursement, resend = false)
|
4
4
|
@reimbursement = reimbursement.respond_to?(:id) ? reimbursement : Spree::Reimbursement.find(reimbursement)
|
5
5
|
store = @reimbursement.order.store
|
6
|
-
subject = (resend ? "[#{
|
7
|
-
subject += "#{store.name} #{
|
6
|
+
subject = (resend ? "[#{t('spree.resend').upcase}] " : '')
|
7
|
+
subject += "#{store.name} #{t('.subject')} ##{@reimbursement.order.number}"
|
8
8
|
mail(to: @reimbursement.order.email, from: from_address(store), subject: subject)
|
9
9
|
end
|
10
10
|
end
|
@@ -2,7 +2,7 @@ module Spree
|
|
2
2
|
class TestMailer < BaseMailer
|
3
3
|
def test_email(email)
|
4
4
|
store = Spree::Store.default
|
5
|
-
subject = "#{store.name} #{
|
5
|
+
subject = "#{store.name} #{t('.subject')}"
|
6
6
|
mail(to: email, from: from_address(store), subject: subject)
|
7
7
|
end
|
8
8
|
end
|
@@ -1,19 +1,25 @@
|
|
1
1
|
module Spree
|
2
2
|
module AdjustmentSource
|
3
3
|
def deals_with_adjustments_for_deleted_source
|
4
|
-
|
4
|
+
Spree::Deprecation.warn "AdjustmentSource#deals_with_adjustments_for_deleted_source is deprecated. Please use AdjustmentSource#remove_adjustments_from_incomplete_orders instead."
|
5
5
|
|
6
|
-
|
7
|
-
adjustment_scope.where(spree_orders: { completed_at: nil }).destroy_all
|
6
|
+
remove_adjustments_from_incomplete_orders
|
8
7
|
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
8
|
+
# The following is deprecated. As source_type without a source_id isn't
|
9
|
+
# much better than a source_id that doesn't exist. In Solidus itself the
|
10
|
+
# relevant classes use `acts_as_paranoid` so it is useful to keep the
|
11
|
+
# source_id around.
|
12
|
+
adjustments.
|
13
|
+
joins(:order).
|
14
|
+
merge(Spree::Order.complete).
|
15
|
+
update_all(source_id: nil, updated_at: Time.current)
|
16
|
+
end
|
17
|
+
|
18
|
+
def remove_adjustments_from_incomplete_orders
|
19
|
+
adjustments.
|
20
|
+
joins(:order).
|
21
|
+
merge(Spree::Order.incomplete).
|
22
|
+
destroy_all
|
17
23
|
end
|
18
24
|
end
|
19
25
|
end
|
@@ -22,7 +22,7 @@ module Spree
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def spree_calculators
|
25
|
-
|
25
|
+
Spree::Config.environment.calculators
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -32,7 +32,7 @@ module Spree
|
|
32
32
|
|
33
33
|
def calculator_type=(calculator_type)
|
34
34
|
klass = calculator_type.constantize if calculator_type
|
35
|
-
self.calculator = klass.new if klass && !calculator.
|
35
|
+
self.calculator = klass.new if klass && !calculator.instance_of?(klass)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
data/app/models/spree/ability.rb
CHANGED
data/app/models/spree/address.rb
CHANGED
@@ -14,6 +14,7 @@ module Spree
|
|
14
14
|
validates :phone, presence: true, if: :require_phone?
|
15
15
|
|
16
16
|
validate :state_validate
|
17
|
+
validate :validate_state_matches_country
|
17
18
|
|
18
19
|
alias_attribute :first_name, :firstname
|
19
20
|
alias_attribute :last_name, :lastname
|
@@ -209,5 +210,11 @@ module Spree
|
|
209
210
|
# ensure at least one state field is populated
|
210
211
|
errors.add :state, :blank if state.blank? && state_name.blank?
|
211
212
|
end
|
213
|
+
|
214
|
+
def validate_state_matches_country
|
215
|
+
if state && state.country != country
|
216
|
+
errors.add(:state, :does_not_match_country)
|
217
|
+
end
|
218
|
+
end
|
212
219
|
end
|
213
220
|
end
|
@@ -101,8 +101,12 @@ module Spree
|
|
101
101
|
return amount
|
102
102
|
end
|
103
103
|
|
104
|
-
# If the adjustment has no source, do not attempt to re-calculate the
|
105
|
-
#
|
104
|
+
# If the adjustment has no source, do not attempt to re-calculate the
|
105
|
+
# amount.
|
106
|
+
# Some scenarios where this happens:
|
107
|
+
# - Adjustments that are manually created via the admin backend
|
108
|
+
# - PromotionAction adjustments where the PromotionAction was deleted
|
109
|
+
# after the order was completed.
|
106
110
|
if source.present?
|
107
111
|
self.amount = source.compute_amount(adjustable)
|
108
112
|
|
@@ -29,7 +29,7 @@ module Spree
|
|
29
29
|
def self.calculators
|
30
30
|
Spree::Deprecation.warn("Calling .calculators is deprecated. Please access through Rails.application.config.spree.calculators")
|
31
31
|
|
32
|
-
|
32
|
+
Spree::Config.environment.calculators
|
33
33
|
end
|
34
34
|
|
35
35
|
def to_s
|
@@ -1,11 +1,11 @@
|
|
1
|
+
require_dependency 'spree/calculator'
|
2
|
+
|
1
3
|
module Spree
|
2
|
-
class Calculator
|
3
|
-
|
4
|
-
preference :percent, :decimal, default: 0
|
4
|
+
class Calculator::PercentOnLineItem < Calculator
|
5
|
+
preference :percent, :decimal, default: 0
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
end
|
7
|
+
def compute(object)
|
8
|
+
(object.amount * preferred_percent) / 100
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
+
require_dependency 'spree/calculator'
|
1
2
|
require_dependency 'spree/returns_calculator'
|
2
3
|
|
3
4
|
module Spree
|
4
5
|
module Calculator::Returns
|
5
6
|
class DefaultRefundAmount < ReturnsCalculator
|
6
|
-
|
7
7
|
def compute(return_item)
|
8
8
|
return 0.0.to_d if return_item.part_of_exchange?
|
9
9
|
weighted_order_adjustment_amount(return_item.inventory_unit) + weighted_line_item_amount(return_item.inventory_unit)
|
@@ -16,7 +16,7 @@ module Spree
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def weighted_line_item_amount(inventory_unit)
|
19
|
-
inventory_unit.line_item.total_before_tax
|
19
|
+
inventory_unit.line_item.total_before_tax / quantity_of_line_item(inventory_unit)
|
20
20
|
end
|
21
21
|
|
22
22
|
def percentage_of_order_total(inventory_unit)
|
@@ -24,8 +24,8 @@ module Spree
|
|
24
24
|
weighted_line_item_amount(inventory_unit) / inventory_unit.order.item_total_before_tax
|
25
25
|
end
|
26
26
|
|
27
|
-
def
|
28
|
-
|
27
|
+
def quantity_of_line_item(inventory_unit)
|
28
|
+
BigDecimal(inventory_unit.line_item.quantity)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -2,7 +2,7 @@ module Spree
|
|
2
2
|
class Classification < Spree::Base
|
3
3
|
self.table_name = 'spree_products_taxons'
|
4
4
|
acts_as_list scope: :taxon
|
5
|
-
belongs_to :product, class_name: "Spree::Product", inverse_of: :classifications
|
5
|
+
belongs_to :product, class_name: "Spree::Product", inverse_of: :classifications, touch: true
|
6
6
|
belongs_to :taxon, class_name: "Spree::Taxon", inverse_of: :classifications, touch: true
|
7
7
|
|
8
8
|
# For https://github.com/spree/spree/issues/3494
|