solidus_core 2.4.2 → 2.5.0.beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
@@ -67,7 +67,7 @@ RSpec.describe Spree::OrderInventory, type: :model do
|
|
|
67
67
|
before { Spree::Config.track_inventory_levels = false }
|
|
68
68
|
|
|
69
69
|
it "creates on hand inventory units" do
|
|
70
|
-
variant.stock_items.
|
|
70
|
+
variant.stock_items.each(&:really_destroy!)
|
|
71
71
|
|
|
72
72
|
subject.verify(shipment)
|
|
73
73
|
|
|
@@ -82,7 +82,7 @@ RSpec.describe Spree::OrderInventory, type: :model do
|
|
|
82
82
|
let(:new_quantity) { 1 }
|
|
83
83
|
|
|
84
84
|
it "creates on hand inventory units" do
|
|
85
|
-
variant.stock_items.
|
|
85
|
+
variant.stock_items.each(&:really_destroy!)
|
|
86
86
|
|
|
87
87
|
subject.verify(shipment)
|
|
88
88
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
require 'rails_helper'
|
|
2
2
|
|
|
3
3
|
RSpec.describe Spree::OrderMutex do
|
|
4
|
+
include ActiveSupport::Testing::TimeHelpers
|
|
5
|
+
|
|
4
6
|
let(:order) { create(:order) }
|
|
5
7
|
|
|
6
8
|
context "without an existing lock" do
|
|
@@ -42,7 +44,7 @@ RSpec.describe Spree::OrderMutex do
|
|
|
42
44
|
around do |example|
|
|
43
45
|
Spree::OrderMutex.with_lock!(order) do
|
|
44
46
|
future = Spree::Config[:order_mutex_max_age].seconds.from_now + 1.second
|
|
45
|
-
|
|
47
|
+
travel_to(future) do
|
|
46
48
|
example.run
|
|
47
49
|
end
|
|
48
50
|
end
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
require 'rails_helper'
|
|
2
2
|
|
|
3
3
|
RSpec.describe Spree::OrderShipping do
|
|
4
|
+
include ActiveSupport::Testing::TimeHelpers
|
|
5
|
+
|
|
4
6
|
let(:order) { create(:order_ready_to_ship, line_items_count: 1) }
|
|
5
7
|
|
|
6
8
|
def emails
|
|
@@ -33,7 +35,8 @@ RSpec.describe Spree::OrderShipping do
|
|
|
33
35
|
end
|
|
34
36
|
|
|
35
37
|
it "updates shipment.shipped_at" do
|
|
36
|
-
|
|
38
|
+
now = Time.current
|
|
39
|
+
travel_to(now) do
|
|
37
40
|
expect { subject }.to change { shipment.shipped_at }.from(nil).to be_within(1.second).of(now)
|
|
38
41
|
end
|
|
39
42
|
end
|
|
@@ -41,7 +44,7 @@ RSpec.describe Spree::OrderShipping do
|
|
|
41
44
|
it "updates order.updated_at" do
|
|
42
45
|
future = 1.minute.from_now
|
|
43
46
|
expect do
|
|
44
|
-
|
|
47
|
+
travel_to(future) do
|
|
45
48
|
subject
|
|
46
49
|
end
|
|
47
50
|
end.to change { order.updated_at }.to be_within(1.second).of(future)
|
|
@@ -223,9 +226,9 @@ RSpec.describe Spree::OrderShipping do
|
|
|
223
226
|
end
|
|
224
227
|
|
|
225
228
|
context "with stale inventory units (regression test)" do
|
|
226
|
-
let(:order) {
|
|
229
|
+
let(:order) { FactoryBot.create(:order_ready_to_ship, line_items_count: 1) }
|
|
227
230
|
let(:shipment) do
|
|
228
|
-
|
|
231
|
+
FactoryBot.create(
|
|
229
232
|
:shipment,
|
|
230
233
|
order: order
|
|
231
234
|
)
|
|
@@ -5,7 +5,7 @@ RSpec.describe Spree::Order, type: :model do
|
|
|
5
5
|
let(:user) { create(:user, email: "spree@example.com") }
|
|
6
6
|
let(:order) { create(:order, user: user, store: store) }
|
|
7
7
|
let(:promotion) do
|
|
8
|
-
|
|
8
|
+
FactoryBot.create(
|
|
9
9
|
:promotion,
|
|
10
10
|
:with_order_adjustment,
|
|
11
11
|
code: "discount"
|
|
@@ -43,6 +43,8 @@ RSpec.describe Spree::Order, type: :model do
|
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
describe "#cancel!" do
|
|
46
|
+
subject { order.cancel! }
|
|
47
|
+
|
|
46
48
|
context "with captured store credit" do
|
|
47
49
|
let!(:store_credit_payment_method) { create(:store_credit_payment_method) }
|
|
48
50
|
let(:order_total) { 500.00 }
|
|
@@ -55,7 +57,28 @@ RSpec.describe Spree::Order, type: :model do
|
|
|
55
57
|
order.capture_payments!
|
|
56
58
|
end
|
|
57
59
|
|
|
58
|
-
|
|
60
|
+
it "cancels the order" do
|
|
61
|
+
expect{ subject }.to change{ order.can_cancel? }.from(true).to(false)
|
|
62
|
+
expect(order).to be_canceled
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "places the order into the canceled scope" do
|
|
66
|
+
expect{ subject }.to change{ Spree::Order.canceled.include?(order) }.from(false).to(true)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "removes the order from the not_canceled scope" do
|
|
70
|
+
expect{ subject }.to change{ Spree::Order.not_canceled.include?(order) }.from(true).to(false)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
context "with fully refunded payment" do
|
|
75
|
+
let(:order) { create(:completed_order_with_totals) }
|
|
76
|
+
let(:payment_amount) { 50 }
|
|
77
|
+
let(:payment) { create(:payment, order: order, amount: payment_amount, state: 'completed') }
|
|
78
|
+
|
|
79
|
+
before do
|
|
80
|
+
create(:refund, payment: payment, amount: payment_amount)
|
|
81
|
+
end
|
|
59
82
|
|
|
60
83
|
it "cancels the order" do
|
|
61
84
|
expect{ subject }.to change{ order.can_cancel? }.from(true).to(false)
|
|
@@ -142,7 +165,7 @@ RSpec.describe Spree::Order, type: :model do
|
|
|
142
165
|
context 'when variant is destroyed' do
|
|
143
166
|
before do
|
|
144
167
|
allow(order).to receive(:restart_checkout_flow)
|
|
145
|
-
order.line_items.first.variant.
|
|
168
|
+
order.line_items.first.variant.discard
|
|
146
169
|
end
|
|
147
170
|
|
|
148
171
|
it 'should restart checkout flow' do
|
|
@@ -152,7 +175,7 @@ RSpec.describe Spree::Order, type: :model do
|
|
|
152
175
|
|
|
153
176
|
it 'should have error message' do
|
|
154
177
|
subject
|
|
155
|
-
expect(order.errors[:base]).to include(
|
|
178
|
+
expect(order.errors[:base]).to include(I18n.t('spree.deleted_variants_present'))
|
|
156
179
|
end
|
|
157
180
|
|
|
158
181
|
it 'should be false' do
|
|
@@ -497,7 +520,7 @@ RSpec.describe Spree::Order, type: :model do
|
|
|
497
520
|
end
|
|
498
521
|
it "updates the state column to the first checkout_steps value" do
|
|
499
522
|
order = create(:order_with_totals, state: "delivery")
|
|
500
|
-
expect(order.checkout_steps).to eql
|
|
523
|
+
expect(order.checkout_steps).to eql %w(address delivery payment confirm complete)
|
|
501
524
|
expect{ order.restart_checkout_flow }.to change{ order.state }.from("delivery").to("address")
|
|
502
525
|
end
|
|
503
526
|
|
|
@@ -511,7 +534,7 @@ RSpec.describe Spree::Order, type: :model do
|
|
|
511
534
|
|
|
512
535
|
# Regression tests for https://github.com/spree/spree/issues/4072
|
|
513
536
|
context "#state_changed" do
|
|
514
|
-
let(:order) {
|
|
537
|
+
let(:order) { FactoryBot.create(:order) }
|
|
515
538
|
|
|
516
539
|
it "logs state changes" do
|
|
517
540
|
order.update_column(:payment_state, 'balance_due')
|
|
@@ -581,9 +604,9 @@ RSpec.describe Spree::Order, type: :model do
|
|
|
581
604
|
context "with more than one payment method" do
|
|
582
605
|
subject { order.available_payment_methods }
|
|
583
606
|
|
|
584
|
-
let!(:first_method) {
|
|
607
|
+
let!(:first_method) { FactoryBot.create(:payment_method, available_to_users: true,
|
|
585
608
|
available_to_admin: true) }
|
|
586
|
-
let!(:second_method) {
|
|
609
|
+
let!(:second_method) { FactoryBot.create(:payment_method, available_to_users: true,
|
|
587
610
|
available_to_admin: true) }
|
|
588
611
|
|
|
589
612
|
before do
|
|
@@ -756,10 +779,10 @@ RSpec.describe Spree::Order, type: :model do
|
|
|
756
779
|
end
|
|
757
780
|
|
|
758
781
|
context "#associate_user!" do
|
|
759
|
-
let!(:user) {
|
|
782
|
+
let!(:user) { FactoryBot.create(:user) }
|
|
760
783
|
|
|
761
784
|
it "should associate a user with a persisted order" do
|
|
762
|
-
order =
|
|
785
|
+
order = FactoryBot.create(:order_with_line_items, created_by: nil)
|
|
763
786
|
order.user = nil
|
|
764
787
|
order.email = nil
|
|
765
788
|
order.associate_user!(user)
|
|
@@ -776,7 +799,7 @@ RSpec.describe Spree::Order, type: :model do
|
|
|
776
799
|
|
|
777
800
|
it "should not overwrite the created_by if it already is set" do
|
|
778
801
|
creator = create(:user)
|
|
779
|
-
order =
|
|
802
|
+
order = FactoryBot.create(:order_with_line_items, created_by: creator)
|
|
780
803
|
|
|
781
804
|
order.user = nil
|
|
782
805
|
order.email = nil
|
|
@@ -1232,7 +1255,7 @@ RSpec.describe Spree::Order, type: :model do
|
|
|
1232
1255
|
context "there are no other payments" do
|
|
1233
1256
|
it "adds an error to the model" do
|
|
1234
1257
|
expect(subject).to be false
|
|
1235
|
-
expect(order.errors.full_messages).to include(
|
|
1258
|
+
expect(order.errors.full_messages).to include(I18n.t('spree.store_credit.errors.unable_to_fund'))
|
|
1236
1259
|
end
|
|
1237
1260
|
end
|
|
1238
1261
|
|
|
@@ -1545,7 +1568,7 @@ RSpec.describe Spree::Order, type: :model do
|
|
|
1545
1568
|
it 'is deprecated' do
|
|
1546
1569
|
subject.instance_variable_set('@updating_params', {})
|
|
1547
1570
|
expect(Spree::Deprecation).to receive(:warn)
|
|
1548
|
-
subject.update_params_payment_source
|
|
1571
|
+
subject.send(:update_params_payment_source)
|
|
1549
1572
|
end
|
|
1550
1573
|
end
|
|
1551
1574
|
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
require 'rails_helper'
|
|
2
2
|
|
|
3
3
|
RSpec.describe Spree::OrderTaxation do
|
|
4
|
-
let(:shipping_address) {
|
|
5
|
-
let(:order) {
|
|
4
|
+
let(:shipping_address) { FactoryBot.create(:address, state: new_york) }
|
|
5
|
+
let(:order) { FactoryBot.create(:order, ship_address: shipping_address, state: "delivery") }
|
|
6
6
|
|
|
7
|
-
let(:new_york) {
|
|
8
|
-
let(:new_york_zone) {
|
|
7
|
+
let(:new_york) { FactoryBot.create(:state, state_code: "NY") }
|
|
8
|
+
let(:new_york_zone) { FactoryBot.create(:zone, states: [new_york]) }
|
|
9
9
|
|
|
10
|
-
let(:books_category) {
|
|
10
|
+
let(:books_category) { FactoryBot.create(:tax_category, name: "Books") }
|
|
11
11
|
let(:book_tax_rate) do
|
|
12
|
-
|
|
12
|
+
FactoryBot.create(
|
|
13
13
|
:tax_rate,
|
|
14
14
|
name: "New York Sales Tax",
|
|
15
15
|
tax_categories: [books_category],
|
|
@@ -20,7 +20,7 @@ RSpec.describe Spree::OrderTaxation do
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
let(:book) do
|
|
23
|
-
|
|
23
|
+
FactoryBot.create(
|
|
24
24
|
:product,
|
|
25
25
|
price: 20,
|
|
26
26
|
name: "Book",
|
|
@@ -2,6 +2,8 @@ require 'rails_helper'
|
|
|
2
2
|
|
|
3
3
|
module Spree
|
|
4
4
|
RSpec.describe OrderUpdater, type: :model do
|
|
5
|
+
include ActiveSupport::Testing::TimeHelpers
|
|
6
|
+
|
|
5
7
|
let!(:store) { create :store }
|
|
6
8
|
let(:order) { Spree::Order.create }
|
|
7
9
|
let(:updater) { Spree::OrderUpdater.new(order) }
|
|
@@ -163,8 +165,8 @@ module Spree
|
|
|
163
165
|
end
|
|
164
166
|
|
|
165
167
|
it 'should choose the most recent promotion adjustment when amounts are equal' do
|
|
166
|
-
#
|
|
167
|
-
|
|
168
|
+
# Freezing time is a regression test
|
|
169
|
+
travel_to(Time.current) do
|
|
168
170
|
create_adjustment('Promotion A', -200)
|
|
169
171
|
create_adjustment('Promotion B', -200)
|
|
170
172
|
end
|
|
@@ -177,8 +179,8 @@ module Spree
|
|
|
177
179
|
end
|
|
178
180
|
|
|
179
181
|
it 'should choose the most recent promotion adjustment when amounts are equal' do
|
|
180
|
-
#
|
|
181
|
-
|
|
182
|
+
# Freezing time is a regression test
|
|
183
|
+
travel_to(Time.current) do
|
|
182
184
|
create_adjustment('Promotion A', -200)
|
|
183
185
|
create_adjustment('Promotion B', -200)
|
|
184
186
|
end
|
|
@@ -62,8 +62,8 @@ module Spree
|
|
|
62
62
|
expect(new_payment).not_to be_persisted
|
|
63
63
|
expect(new_payment.source).not_to be_persisted
|
|
64
64
|
expect(new_payment.source).not_to be_valid
|
|
65
|
-
expect(new_payment.source.
|
|
66
|
-
expect(new_payment.source.
|
|
65
|
+
expect(new_payment.source.errors[:number]).to be_present
|
|
66
|
+
expect(new_payment.source.errors[:verification_value].size).to be_present
|
|
67
67
|
end
|
|
68
68
|
end
|
|
69
69
|
end
|
|
@@ -21,7 +21,7 @@ RSpec.describe Spree::PaymentMethod::StoreCredit do
|
|
|
21
21
|
|
|
22
22
|
it "declines an unknown store credit" do
|
|
23
23
|
expect(subject.success?).to be false
|
|
24
|
-
expect(subject.message).to include
|
|
24
|
+
expect(subject.message).to include I18n.t('spree.store_credit.unable_to_find')
|
|
25
25
|
end
|
|
26
26
|
end
|
|
27
27
|
|
|
@@ -30,7 +30,7 @@ RSpec.describe Spree::PaymentMethod::StoreCredit do
|
|
|
30
30
|
|
|
31
31
|
it "declines a store credit" do
|
|
32
32
|
expect(subject.success?).to be false
|
|
33
|
-
expect(subject.message).to include
|
|
33
|
+
expect(subject.message).to include I18n.t('spree.store_credit.insufficient_funds')
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
|
|
@@ -39,7 +39,7 @@ RSpec.describe Spree::PaymentMethod::StoreCredit do
|
|
|
39
39
|
|
|
40
40
|
it "declines the credit" do
|
|
41
41
|
expect(subject.success?).to be false
|
|
42
|
-
expect(subject.message).to include
|
|
42
|
+
expect(subject.message).to include I18n.t('spree.store_credit.currency_mismatch')
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
|
|
@@ -80,7 +80,7 @@ RSpec.describe Spree::PaymentMethod::StoreCredit do
|
|
|
80
80
|
|
|
81
81
|
it "declines an unknown store credit" do
|
|
82
82
|
expect(subject.success?).to be false
|
|
83
|
-
expect(subject.message).to include
|
|
83
|
+
expect(subject.message).to include I18n.t('spree.store_credit.unable_to_find')
|
|
84
84
|
end
|
|
85
85
|
end
|
|
86
86
|
|
|
@@ -93,7 +93,7 @@ RSpec.describe Spree::PaymentMethod::StoreCredit do
|
|
|
93
93
|
|
|
94
94
|
it "declines a store credit" do
|
|
95
95
|
expect(subject.success?).to be false
|
|
96
|
-
expect(subject.message).to include
|
|
96
|
+
expect(subject.message).to include I18n.t('spree.store_credit.insufficient_authorized_amount')
|
|
97
97
|
end
|
|
98
98
|
end
|
|
99
99
|
|
|
@@ -102,13 +102,13 @@ RSpec.describe Spree::PaymentMethod::StoreCredit do
|
|
|
102
102
|
|
|
103
103
|
it "declines the credit" do
|
|
104
104
|
expect(subject.success?).to be false
|
|
105
|
-
expect(subject.message).to include
|
|
105
|
+
expect(subject.message).to include I18n.t('spree.store_credit.currency_mismatch')
|
|
106
106
|
end
|
|
107
107
|
end
|
|
108
108
|
|
|
109
109
|
context 'with a valid request' do
|
|
110
110
|
it "captures the store credit" do
|
|
111
|
-
expect(subject.message).to include
|
|
111
|
+
expect(subject.message).to include I18n.t('spree.store_credit.successful_action', action: Spree::StoreCredit::CAPTURE_ACTION)
|
|
112
112
|
expect(subject.success?).to be true
|
|
113
113
|
end
|
|
114
114
|
|
|
@@ -139,7 +139,7 @@ RSpec.describe Spree::PaymentMethod::StoreCredit do
|
|
|
139
139
|
|
|
140
140
|
it "declines an unknown store credit" do
|
|
141
141
|
expect(subject.success?).to be false
|
|
142
|
-
expect(subject.message).to include
|
|
142
|
+
expect(subject.message).to include I18n.t('spree.store_credit.unable_to_find')
|
|
143
143
|
end
|
|
144
144
|
end
|
|
145
145
|
|
|
@@ -153,7 +153,7 @@ RSpec.describe Spree::PaymentMethod::StoreCredit do
|
|
|
153
153
|
|
|
154
154
|
it "voids a valid store credit void request" do
|
|
155
155
|
expect(subject.success?).to be true
|
|
156
|
-
expect(subject.message).to include
|
|
156
|
+
expect(subject.message).to include I18n.t('spree.store_credit.successful_action', action: Spree::StoreCredit::VOID_ACTION)
|
|
157
157
|
end
|
|
158
158
|
|
|
159
159
|
context 'with an originator' do
|
|
@@ -181,7 +181,7 @@ RSpec.describe Spree::PaymentMethod::StoreCredit do
|
|
|
181
181
|
|
|
182
182
|
resp = subject.purchase(amount * 100.0, store_credit, gateway_options)
|
|
183
183
|
expect(resp.success?).to be false
|
|
184
|
-
expect(resp.message).to include
|
|
184
|
+
expect(resp.message).to include I18n.t('spree.store_credit.unable_to_find')
|
|
185
185
|
end
|
|
186
186
|
|
|
187
187
|
it "captures a purchase if it can find a pending credit for the correct amount" do
|
|
@@ -194,7 +194,7 @@ RSpec.describe Spree::PaymentMethod::StoreCredit do
|
|
|
194
194
|
|
|
195
195
|
resp = subject.purchase(amount * 100.0, store_credit, gateway_options)
|
|
196
196
|
expect(resp.success?).to be true
|
|
197
|
-
expect(resp.message).to include
|
|
197
|
+
expect(resp.message).to include I18n.t('spree.store_credit.successful_action', action: Spree::StoreCredit::CAPTURE_ACTION)
|
|
198
198
|
end
|
|
199
199
|
end
|
|
200
200
|
|
|
@@ -214,7 +214,7 @@ RSpec.describe Spree::PaymentMethod::StoreCredit do
|
|
|
214
214
|
|
|
215
215
|
it "declines an unknown store credit" do
|
|
216
216
|
expect(subject.success?).to be false
|
|
217
|
-
expect(subject.message).to include
|
|
217
|
+
expect(subject.message).to include I18n.t('spree.store_credit.unable_to_find')
|
|
218
218
|
end
|
|
219
219
|
end
|
|
220
220
|
|
|
@@ -231,7 +231,7 @@ RSpec.describe Spree::PaymentMethod::StoreCredit do
|
|
|
231
231
|
|
|
232
232
|
it "credits a valid store credit credit request" do
|
|
233
233
|
expect(subject.success?).to be true
|
|
234
|
-
expect(subject.message).to include
|
|
234
|
+
expect(subject.message).to include I18n.t('spree.store_credit.successful_action', action: Spree::StoreCredit::CREDIT_ACTION)
|
|
235
235
|
end
|
|
236
236
|
end
|
|
237
237
|
|
|
@@ -589,7 +589,7 @@ RSpec.describe Spree::Payment, type: :model do
|
|
|
589
589
|
end
|
|
590
590
|
|
|
591
591
|
specify do
|
|
592
|
-
expect { payment.process! }.to raise_error(Spree::Core::GatewayError,
|
|
592
|
+
expect { payment.process! }.to raise_error(Spree::Core::GatewayError, I18n.t('spree.payment_processing_failed'))
|
|
593
593
|
end
|
|
594
594
|
end
|
|
595
595
|
end
|
|
@@ -630,6 +630,25 @@ RSpec.describe Spree::Payment, type: :model do
|
|
|
630
630
|
end
|
|
631
631
|
end
|
|
632
632
|
|
|
633
|
+
describe "#fully_refunded?" do
|
|
634
|
+
subject { payment.fully_refunded? }
|
|
635
|
+
|
|
636
|
+
before { payment.amount = 100 }
|
|
637
|
+
|
|
638
|
+
context 'before refund' do
|
|
639
|
+
it { is_expected.to be false }
|
|
640
|
+
end
|
|
641
|
+
|
|
642
|
+
context 'when refund total equals payment amount' do
|
|
643
|
+
before do
|
|
644
|
+
create(:refund, payment: payment, amount: 50)
|
|
645
|
+
create(:refund, payment: payment, amount: 50)
|
|
646
|
+
end
|
|
647
|
+
|
|
648
|
+
it { is_expected.to be true }
|
|
649
|
+
end
|
|
650
|
+
end
|
|
651
|
+
|
|
633
652
|
describe "#save" do
|
|
634
653
|
context "captured payments" do
|
|
635
654
|
it "update order payment total" do
|
|
@@ -855,8 +874,8 @@ RSpec.describe Spree::Payment, type: :model do
|
|
|
855
874
|
payment = Spree::PaymentCreate.new(order, params).build
|
|
856
875
|
expect(payment).not_to be_valid
|
|
857
876
|
expect(payment.source).not_to be_nil
|
|
858
|
-
expect(payment.source.
|
|
859
|
-
expect(payment.source.
|
|
877
|
+
expect(payment.source.errors[:number].size).to eq(1)
|
|
878
|
+
expect(payment.source.errors[:verification_value].size).to eq(1)
|
|
860
879
|
end
|
|
861
880
|
end
|
|
862
881
|
|
|
@@ -1242,7 +1261,7 @@ RSpec.describe Spree::Payment, type: :model do
|
|
|
1242
1261
|
before do
|
|
1243
1262
|
gateway.save!
|
|
1244
1263
|
payment.save!
|
|
1245
|
-
gateway.
|
|
1264
|
+
gateway.discard
|
|
1246
1265
|
end
|
|
1247
1266
|
|
|
1248
1267
|
it "works with a soft deleted payment method" do
|