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
@@ -232,7 +232,7 @@ RSpec.describe Spree::Promotion, type: :model do
|
|
232
232
|
let(:usage_limit) { 1 }
|
233
233
|
context "on a different order" do
|
234
234
|
before do
|
235
|
-
|
235
|
+
FactoryBot.create(
|
236
236
|
:completed_order_with_promotion,
|
237
237
|
promotion: promotion
|
238
238
|
)
|
@@ -253,7 +253,7 @@ RSpec.describe Spree::Promotion, type: :model do
|
|
253
253
|
|
254
254
|
context "with an order-level adjustment" do
|
255
255
|
let(:promotion) do
|
256
|
-
|
256
|
+
FactoryBot.create(
|
257
257
|
:promotion,
|
258
258
|
:with_order_adjustment,
|
259
259
|
code: "discount",
|
@@ -261,7 +261,7 @@ RSpec.describe Spree::Promotion, type: :model do
|
|
261
261
|
)
|
262
262
|
end
|
263
263
|
let(:promotable) do
|
264
|
-
|
264
|
+
FactoryBot.create(
|
265
265
|
:completed_order_with_promotion,
|
266
266
|
promotion: promotion
|
267
267
|
)
|
@@ -271,7 +271,7 @@ RSpec.describe Spree::Promotion, type: :model do
|
|
271
271
|
|
272
272
|
context "with an item-level adjustment" do
|
273
273
|
let(:promotion) do
|
274
|
-
|
274
|
+
FactoryBot.create(
|
275
275
|
:promotion,
|
276
276
|
:with_line_item_adjustment,
|
277
277
|
code: "discount",
|
@@ -286,7 +286,7 @@ RSpec.describe Spree::Promotion, type: :model do
|
|
286
286
|
})
|
287
287
|
end
|
288
288
|
context "when there are multiple line items" do
|
289
|
-
let(:order) {
|
289
|
+
let(:order) { FactoryBot.create(:order_with_line_items, line_items_count: 2) }
|
290
290
|
describe "the first item" do
|
291
291
|
let(:promotable) { order.line_items.first }
|
292
292
|
it_behaves_like "it should"
|
@@ -297,7 +297,7 @@ RSpec.describe Spree::Promotion, type: :model do
|
|
297
297
|
end
|
298
298
|
end
|
299
299
|
context "when there is a single line item" do
|
300
|
-
let(:order) {
|
300
|
+
let(:order) { FactoryBot.create(:order_with_line_items) }
|
301
301
|
let(:promotable) { order.line_items.first }
|
302
302
|
it_behaves_like "it should"
|
303
303
|
end
|
@@ -306,7 +306,7 @@ RSpec.describe Spree::Promotion, type: :model do
|
|
306
306
|
|
307
307
|
describe "#usage_count" do
|
308
308
|
let(:promotion) do
|
309
|
-
|
309
|
+
FactoryBot.create(
|
310
310
|
:promotion,
|
311
311
|
:with_order_adjustment,
|
312
312
|
code: "discount"
|
@@ -316,13 +316,13 @@ RSpec.describe Spree::Promotion, type: :model do
|
|
316
316
|
subject { promotion.usage_count }
|
317
317
|
|
318
318
|
context "when the code is applied to a non-complete order" do
|
319
|
-
let(:order) {
|
319
|
+
let(:order) { FactoryBot.create(:order_with_line_items) }
|
320
320
|
before { promotion.activate(order: order, promotion_code: promotion.codes.first) }
|
321
321
|
it { is_expected.to eq 0 }
|
322
322
|
end
|
323
323
|
context "when the code is applied to a complete order" do
|
324
324
|
let!(:order) do
|
325
|
-
|
325
|
+
FactoryBot.create(
|
326
326
|
:completed_order_with_promotion,
|
327
327
|
promotion: promotion
|
328
328
|
)
|
@@ -487,11 +487,11 @@ RSpec.describe Spree::Promotion, type: :model do
|
|
487
487
|
end
|
488
488
|
|
489
489
|
context "when the promotion's usage limit is exceeded" do
|
490
|
-
let(:order) {
|
491
|
-
let(:promotion) {
|
490
|
+
let(:order) { FactoryBot.create(:completed_order_with_promotion, promotion: promotion) }
|
491
|
+
let(:promotion) { FactoryBot.create(:promotion, :with_order_adjustment) }
|
492
492
|
|
493
493
|
before do
|
494
|
-
|
494
|
+
FactoryBot.create(
|
495
495
|
:completed_order_with_promotion,
|
496
496
|
promotion: promotion
|
497
497
|
)
|
@@ -504,12 +504,12 @@ RSpec.describe Spree::Promotion, type: :model do
|
|
504
504
|
end
|
505
505
|
|
506
506
|
context "when the promotion code's usage limit is exceeded" do
|
507
|
-
let(:order) {
|
507
|
+
let(:order) { FactoryBot.create(:completed_order_with_promotion, promotion: promotion) }
|
508
508
|
let(:promotion) { create(:promotion, :with_order_adjustment, code: 'abc123', per_code_usage_limit: 1) }
|
509
509
|
let(:promotion_code) { promotion.codes.first }
|
510
510
|
|
511
511
|
before do
|
512
|
-
|
512
|
+
FactoryBot.create(
|
513
513
|
:completed_order_with_promotion,
|
514
514
|
promotion: promotion
|
515
515
|
)
|
@@ -145,7 +145,7 @@ RSpec.describe Spree::Refund, type: :model do
|
|
145
145
|
end
|
146
146
|
|
147
147
|
it 'raises Spree::Core::GatewayError' do
|
148
|
-
expect { subject }.to raise_error(Spree::Core::GatewayError,
|
148
|
+
expect { subject }.to raise_error(Spree::Core::GatewayError, I18n.t('spree.unable_to_connect_to_gateway'))
|
149
149
|
end
|
150
150
|
end
|
151
151
|
|
@@ -24,7 +24,7 @@ RSpec.describe Spree::ReturnItem::EligibilityValidator::InventoryShipped do
|
|
24
24
|
|
25
25
|
it "sets an error" do
|
26
26
|
subject
|
27
|
-
expect(validator.errors[:inventory_unit_shipped]).to eq
|
27
|
+
expect(validator.errors[:inventory_unit_shipped]).to eq I18n.t('spree.return_item_inventory_unit_ineligible')
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
@@ -16,7 +16,7 @@ RSpec.describe Spree::ReturnItem::EligibilityValidator::NoReimbursements do
|
|
16
16
|
|
17
17
|
it "sets an error" do
|
18
18
|
subject
|
19
|
-
expect(validator.errors[:inventory_unit_reimbursed]).to eq
|
19
|
+
expect(validator.errors[:inventory_unit_reimbursed]).to eq I18n.t('spree.return_item_inventory_unit_reimbursed')
|
20
20
|
end
|
21
21
|
|
22
22
|
context "but the return item has been expired" do
|
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'rails_helper'
|
2
2
|
|
3
3
|
RSpec.describe Spree::ReturnItem::EligibilityValidator::OrderCompleted do
|
4
|
-
let(:
|
4
|
+
let(:shipment) { create(:shipment, order: order) }
|
5
|
+
let(:inventory_unit) { create(:inventory_unit, shipment: shipment) }
|
5
6
|
let(:return_item) { create(:return_item, inventory_unit: inventory_unit) }
|
6
7
|
let(:validator) { Spree::ReturnItem::EligibilityValidator::OrderCompleted.new(return_item) }
|
7
8
|
|
@@ -25,7 +26,7 @@ RSpec.describe Spree::ReturnItem::EligibilityValidator::OrderCompleted do
|
|
25
26
|
|
26
27
|
it "sets an error" do
|
27
28
|
subject
|
28
|
-
expect(validator.errors[:order_not_completed]).to eq
|
29
|
+
expect(validator.errors[:order_not_completed]).to eq I18n.t('spree.return_item_order_not_completed')
|
29
30
|
end
|
30
31
|
end
|
31
32
|
end
|
@@ -22,7 +22,7 @@ RSpec.describe Spree::ReturnItem::EligibilityValidator::RMARequired, type: :mode
|
|
22
22
|
|
23
23
|
it "sets an error" do
|
24
24
|
subject
|
25
|
-
expect(validator.errors[:rma_required]).to eq
|
25
|
+
expect(validator.errors[:rma_required]).to eq I18n.t('spree.return_item_rma_ineligible')
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'rails_helper'
|
2
2
|
|
3
3
|
RSpec.describe Spree::ReturnItem::EligibilityValidator::TimeSincePurchase, type: :model do
|
4
|
-
let(:inventory_unit) { create(:inventory_unit,
|
4
|
+
let(:inventory_unit) { create(:inventory_unit, shipment: create(:shipped_order).shipments.first) }
|
5
5
|
let(:return_item) { create(:return_item, inventory_unit: inventory_unit) }
|
6
6
|
let(:validator) { Spree::ReturnItem::EligibilityValidator::TimeSincePurchase.new(return_item) }
|
7
7
|
|
@@ -28,7 +28,7 @@ RSpec.describe Spree::ReturnItem::EligibilityValidator::TimeSincePurchase, type:
|
|
28
28
|
|
29
29
|
it "sets an error" do
|
30
30
|
subject
|
31
|
-
expect(validator.errors[:number_of_days]).to eq
|
31
|
+
expect(validator.errors[:number_of_days]).to eq I18n.t('spree.return_item_time_period_ineligible')
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
@@ -19,7 +19,7 @@ RSpec.describe Spree::ReturnItem, type: :model do
|
|
19
19
|
describe '#receive!' do
|
20
20
|
let(:now) { Time.current }
|
21
21
|
let(:order) { create(:shipped_order) }
|
22
|
-
let(:inventory_unit) { create(:inventory_unit,
|
22
|
+
let(:inventory_unit) { create(:inventory_unit, state: 'shipped') }
|
23
23
|
let!(:customer_return) { create(:customer_return_without_return_items, return_items: [return_item], stock_location_id: inventory_unit.shipment.stock_location_id) }
|
24
24
|
let(:return_item) { create(:return_item, inventory_unit: inventory_unit) }
|
25
25
|
|
@@ -45,7 +45,7 @@ RSpec.describe Spree::ReturnItem, type: :model do
|
|
45
45
|
let!(:return_item_with_dupe_inventory_unit) { create(:return_item, inventory_unit: inventory_unit, reception_status: 'received') }
|
46
46
|
|
47
47
|
before do
|
48
|
-
|
48
|
+
expect { subject }.to raise_error { StateMachines::InvalidTransition }
|
49
49
|
end
|
50
50
|
|
51
51
|
it 'does not receive the return item' do
|
@@ -58,7 +58,7 @@ RSpec.describe Spree::ReturnItem, type: :model do
|
|
58
58
|
end
|
59
59
|
|
60
60
|
context 'when the received item is actually the exchange (aka customer changed mind about exchange)' do
|
61
|
-
let(:exchange_inventory_unit) { create(:inventory_unit,
|
61
|
+
let(:exchange_inventory_unit) { create(:inventory_unit, state: 'shipped') }
|
62
62
|
let!(:return_item_with_exchange) { create(:return_item, inventory_unit: inventory_unit, exchange_inventory_unit: exchange_inventory_unit) }
|
63
63
|
let!(:return_item_in_lieu) { create(:return_item, inventory_unit: exchange_inventory_unit) }
|
64
64
|
|
@@ -112,7 +112,7 @@ RSpec.describe Spree::ReturnItem, type: :model do
|
|
112
112
|
end
|
113
113
|
|
114
114
|
context "when the inventory unit's variant does not yet have a stock item for the stock location it was returned to" do
|
115
|
-
before { inventory_unit.variant.stock_items.
|
115
|
+
before { inventory_unit.variant.stock_items.each(&:really_destroy!) }
|
116
116
|
|
117
117
|
it "creates a new stock item for the inventory unit with a count of 1" do
|
118
118
|
expect { subject }.to change(Spree::StockItem, :count).by(1)
|
@@ -222,7 +222,8 @@ RSpec.describe Spree::ReturnItem, type: :model do
|
|
222
222
|
end
|
223
223
|
|
224
224
|
describe "#receive" do
|
225
|
-
let(:
|
225
|
+
let(:order) { create(:shipped_order) }
|
226
|
+
let(:inventory_unit) { create(:inventory_unit, shipment: order.shipments.first) }
|
226
227
|
let(:return_item) { create(:return_item, reception_status: status, inventory_unit: inventory_unit) }
|
227
228
|
|
228
229
|
subject { return_item.receive! }
|
@@ -602,7 +603,6 @@ RSpec.describe Spree::ReturnItem, type: :model do
|
|
602
603
|
expect(subject).not_to be_persisted
|
603
604
|
expect(subject.original_return_item).to eq return_item
|
604
605
|
expect(subject.line_item).to eq return_item.inventory_unit.line_item
|
605
|
-
expect(subject.order).to eq return_item.inventory_unit.order
|
606
606
|
end
|
607
607
|
end
|
608
608
|
end
|
@@ -196,7 +196,7 @@ RSpec.describe Spree::Shipment, type: :model do
|
|
196
196
|
end
|
197
197
|
|
198
198
|
context "variant was removed" do
|
199
|
-
before { variant.
|
199
|
+
before { variant.discard }
|
200
200
|
|
201
201
|
it "still returns variant expected" do
|
202
202
|
expect(shipment.manifest.first.variant).to eq variant
|
@@ -264,6 +264,7 @@ RSpec.describe Spree::Shipment, type: :model do
|
|
264
264
|
end
|
265
265
|
|
266
266
|
before do
|
267
|
+
allow(line_item).to receive(:order) { order }
|
267
268
|
allow(shipment).to receive(:inventory_units) { inventory_units }
|
268
269
|
allow(inventory_units).to receive_message_chain(:includes, :joins).and_return inventory_units
|
269
270
|
end
|
@@ -525,14 +526,6 @@ RSpec.describe Spree::Shipment, type: :model do
|
|
525
526
|
allow(shipment).to receive_messages(require_inventory: false, update_order: true, state: state)
|
526
527
|
end
|
527
528
|
|
528
|
-
it "should call fulfill_order_with_stock_location" do
|
529
|
-
expect(Spree::OrderStockLocation).to(
|
530
|
-
receive(:fulfill_for_order_with_stock_location).
|
531
|
-
with(order, stock_location)
|
532
|
-
)
|
533
|
-
shipment.ship!
|
534
|
-
end
|
535
|
-
|
536
529
|
it "finalizes adjustments" do
|
537
530
|
shipment.adjustments.each do |adjustment|
|
538
531
|
expect(adjustment).to receive(:finalize!)
|
@@ -658,7 +651,7 @@ RSpec.describe Spree::Shipment, type: :model do
|
|
658
651
|
let(:inventory_units) { double }
|
659
652
|
|
660
653
|
let(:params) do
|
661
|
-
{ variant_id: variant.id, state: 'on_hand',
|
654
|
+
{ variant_id: variant.id, state: 'on_hand', line_item_id: line_item.id }
|
662
655
|
end
|
663
656
|
|
664
657
|
before { allow(shipment).to receive_messages inventory_units: inventory_units }
|
@@ -816,6 +809,14 @@ RSpec.describe Spree::Shipment, type: :model do
|
|
816
809
|
let!(:air_shipping_method) { create(:shipping_method, name: "Air") }
|
817
810
|
let(:new_rate) { shipment.shipping_rates.create!(shipping_method: air_shipping_method) }
|
818
811
|
|
812
|
+
context 'selecting the same id' do
|
813
|
+
it 'keeps the same shipping rate selected' do
|
814
|
+
expect {
|
815
|
+
shipment.selected_shipping_rate_id = shipping_rate.id
|
816
|
+
}.not_to change { shipping_rate.selected }.from(true)
|
817
|
+
end
|
818
|
+
end
|
819
|
+
|
819
820
|
context 'when the id exists' do
|
820
821
|
it 'sets the new shipping rate as selected' do
|
821
822
|
expect {
|
@@ -835,6 +836,9 @@ RSpec.describe Spree::Shipment, type: :model do
|
|
835
836
|
expect {
|
836
837
|
shipment.selected_shipping_rate_id = -1
|
837
838
|
}.to raise_error(ArgumentError)
|
839
|
+
|
840
|
+
# Should not change selection
|
841
|
+
expect(shipping_rate.reload).to be_selected
|
838
842
|
end
|
839
843
|
end
|
840
844
|
end
|
@@ -6,16 +6,14 @@ module Spree
|
|
6
6
|
let(:order) { Order.create! }
|
7
7
|
let(:variant) { create :variant }
|
8
8
|
let!(:shipment) { create(:shipment, state: 'pending', order: order) }
|
9
|
-
|
9
|
+
subject(:manifest) { described_class.new(inventory_units: inventory_units) }
|
10
10
|
|
11
11
|
def build_unit(variant, attrs = {})
|
12
|
-
attrs = {
|
13
|
-
attrs[:line_item] =
|
12
|
+
attrs = { variant: variant, shipment: shipment }.merge(attrs)
|
13
|
+
attrs[:line_item] = order.contents.add(variant)
|
14
14
|
InventoryUnit.new(attrs)
|
15
15
|
end
|
16
16
|
|
17
|
-
subject{ manifest }
|
18
|
-
|
19
17
|
describe "#items" do
|
20
18
|
context 'empty' do
|
21
19
|
let(:inventory_units) { [] }
|
@@ -68,9 +66,15 @@ module Spree
|
|
68
66
|
end
|
69
67
|
|
70
68
|
describe "#for_order" do
|
71
|
-
let!(:order2) {
|
69
|
+
let!(:order2) { create(:order_with_line_items) }
|
72
70
|
context 'single unit' do
|
73
|
-
let(:inventory_units) { [
|
71
|
+
let(:inventory_units) { [inventory_unit] }
|
72
|
+
let(:inventory_unit) { build_unit(variant) }
|
73
|
+
|
74
|
+
before do
|
75
|
+
allow(inventory_unit).to receive(:order_id) { order.id }
|
76
|
+
end
|
77
|
+
|
74
78
|
it "has single ManifestItem in correct order" do
|
75
79
|
expect(manifest.for_order(order).items.count).to eq 1
|
76
80
|
end
|
@@ -81,13 +85,22 @@ module Spree
|
|
81
85
|
end
|
82
86
|
|
83
87
|
context 'one units in each order' do
|
84
|
-
let(:
|
88
|
+
let(:order_2) { build_stubbed(:order) }
|
89
|
+
let(:inventory_units) { [inventory_unit_one, inventory_unit_two] }
|
90
|
+
let(:inventory_unit_one) { build_unit(variant) }
|
91
|
+
let(:inventory_unit_two) { build_unit(variant) }
|
92
|
+
|
93
|
+
before do
|
94
|
+
allow(inventory_unit_one).to receive(:order_id) { order.id }
|
95
|
+
allow(inventory_unit_two).to receive(:order_id) { order_2.id }
|
96
|
+
end
|
97
|
+
|
85
98
|
it "has single ManifestItem in first order" do
|
86
99
|
expect(manifest.for_order(order).items.count).to eq 1
|
87
100
|
end
|
88
101
|
|
89
102
|
it "has single ManifestItem in second order" do
|
90
|
-
expect(manifest.for_order(
|
103
|
+
expect(manifest.for_order(order_2).items.count).to eq 1
|
91
104
|
end
|
92
105
|
end
|
93
106
|
end
|
@@ -22,17 +22,21 @@ RSpec.describe Spree::ShippingMethod, type: :model do
|
|
22
22
|
before { subject.valid? }
|
23
23
|
|
24
24
|
it "validates presence of name" do
|
25
|
-
expect(subject.
|
25
|
+
expect(subject.errors[:name].size).to eq(1)
|
26
26
|
end
|
27
27
|
|
28
28
|
context "shipping category" do
|
29
29
|
it "validates presence of at least one" do
|
30
|
-
expect(subject.
|
30
|
+
expect(subject.errors[:base].size).to eq(1)
|
31
31
|
end
|
32
32
|
|
33
33
|
context "one associated" do
|
34
|
-
before
|
35
|
-
|
34
|
+
before do
|
35
|
+
subject.shipping_categories.push create(:shipping_category)
|
36
|
+
subject.valid?
|
37
|
+
end
|
38
|
+
|
39
|
+
it { expect(subject.errors[:base].size).to eq(0) }
|
36
40
|
end
|
37
41
|
end
|
38
42
|
end
|
@@ -59,7 +63,7 @@ RSpec.describe Spree::ShippingMethod, type: :model do
|
|
59
63
|
context "soft deletion" do
|
60
64
|
let(:shipping_method) { create(:shipping_method) }
|
61
65
|
it "soft-deletes when destroy is called" do
|
62
|
-
shipping_method.
|
66
|
+
shipping_method.discard
|
63
67
|
expect(shipping_method.deleted_at).not_to be_blank
|
64
68
|
end
|
65
69
|
end
|
@@ -51,7 +51,15 @@ module Spree::Stock
|
|
51
51
|
end
|
52
52
|
|
53
53
|
context 'with no stock_item' do
|
54
|
-
before { stock_item.
|
54
|
+
before { stock_item.really_destroy! }
|
55
|
+
|
56
|
+
it "returns empty hash" do
|
57
|
+
expect(subject).to eq({})
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'with soft-deleted stock_item' do
|
62
|
+
before { stock_item.discard }
|
55
63
|
|
56
64
|
it "returns empty hash" do
|
57
65
|
expect(subject).to eq({})
|
@@ -116,8 +124,14 @@ module Spree::Stock
|
|
116
124
|
end
|
117
125
|
end
|
118
126
|
|
127
|
+
context 'with soft-deleted stock_item' do
|
128
|
+
before { stock_item.discard }
|
129
|
+
|
130
|
+
it { is_expected.to eq({}) }
|
131
|
+
end
|
132
|
+
|
119
133
|
context 'with no stock_item' do
|
120
|
-
before { stock_item.
|
134
|
+
before { stock_item.really_destroy! }
|
121
135
|
|
122
136
|
it { is_expected.to eq({}) }
|
123
137
|
end
|
@@ -83,7 +83,7 @@ module Spree
|
|
83
83
|
end
|
84
84
|
|
85
85
|
it "sorts shipping rates by cost" do
|
86
|
-
ShippingMethod.
|
86
|
+
ShippingMethod.all.each(&:really_destroy!)
|
87
87
|
create(:shipping_method, cost: 5)
|
88
88
|
create(:shipping_method, cost: 3)
|
89
89
|
create(:shipping_method, cost: 4)
|
@@ -92,7 +92,7 @@ module Spree
|
|
92
92
|
end
|
93
93
|
|
94
94
|
context "general shipping methods" do
|
95
|
-
before { Spree::ShippingMethod.
|
95
|
+
before { Spree::ShippingMethod.all.each(&:really_destroy!) }
|
96
96
|
|
97
97
|
context 'with two shipping methods of different cost' do
|
98
98
|
let!(:shipping_methods) do
|
@@ -125,7 +125,7 @@ module Spree
|
|
125
125
|
end
|
126
126
|
|
127
127
|
context "involves backend only shipping methods" do
|
128
|
-
before{ Spree::ShippingMethod.
|
128
|
+
before{ Spree::ShippingMethod.all.each(&:really_destroy!) }
|
129
129
|
let!(:backend_method) { create(:shipping_method, available_to_users: false, cost: 0.00) }
|
130
130
|
let!(:generic_method) { create(:shipping_method, cost: 5.00) }
|
131
131
|
|
@@ -189,20 +189,19 @@ module Spree
|
|
189
189
|
end
|
190
190
|
|
191
191
|
it 'uses the configured shipping rate taxer' do
|
192
|
-
class Spree::Tax::
|
193
|
-
def initialize
|
192
|
+
class Spree::Tax::TestTaxCalculator
|
193
|
+
def initialize(_order)
|
194
194
|
end
|
195
195
|
|
196
|
-
def
|
197
|
-
|
196
|
+
def calculate(_shipping_rate)
|
197
|
+
[
|
198
|
+
Spree::Tax::ItemTax.new(label: "TAX", amount: 5)
|
199
|
+
]
|
198
200
|
end
|
199
201
|
end
|
200
|
-
Spree::Config.
|
201
|
-
|
202
|
-
shipping_rate = Spree::ShippingRate.new
|
203
|
-
allow(Spree::ShippingRate).to receive(:new).and_return(shipping_rate)
|
202
|
+
Spree::Config.shipping_rate_tax_calculator_class = Spree::Tax::TestTaxCalculator
|
204
203
|
|
205
|
-
expect(Spree::Tax::
|
204
|
+
expect(Spree::Tax::TestTaxCalculator).to receive(:new).and_call_original
|
206
205
|
subject.shipping_rates(package)
|
207
206
|
end
|
208
207
|
end
|