solidus_core 1.1.4 → 1.2.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 +4 -4
- data/app/assets/images/logo/solidus_logo.png +0 -0
- data/app/helpers/spree/base_helper.rb +2 -3
- data/app/models/concerns/spree/adjustment_source.rb +1 -1
- data/app/models/concerns/spree/default_price.rb +3 -1
- data/app/models/concerns/spree/named_type.rb +1 -1
- data/app/models/concerns/spree/user_methods.rb +10 -0
- data/app/models/spree/adjustment.rb +1 -1
- data/app/models/spree/adjustment_reason.rb +2 -4
- data/app/models/spree/app_configuration.rb +36 -0
- data/app/models/spree/base.rb +10 -1
- data/app/models/spree/calculator/tiered_percent.rb +2 -1
- data/app/models/spree/classification.rb +1 -1
- data/app/models/spree/country.rb +3 -3
- data/app/models/spree/credit_card.rb +2 -2
- data/app/models/spree/customer_return.rb +3 -4
- data/app/models/spree/inventory_unit.rb +13 -24
- data/app/models/spree/item_adjustments.rb +5 -5
- data/app/models/spree/line_item.rb +6 -15
- data/app/models/spree/log_entry.rb +1 -1
- data/app/models/spree/option_type.rb +4 -2
- data/app/models/spree/option_type_prototype.rb +6 -0
- data/app/models/spree/option_value.rb +1 -1
- data/app/models/spree/order.rb +18 -63
- data/app/models/spree/order/checkout.rb +4 -2
- data/app/models/spree/order_cancellations.rb +52 -1
- data/app/models/spree/order_contents.rb +1 -1
- data/app/models/spree/order_merger.rb +143 -0
- data/app/models/spree/order_shipping.rb +3 -3
- data/app/models/spree/order_update_attributes.rb +42 -0
- data/app/models/spree/order_updater.rb +1 -1
- data/app/models/spree/payment.rb +16 -10
- data/app/models/spree/payment_create.rb +68 -0
- data/app/models/spree/payment_method.rb +0 -1
- data/app/models/spree/preference.rb +1 -1
- data/app/models/spree/price.rb +1 -8
- data/app/models/spree/product.rb +9 -44
- data/app/models/spree/product/scopes.rb +9 -7
- data/app/models/spree/promotion/rules/nth_order.rb +1 -1
- data/app/models/spree/promotion/rules/taxon.rb +2 -1
- data/app/models/spree/promotion_chooser.rb +1 -0
- data/app/models/spree/promotion_code.rb +1 -1
- data/app/models/spree/promotion_rule_taxon.rb +6 -0
- data/app/models/spree/property.rb +2 -1
- data/app/models/spree/property_prototype.rb +6 -0
- data/app/models/spree/prototype.rb +6 -2
- data/app/models/spree/reimbursement.rb +10 -0
- data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +1 -1
- data/app/models/spree/return_reason.rb +1 -7
- data/app/models/spree/role_user.rb +3 -5
- data/app/models/spree/shipment.rb +6 -11
- data/app/models/spree/shipping_method.rb +1 -7
- data/app/models/spree/shipping_rate.rb +3 -14
- data/app/models/spree/stock/coordinator.rb +48 -4
- data/app/models/spree/stock/estimator.rb +3 -6
- data/app/models/spree/stock/packer.rb +18 -2
- data/app/models/spree/stock/shipping_rate_selector.rb +16 -0
- data/app/models/spree/stock/shipping_rate_sorter.rb +16 -0
- data/app/models/spree/stock_item.rb +19 -15
- data/app/models/spree/stock_location.rb +2 -12
- data/app/models/spree/stock_transfer.rb +3 -3
- data/app/models/spree/store_credit.rb +2 -2
- data/app/models/spree/tax_category.rb +3 -2
- data/app/models/spree/tax_rate.rb +7 -14
- data/app/models/spree/taxon.rb +4 -1
- data/app/models/spree/taxonomy.rb +1 -1
- data/app/models/spree/transfer_item.rb +2 -2
- data/app/models/spree/unit_cancel.rb +2 -0
- data/app/models/spree/variant.rb +9 -14
- data/app/models/spree/zone.rb +6 -0
- data/app/models/spree/zone_member.rb +1 -4
- data/app/views/spree/order_mailer/cancel_email.text.erb +0 -0
- data/config/locales/en.yml +7 -5
- data/db/default/spree/countries.rb +1 -1
- data/db/default/spree/zones.rb +5 -11
- data/db/migrate/20130213191427_create_default_stock.rb +1 -1
- data/db/migrate/20130306181701_add_address_fields_to_stock_location.rb +1 -1
- data/db/migrate/20140309033438_create_store_from_preferences.rb +5 -2
- data/db/migrate/20141009204607_add_store_id_to_orders.rb +6 -2
- data/db/migrate/20141215235502_remove_extra_products_slug_index.rb +5 -0
- data/db/migrate/20141217215630_update_product_slug_index.rb +6 -0
- data/db/migrate/20150225205344_move_promotion_code_to_promotion_code_value.rb +2 -2
- data/db/migrate/20150609093816_increase_scale_on_pre_tax_amounts.rb +10 -0
- data/db/migrate/20151117063249_convert_habtm_to_hmt_for_properties_prototypes.rb +17 -0
- data/db/migrate/20151124062500_convert_habtm_to_hmt_for_option_type_prototypes.rb +17 -0
- data/db/migrate/20151126063028_convert_habtm_to_hmt_for_taxons_promotion_rules.rb +15 -0
- data/db/migrate/20151219020209_add_stock_item_unique_index.rb +9 -0
- data/lib/generators/spree/dummy/dummy_generator.rb +1 -1
- data/lib/generators/spree/dummy/templates/rails/database.yml +1 -1
- data/lib/generators/spree/install/templates/config/initializers/spree.rb +25 -1
- data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/backend/all.js +3 -0
- data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/frontend/all.js +3 -0
- data/lib/generators/spree/install/templates/vendor/assets/stylesheets/spree/backend/all.css +3 -0
- data/lib/generators/spree/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +3 -0
- data/lib/spree/core/controller_helpers/common.rb +1 -1
- data/lib/spree/core/controller_helpers/order.rb +1 -1
- data/lib/spree/core/controller_helpers/payment_parameters.rb +104 -5
- data/lib/spree/core/engine.rb +3 -2
- data/lib/spree/core/stock_configuration.rb +11 -0
- data/lib/spree/core/unreturned_item_charger.rb +4 -4
- data/lib/spree/core/version.rb +9 -1
- data/lib/spree/permission_sets/restricted_stock_transfer_management.rb +15 -24
- data/lib/spree/permitted_attributes.rb +3 -1
- data/lib/spree/testing_support/capybara_ext.rb +14 -40
- data/lib/spree/testing_support/factories.rb +0 -15
- data/lib/spree/testing_support/factories/address_factory.rb +3 -0
- data/lib/spree/testing_support/factories/adjustment_factory.rb +9 -1
- data/lib/spree/testing_support/factories/carton_factory.rb +4 -1
- data/lib/spree/testing_support/factories/customer_return_factory.rb +4 -0
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +5 -0
- data/lib/spree/testing_support/factories/line_item_factory.rb +3 -0
- data/lib/spree/testing_support/factories/option_type_factory.rb +6 -0
- data/lib/spree/testing_support/factories/{options_factory.rb → option_value_factory.rb} +0 -5
- data/lib/spree/testing_support/factories/order_factory.rb +13 -3
- data/lib/spree/testing_support/factories/order_promotion_factory.rb +3 -0
- data/lib/spree/testing_support/factories/payment_factory.rb +13 -5
- data/lib/spree/testing_support/factories/price_factory.rb +2 -0
- data/lib/spree/testing_support/factories/product_factory.rb +7 -1
- data/lib/spree/testing_support/factories/product_option_type_factory.rb +3 -0
- data/lib/spree/testing_support/factories/product_property_factory.rb +3 -0
- data/lib/spree/testing_support/factories/promotion_code_factory.rb +3 -0
- data/lib/spree/testing_support/factories/promotion_factory.rb +3 -0
- data/lib/spree/testing_support/factories/prototype_factory.rb +2 -0
- data/lib/spree/testing_support/factories/refund_factory.rb +10 -5
- data/lib/spree/testing_support/factories/refund_reason_factory.rb +5 -0
- data/lib/spree/testing_support/factories/reimbursement_factory.rb +2 -0
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +4 -4
- data/lib/spree/testing_support/factories/return_item_factory.rb +4 -0
- data/lib/spree/testing_support/factories/return_reason_factory.rb +5 -0
- data/lib/spree/testing_support/factories/shipment_factory.rb +6 -1
- data/lib/spree/testing_support/factories/shipping_method_factory.rb +22 -10
- data/lib/spree/testing_support/factories/shipping_rate_factory.rb +9 -0
- data/lib/spree/testing_support/factories/state_factory.rb +2 -0
- data/lib/spree/testing_support/factories/stock_item_factory.rb +4 -1
- data/lib/spree/testing_support/factories/stock_location_factory.rb +8 -0
- data/lib/spree/testing_support/factories/stock_movement_factory.rb +2 -0
- data/lib/spree/testing_support/factories/{stock_factory.rb → stock_package_factory.rb} +5 -10
- data/lib/spree/testing_support/factories/stock_packer_factory.rb +13 -0
- data/lib/spree/testing_support/factories/stock_transfer_factory.rb +2 -2
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +4 -1
- data/lib/spree/testing_support/factories/store_credit_factory.rb +10 -6
- data/lib/spree/testing_support/factories/tax_category_factory.rb +2 -0
- data/lib/spree/testing_support/factories/tax_rate_factory.rb +4 -0
- data/lib/spree/testing_support/factories/taxon_factory.rb +2 -0
- data/lib/spree/testing_support/factories/user_factory.rb +6 -2
- data/lib/spree/testing_support/factories/variant_factory.rb +5 -0
- data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +3 -0
- data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +4 -0
- data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +3 -0
- data/lib/spree/testing_support/factories/zone_factory.rb +6 -0
- data/lib/spree/testing_support/sequences.rb +9 -0
- data/lib/tasks/exchanges.rake +4 -3
- data/lib/tasks/migrations/copy_shipped_shipments_to_cartons.rake +2 -2
- data/solidus_core.gemspec +4 -5
- data/spec/helpers/base_helper_spec.rb +6 -6
- data/spec/helpers/order_helper_spec.rb +1 -1
- data/spec/helpers/products_helper_spec.rb +2 -2
- data/spec/helpers/taxons_helper_spec.rb +1 -1
- data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +107 -7
- data/spec/lib/spree/core/importer/order_spec.rb +1 -1
- data/spec/lib/spree/core/stock_configuration_spec.rb +16 -0
- data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +24 -0
- data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +18 -0
- data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +42 -0
- data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +28 -0
- data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +49 -0
- data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +24 -0
- data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +30 -0
- data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +30 -0
- data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +30 -0
- data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/prototype_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +18 -0
- data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +18 -0
- data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +28 -0
- data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +24 -0
- data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +26 -0
- data/spec/lib/spree/core/testing_support/factories/stock_packer_factory_spec.rb +16 -0
- data/spec/lib/spree/core/testing_support/factories/stock_transfer_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +42 -0
- data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +18 -0
- data/spec/lib/spree/core/testing_support/factories/store_credit_update_reason_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/tracker_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +22 -0
- data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +36 -0
- data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +12 -0
- data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +18 -0
- data/spec/lib/spree/core/unreturned_item_charger_spec.rb +1 -1
- data/spec/lib/spree/core/version_spec.rb +17 -0
- data/spec/lib/spree/money_spec.rb +1 -1
- data/spec/mailers/carton_mailer_spec.rb +1 -1
- data/spec/mailers/order_mailer_spec.rb +1 -1
- data/spec/mailers/reimbursement_mailer_spec.rb +1 -3
- data/spec/mailers/test_mailer_spec.rb +1 -3
- data/spec/models/spree/address_spec.rb +4 -4
- data/spec/models/spree/adjustment_reason_spec.rb +1 -3
- data/spec/models/spree/app_configuration_spec.rb +4 -0
- data/spec/models/spree/calculator/price_sack_spec.rb +3 -3
- data/spec/models/spree/calculator/shipping/price_sack_spec.rb +3 -3
- data/spec/models/spree/calculator/tiered_percent_spec.rb +86 -10
- data/spec/models/spree/carton_spec.rb +3 -1
- data/spec/models/spree/classification_spec.rb +3 -3
- data/spec/models/spree/credit_card_spec.rb +16 -16
- data/spec/models/spree/customer_return_spec.rb +1 -1
- data/spec/models/spree/gateway/bogus_simple.rb +1 -1
- data/spec/models/spree/inventory_unit_spec.rb +3 -3
- data/spec/models/spree/item_adjustments_spec.rb +1 -1
- data/spec/models/spree/line_item_spec.rb +2 -2
- data/spec/models/spree/option_type_spec.rb +2 -2
- data/spec/models/spree/option_value_spec.rb +2 -2
- data/spec/models/spree/order/callbacks_spec.rb +1 -1
- data/spec/models/spree/order/checkout_spec.rb +16 -11
- data/spec/models/spree/order/payment_spec.rb +24 -22
- data/spec/models/spree/order/state_machine_spec.rb +1 -1
- data/spec/models/spree/order/validations_spec.rb +1 -1
- data/spec/models/spree/order_cancellations_spec.rb +63 -0
- data/spec/models/spree/order_contents_spec.rb +1 -1
- data/spec/models/spree/order_merger_spec.rb +133 -0
- data/spec/models/spree/order_spec.rb +39 -159
- data/spec/models/spree/order_update_attributes_spec.rb +82 -0
- data/spec/models/spree/order_updater_spec.rb +6 -4
- data/spec/models/spree/payment_create_spec.rb +131 -0
- data/spec/models/spree/payment_spec.rb +130 -48
- data/spec/models/spree/permission_sets/restricted_stock_transfer_management_spec.rb +91 -33
- data/spec/models/spree/product_filter_spec.rb +3 -3
- data/spec/models/spree/product_spec.rb +80 -26
- data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +1 -1
- data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +2 -2
- data/spec/models/spree/promotion/rules/nth_order_spec.rb +1 -1
- data/spec/models/spree/promotion/rules/user_spec.rb +2 -2
- data/spec/models/spree/promotion_handler/coupon_spec.rb +2 -2
- data/spec/models/spree/promotion_spec.rb +18 -18
- data/spec/models/spree/reimbursement_spec.rb +22 -0
- data/spec/models/spree/return_item_spec.rb +2 -2
- data/spec/models/spree/shipment_spec.rb +28 -12
- data/spec/models/spree/shipping_method_spec.rb +2 -2
- data/spec/models/spree/shipping_rate_spec.rb +3 -3
- data/spec/models/spree/stock/coordinator_spec.rb +5 -0
- data/spec/models/spree/stock/estimator_spec.rb +35 -1
- data/spec/models/spree/stock/package_spec.rb +1 -1
- data/spec/models/spree/stock/packer_spec.rb +2 -3
- data/spec/models/spree/stock/shipping_rate_selector_spec.rb +16 -0
- data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +16 -0
- data/spec/models/spree/stock_item_spec.rb +5 -7
- data/spec/models/spree/stock_location_spec.rb +5 -9
- data/spec/models/spree/stock_transfer_spec.rb +33 -13
- data/spec/models/spree/store_credit_event_spec.rb +1 -1
- data/spec/models/spree/store_credit_spec.rb +1 -1
- data/spec/models/spree/tax_rate_spec.rb +381 -120
- data/spec/models/spree/taxon_spec.rb +3 -3
- data/spec/models/spree/transfer_item_spec.rb +4 -4
- data/spec/models/spree/unit_cancel_spec.rb +1 -1
- data/spec/models/spree/variant_spec.rb +3 -3
- data/spec/models/spree/zone_spec.rb +35 -1
- data/spec/support/concerns/working_factories.rb +9 -0
- data/vendor/assets/javascripts/jquery-migrate-1.0.0.js +498 -0
- data/vendor/assets/javascripts/jquery.payment.js +231 -80
- metadata +103 -27
- data/app/models/spree/order/currency_updater.rb +0 -40
- data/spec/models/spree/order/currency_updater_spec.rb +0 -32
|
@@ -8,7 +8,7 @@ describe Spree::OptionType, :type => :model do
|
|
|
8
8
|
product = product_option_type.product
|
|
9
9
|
product.update_column(:updated_at, 1.day.ago)
|
|
10
10
|
option_type.touch
|
|
11
|
-
expect(product.reload.updated_at).to be_within(3.seconds).of(Time.
|
|
11
|
+
expect(product.reload.updated_at).to be_within(3.seconds).of(Time.current)
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
|
-
end
|
|
14
|
+
end
|
|
@@ -12,7 +12,7 @@ describe Spree::OptionValue, :type => :model do
|
|
|
12
12
|
it "should touch a variant" do
|
|
13
13
|
Timecop.freeze do
|
|
14
14
|
option_value.touch
|
|
15
|
-
expect(variant.reload.updated_at).to be_within(1.second).of(Time.
|
|
15
|
+
expect(variant.reload.updated_at).to be_within(1.second).of(Time.current)
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
18
|
|
|
@@ -28,7 +28,7 @@ describe Spree::OptionValue, :type => :model do
|
|
|
28
28
|
Timecop.freeze do
|
|
29
29
|
option_value.name += "--1"
|
|
30
30
|
option_value.save!
|
|
31
|
-
expect(variant.reload.updated_at).to be_within(1.second).of(Time.
|
|
31
|
+
expect(variant.reload.updated_at).to be_within(1.second).of(Time.current)
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
34
|
end
|
|
@@ -8,7 +8,7 @@ describe Spree::Order, :type => :model do
|
|
|
8
8
|
|
|
9
9
|
context "validations" do
|
|
10
10
|
context "email validation" do
|
|
11
|
-
# Regression test for
|
|
11
|
+
# Regression test for https://github.com/spree/spree/issues/1238
|
|
12
12
|
it "o'brien@gmail.com is a valid email address" do
|
|
13
13
|
order.state = 'address'
|
|
14
14
|
order.email = "o'brien@gmail.com"
|
|
@@ -118,7 +118,7 @@ describe Spree::Order, :type => :model do
|
|
|
118
118
|
|
|
119
119
|
it "doesn't raise an error if the default address is invalid" do
|
|
120
120
|
order.user = mock_model(Spree::LegacyUser, ship_address: Spree::Address.new, bill_address: Spree::Address.new)
|
|
121
|
-
|
|
121
|
+
order.next!
|
|
122
122
|
end
|
|
123
123
|
|
|
124
124
|
context "with default addresses" do
|
|
@@ -417,7 +417,7 @@ describe Spree::Order, :type => :model do
|
|
|
417
417
|
end
|
|
418
418
|
end
|
|
419
419
|
|
|
420
|
-
# Regression test for
|
|
420
|
+
# Regression test for https://github.com/spree/spree/issues/2028
|
|
421
421
|
context "when payment is not required" do
|
|
422
422
|
before do
|
|
423
423
|
allow(order).to receive_messages :payment_required? => false
|
|
@@ -675,7 +675,7 @@ describe Spree::Order, :type => :model do
|
|
|
675
675
|
end
|
|
676
676
|
end
|
|
677
677
|
|
|
678
|
-
# Regression test for
|
|
678
|
+
# Regression test for https://github.com/spree/spree/issues/3665
|
|
679
679
|
context "with only a complete step" do
|
|
680
680
|
let!(:line_item){ create :line_item, order: order }
|
|
681
681
|
|
|
@@ -782,12 +782,18 @@ describe Spree::Order, :type => :model do
|
|
|
782
782
|
end
|
|
783
783
|
|
|
784
784
|
describe 'update_from_params' do
|
|
785
|
+
let(:order) { create(:order) }
|
|
785
786
|
let(:permitted_params) { {} }
|
|
786
787
|
let(:params) { {} }
|
|
787
788
|
|
|
789
|
+
around do |example|
|
|
790
|
+
ActiveSupport::Deprecation.silence { example.run }
|
|
791
|
+
end
|
|
792
|
+
|
|
788
793
|
it 'calls update_atributes without order params' do
|
|
789
|
-
expect
|
|
790
|
-
|
|
794
|
+
expect {
|
|
795
|
+
order.update_from_params( params, permitted_params)
|
|
796
|
+
}.not_to change{order.attributes}
|
|
791
797
|
end
|
|
792
798
|
|
|
793
799
|
it 'runs the callbacks' do
|
|
@@ -837,10 +843,8 @@ describe Spree::Order, :type => :model do
|
|
|
837
843
|
it "sets request_env on payment" do
|
|
838
844
|
request_env = { "USER_AGENT" => "Firefox" }
|
|
839
845
|
|
|
840
|
-
expected_hash = { "payments_attributes" => [hash_including("request_env" => request_env)] }
|
|
841
|
-
expect(order).to receive(:update_attributes).with expected_hash
|
|
842
|
-
|
|
843
846
|
order.update_from_params(params, permitted_params, request_env)
|
|
847
|
+
expect(order.payments[0].request_env).to eq request_env
|
|
844
848
|
end
|
|
845
849
|
|
|
846
850
|
it "dont let users mess with others users cards" do
|
|
@@ -857,7 +861,7 @@ describe Spree::Order, :type => :model do
|
|
|
857
861
|
let(:params) { ActionController::Parameters.new(order: { bad_param: 'okay' } ) }
|
|
858
862
|
|
|
859
863
|
it 'does not let through unpermitted attributes' do
|
|
860
|
-
expect(order).to receive(:
|
|
864
|
+
expect(order).to receive(:assign_attributes).with({})
|
|
861
865
|
order.update_from_params(params, permitted_params)
|
|
862
866
|
end
|
|
863
867
|
|
|
@@ -865,7 +869,7 @@ describe Spree::Order, :type => :model do
|
|
|
865
869
|
let(:params) { ActionController::Parameters.new(order: { good_param: 'okay' } ) }
|
|
866
870
|
|
|
867
871
|
it 'accepts permitted attributes' do
|
|
868
|
-
expect(order).to receive(:
|
|
872
|
+
expect(order).to receive(:assign_attributes).with({"good_param" => 'okay'})
|
|
869
873
|
order.update_from_params(params, permitted_params)
|
|
870
874
|
end
|
|
871
875
|
end
|
|
@@ -875,7 +879,8 @@ describe Spree::Order, :type => :model do
|
|
|
875
879
|
expect(order).to receive(:update_params_payment_source).and_return false
|
|
876
880
|
end
|
|
877
881
|
it 'does not let through unpermitted attributes' do
|
|
878
|
-
expect(order).not_to receive(:
|
|
882
|
+
expect(order).not_to receive(:assign_attributes)
|
|
883
|
+
expect(order).not_to receive(:save)
|
|
879
884
|
order.update_from_params(params, permitted_params)
|
|
880
885
|
end
|
|
881
886
|
end
|
|
@@ -68,30 +68,32 @@ module Spree
|
|
|
68
68
|
end
|
|
69
69
|
|
|
70
70
|
context "ensure source attributes stick around" do
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
:payment_method_id => credit_card_payment_method.id,
|
|
83
|
-
:source_attributes => {
|
|
84
|
-
:name => "Ryan Bigg",
|
|
85
|
-
:number => "41111111111111111111",
|
|
86
|
-
:expiry => "01 / 15",
|
|
87
|
-
:verification_value => "123"
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
]
|
|
71
|
+
let(:order){ Spree::Order.create }
|
|
72
|
+
let(:payment_method){ create(:credit_card_payment_method) }
|
|
73
|
+
let(:payment_attributes) do
|
|
74
|
+
{
|
|
75
|
+
:payment_method_id => payment_method.id,
|
|
76
|
+
:source_attributes => {
|
|
77
|
+
:name => "Ryan Bigg",
|
|
78
|
+
:number => "41111111111111111111",
|
|
79
|
+
:expiry => "01 / 15",
|
|
80
|
+
:verification_value => "123"
|
|
81
|
+
}
|
|
91
82
|
}
|
|
83
|
+
end
|
|
92
84
|
|
|
93
|
-
|
|
94
|
-
|
|
85
|
+
# For the reason of this test, please see spree/spree_gateway#132
|
|
86
|
+
it "keeps source attributes on assignment" do
|
|
87
|
+
ActiveSupport::Deprecation.silence do
|
|
88
|
+
order.update_attributes(payments_attributes: [payment_attributes])
|
|
89
|
+
end
|
|
90
|
+
expect(order.unprocessed_payments.last.source.number).to be_present
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# For the reason of this test, please see spree/spree_gateway#132
|
|
94
|
+
it "keeps source attributes through OrderUpdateAttributes" do
|
|
95
|
+
OrderUpdateAttributes.new(order, payments_attributes: [payment_attributes]).apply
|
|
96
|
+
expect(order.unprocessed_payments.last.source.number).to be_present
|
|
95
97
|
end
|
|
96
98
|
end
|
|
97
99
|
|
|
@@ -198,7 +198,7 @@ describe Spree::Order, :type => :model do
|
|
|
198
198
|
end
|
|
199
199
|
|
|
200
200
|
|
|
201
|
-
# Another regression test for
|
|
201
|
+
# Another regression test for https://github.com/spree/spree/issues/729
|
|
202
202
|
context "#resume" do
|
|
203
203
|
before do
|
|
204
204
|
allow(order).to receive_messages email: "user@spreecommerce.com"
|
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
|
3
3
|
module Spree
|
|
4
4
|
describe Spree::Order, :type => :model do
|
|
5
5
|
context "validations" do
|
|
6
|
-
# Regression test for
|
|
6
|
+
# Regression test for https://github.com/spree/spree/issues/2214
|
|
7
7
|
it "does not return two error messages when email is blank" do
|
|
8
8
|
order = Spree::Order.new
|
|
9
9
|
allow(order).to receive_messages(:require_email => true)
|
|
@@ -1,6 +1,69 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe Spree::OrderCancellations do
|
|
4
|
+
describe "#cancel_unit" do
|
|
5
|
+
subject { Spree::OrderCancellations.new(order).cancel_unit(inventory_unit) }
|
|
6
|
+
let(:order) { create(:shipped_order, line_items_count: 1) }
|
|
7
|
+
let(:inventory_unit) { order.inventory_units.first }
|
|
8
|
+
|
|
9
|
+
it "creates a UnitCancel record" do
|
|
10
|
+
expect { subject }.to change { Spree::UnitCancel.count }.by(1)
|
|
11
|
+
expect(subject.inventory_unit).to eq inventory_unit
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "cancels the inventory unit" do
|
|
15
|
+
expect { subject }.to change { inventory_unit.state }.to "canceled"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
context "when a reason is specified" do
|
|
19
|
+
subject { order.cancellations.cancel_unit(inventory_unit, reason: "some reason") }
|
|
20
|
+
|
|
21
|
+
it "sets the reason on the UnitCancel" do
|
|
22
|
+
expect(subject.reason).to eq("some reason")
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
context "when a reason is not specified" do
|
|
27
|
+
it "sets a default reason on the UnitCancel" do
|
|
28
|
+
expect(subject.reason).to eq Spree::UnitCancel::DEFAULT_REASON
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
context "when a whodunnit is specified" do
|
|
33
|
+
subject { order.cancellations.cancel_unit(inventory_unit, whodunnit: "some automated system") }
|
|
34
|
+
|
|
35
|
+
it "sets the user on the UnitCancel" do
|
|
36
|
+
expect(subject.created_by).to eq("some automated system")
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
context "when a whodunnit is not specified" do
|
|
41
|
+
it "does not set created_by on the UnitCancel" do
|
|
42
|
+
expect(subject.created_by).to be_nil
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
describe "#reimburse_units" do
|
|
48
|
+
subject { Spree::OrderCancellations.new(order).reimburse_units(inventory_units) }
|
|
49
|
+
let(:order) { create(:shipped_order, line_items_count: 2) }
|
|
50
|
+
let(:inventory_units) { order.inventory_units }
|
|
51
|
+
let!(:default_refund_reason) { Spree::RefundReason.find_or_create_by!(name: Spree::RefundReason::RETURN_PROCESSING_REASON, mutable: false) }
|
|
52
|
+
|
|
53
|
+
it "creates and performs a reimbursement" do
|
|
54
|
+
expect { subject }.to change { Spree::Reimbursement.count }.by(1)
|
|
55
|
+
expect(subject.refunds.size).to eq 1
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "creates return items for the inventory units and accepts them" do
|
|
59
|
+
expect { subject }.to change { Spree::ReturnItem.count }.by(inventory_units.count)
|
|
60
|
+
|
|
61
|
+
return_items = subject.return_items
|
|
62
|
+
expect(return_items.map(&:acceptance_status)).to all eq "accepted"
|
|
63
|
+
expect(return_items.map(&:inventory_unit)).to match_array(inventory_units)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
4
67
|
describe "#short_ship" do
|
|
5
68
|
subject { Spree::OrderCancellations.new(order).short_ship([inventory_unit]) }
|
|
6
69
|
|
|
@@ -245,7 +245,7 @@ describe Spree::OrderContents, :type => :model do
|
|
|
245
245
|
end
|
|
246
246
|
|
|
247
247
|
context "completed order" do
|
|
248
|
-
let(:order) { Spree::Order.create! state: 'complete', completed_at: Time.
|
|
248
|
+
let(:order) { Spree::Order.create! state: 'complete', completed_at: Time.current }
|
|
249
249
|
|
|
250
250
|
before { order.shipments.create! stock_location_id: variant.stock_location_ids.first }
|
|
251
251
|
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
# Regression tests for https://github.com/spree/spree/issues/2179
|
|
4
|
+
module Spree
|
|
5
|
+
describe OrderMerger, type: :model do
|
|
6
|
+
let(:variant) { create(:variant) }
|
|
7
|
+
let(:order_1) { Spree::Order.create }
|
|
8
|
+
let(:order_2) { Spree::Order.create }
|
|
9
|
+
let(:user) { stub_model(Spree::LegacyUser, email: "spree@example.com") }
|
|
10
|
+
let(:subject) { Spree::OrderMerger.new(order_1) }
|
|
11
|
+
|
|
12
|
+
it "destroys the other order" do
|
|
13
|
+
subject.merge!(order_2)
|
|
14
|
+
expect { order_2.reload }.to raise_error(ActiveRecord::RecordNotFound)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "persist the merge" do
|
|
18
|
+
expect(subject).to receive(:persist_merge)
|
|
19
|
+
subject.merge!(order_2)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
context "user is provided" do
|
|
23
|
+
it "assigns user to new order" do
|
|
24
|
+
subject.merge!(order_2, user)
|
|
25
|
+
expect(order_1.user).to eq user
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
context "merging together two orders with line items for the same variant" do
|
|
30
|
+
before do
|
|
31
|
+
order_1.contents.add(variant, 1)
|
|
32
|
+
order_2.contents.add(variant, 1)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
specify do
|
|
36
|
+
subject.merge!(order_2, user)
|
|
37
|
+
expect(order_1.line_items.count).to eq(1)
|
|
38
|
+
|
|
39
|
+
line_item = order_1.line_items.first
|
|
40
|
+
expect(line_item.quantity).to eq(2)
|
|
41
|
+
expect(line_item.variant_id).to eq(variant.id)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
context "merging using extension-specific line_item_comparison_hooks" do
|
|
46
|
+
before do
|
|
47
|
+
Spree::Order.register_line_item_comparison_hook(:foos_match)
|
|
48
|
+
allow(Spree::Variant).to receive(:price_modifier_amount).and_return(0.00)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
after do
|
|
52
|
+
# reset to avoid test pollution
|
|
53
|
+
Spree::Order.line_item_comparison_hooks = Set.new
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
context "2 equal line items" do
|
|
57
|
+
before do
|
|
58
|
+
@line_item_1 = order_1.contents.add(variant, 1, foos: {})
|
|
59
|
+
@line_item_2 = order_2.contents.add(variant, 1, foos: {})
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
specify do
|
|
63
|
+
expect(order_1).to receive(:foos_match).with(@line_item_1, kind_of(Hash)).and_return(true)
|
|
64
|
+
subject.merge!(order_2)
|
|
65
|
+
expect(order_1.line_items.count).to eq(1)
|
|
66
|
+
|
|
67
|
+
line_item = order_1.line_items.first
|
|
68
|
+
expect(line_item.quantity).to eq(2)
|
|
69
|
+
expect(line_item.variant_id).to eq(variant.id)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
context "2 different line items" do
|
|
74
|
+
before do
|
|
75
|
+
allow(order_1).to receive(:foos_match).and_return(false)
|
|
76
|
+
|
|
77
|
+
order_1.contents.add(variant, 1, foos: {})
|
|
78
|
+
order_2.contents.add(variant, 1, foos: { bar: :zoo })
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
specify do
|
|
82
|
+
subject.merge!(order_2)
|
|
83
|
+
expect(order_1.line_items.count).to eq(2)
|
|
84
|
+
|
|
85
|
+
line_item = order_1.line_items.first
|
|
86
|
+
expect(line_item.quantity).to eq(1)
|
|
87
|
+
expect(line_item.variant_id).to eq(variant.id)
|
|
88
|
+
|
|
89
|
+
line_item = order_1.line_items.last
|
|
90
|
+
expect(line_item.quantity).to eq(1)
|
|
91
|
+
expect(line_item.variant_id).to eq(variant.id)
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
context "merging together two orders with different line items" do
|
|
97
|
+
let(:variant_2) { create(:variant) }
|
|
98
|
+
|
|
99
|
+
before do
|
|
100
|
+
order_1.contents.add(variant, 1)
|
|
101
|
+
order_2.contents.add(variant_2, 1)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
specify do
|
|
105
|
+
subject.merge!(order_2)
|
|
106
|
+
line_items = order_1.line_items.reload
|
|
107
|
+
expect(line_items.count).to eq(2)
|
|
108
|
+
|
|
109
|
+
expect(order_1.item_count).to eq 2
|
|
110
|
+
expect(order_1.item_total).to eq line_items.map(&:amount).sum
|
|
111
|
+
|
|
112
|
+
# No guarantee on ordering of line items, so we do this:
|
|
113
|
+
expect(line_items.pluck(:quantity)).to match_array([1, 1])
|
|
114
|
+
expect(line_items.pluck(:variant_id)).to match_array([variant.id, variant_2.id])
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
context "merging together orders with invalid line items" do
|
|
119
|
+
let(:variant_2) { create(:variant) }
|
|
120
|
+
|
|
121
|
+
before do
|
|
122
|
+
order_1.contents.add(variant, 1)
|
|
123
|
+
order_2.contents.add(variant_2, 1)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
it "should create errors with invalid line items" do
|
|
127
|
+
variant_2.really_destroy!
|
|
128
|
+
subject.merge!(order_2)
|
|
129
|
+
expect(order_1.errors.full_messages).not_to be_empty
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|
|
@@ -197,111 +197,37 @@ describe Spree::Order, :type => :model do
|
|
|
197
197
|
end
|
|
198
198
|
end
|
|
199
199
|
|
|
200
|
-
#
|
|
201
|
-
|
|
202
|
-
let(:
|
|
203
|
-
let(:order_1) { Spree::Order.create }
|
|
204
|
-
let(:order_2) { Spree::Order.create }
|
|
200
|
+
describe '#merge!' do
|
|
201
|
+
let(:order1) { create(:order_with_line_items) }
|
|
202
|
+
let(:order2) { create(:order_with_line_items) }
|
|
205
203
|
|
|
206
|
-
it
|
|
207
|
-
|
|
208
|
-
expect
|
|
204
|
+
it 'merges the orders' do
|
|
205
|
+
order1.merge!(order2)
|
|
206
|
+
expect(order1.line_items.count).to eq(2)
|
|
207
|
+
expect(order2.destroyed?).to be_truthy
|
|
209
208
|
end
|
|
210
209
|
|
|
211
|
-
|
|
212
|
-
it "assigns user to new order" do
|
|
213
|
-
order_1.merge!(order_2, user)
|
|
214
|
-
expect(order_1.user).to eq user
|
|
215
|
-
end
|
|
216
|
-
end
|
|
217
|
-
|
|
218
|
-
context "merging together two orders with line items for the same variant" do
|
|
219
|
-
before do
|
|
220
|
-
order_1.contents.add(variant, 1)
|
|
221
|
-
order_2.contents.add(variant, 1)
|
|
222
|
-
end
|
|
223
|
-
|
|
224
|
-
specify do
|
|
225
|
-
order_1.merge!(order_2)
|
|
226
|
-
expect(order_1.line_items.count).to eq(1)
|
|
227
|
-
|
|
228
|
-
line_item = order_1.line_items.first
|
|
229
|
-
expect(line_item.quantity).to eq(2)
|
|
230
|
-
expect(line_item.variant_id).to eq(variant.id)
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
end
|
|
234
|
-
|
|
235
|
-
context "merging using extension-specific line_item_comparison_hooks" do
|
|
210
|
+
describe 'order_merger_class customization' do
|
|
236
211
|
before do
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
end
|
|
245
|
-
|
|
246
|
-
context "2 equal line items" do
|
|
247
|
-
before do
|
|
248
|
-
@line_item_1 = order_1.contents.add(variant, 1, {foos: {}})
|
|
249
|
-
@line_item_2 = order_2.contents.add(variant, 1, {foos: {}})
|
|
250
|
-
end
|
|
251
|
-
|
|
252
|
-
specify do
|
|
253
|
-
expect(order_1).to receive(:foos_match).with(@line_item_1, kind_of(Hash)).and_return(true)
|
|
254
|
-
order_1.merge!(order_2)
|
|
255
|
-
expect(order_1.line_items.count).to eq(1)
|
|
256
|
-
|
|
257
|
-
line_item = order_1.line_items.first
|
|
258
|
-
expect(line_item.quantity).to eq(2)
|
|
259
|
-
expect(line_item.variant_id).to eq(variant.id)
|
|
260
|
-
end
|
|
261
|
-
end
|
|
262
|
-
|
|
263
|
-
context "2 different line items" do
|
|
264
|
-
before do
|
|
265
|
-
allow(order_1).to receive(:foos_match).and_return(false)
|
|
266
|
-
|
|
267
|
-
order_1.contents.add(variant, 1, {foos: {}})
|
|
268
|
-
order_2.contents.add(variant, 1, {foos: {bar: :zoo}})
|
|
269
|
-
end
|
|
270
|
-
|
|
271
|
-
specify do
|
|
272
|
-
order_1.merge!(order_2)
|
|
273
|
-
expect(order_1.line_items.count).to eq(2)
|
|
274
|
-
|
|
275
|
-
line_item = order_1.line_items.first
|
|
276
|
-
expect(line_item.quantity).to eq(1)
|
|
277
|
-
expect(line_item.variant_id).to eq(variant.id)
|
|
278
|
-
|
|
279
|
-
line_item = order_1.line_items.last
|
|
280
|
-
expect(line_item.quantity).to eq(1)
|
|
281
|
-
expect(line_item.variant_id).to eq(variant.id)
|
|
212
|
+
class TestOrderMerger
|
|
213
|
+
def initialize(order)
|
|
214
|
+
@order = order
|
|
215
|
+
end
|
|
216
|
+
def merge!(other_order, user = nil)
|
|
217
|
+
[@order, other_order, user]
|
|
218
|
+
end
|
|
282
219
|
end
|
|
220
|
+
Spree::Config.order_merger_class = TestOrderMerger
|
|
283
221
|
end
|
|
284
|
-
end
|
|
285
222
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
before do
|
|
290
|
-
order_1.contents.add(variant, 1)
|
|
291
|
-
order_2.contents.add(variant_2, 1)
|
|
223
|
+
after do
|
|
224
|
+
Spree::Config.order_merger_class = Spree::PromotionChooser
|
|
292
225
|
end
|
|
293
226
|
|
|
294
|
-
|
|
295
|
-
order_1.merge!(order_2)
|
|
296
|
-
line_items = order_1.line_items.reload
|
|
297
|
-
expect(line_items.count).to eq(2)
|
|
227
|
+
let(:user) { build(:user) }
|
|
298
228
|
|
|
299
|
-
|
|
300
|
-
expect(
|
|
301
|
-
|
|
302
|
-
# No guarantee on ordering of line items, so we do this:
|
|
303
|
-
expect(line_items.pluck(:quantity)).to match_array([1, 1])
|
|
304
|
-
expect(line_items.pluck(:variant_id)).to match_array([variant.id, variant_2.id])
|
|
229
|
+
it 'uses the configured order merger' do
|
|
230
|
+
expect(order1.merge!(order2, user)).to eq([order1, order2, user])
|
|
305
231
|
end
|
|
306
232
|
end
|
|
307
233
|
end
|
|
@@ -399,7 +325,7 @@ describe Spree::Order, :type => :model do
|
|
|
399
325
|
context 'when the order is completed' do
|
|
400
326
|
before do
|
|
401
327
|
order.state = 'complete'
|
|
402
|
-
order.completed_at = Time.
|
|
328
|
+
order.completed_at = Time.current
|
|
403
329
|
order.update_column(:shipment_total, 5)
|
|
404
330
|
order.shipments.create!
|
|
405
331
|
end
|
|
@@ -488,7 +414,7 @@ describe Spree::Order, :type => :model do
|
|
|
488
414
|
end
|
|
489
415
|
end
|
|
490
416
|
|
|
491
|
-
# Regression tests for
|
|
417
|
+
# Regression tests for https://github.com/spree/spree/issues/4072
|
|
492
418
|
context "#state_changed" do
|
|
493
419
|
let(:order) { FactoryGirl.create(:order) }
|
|
494
420
|
|
|
@@ -510,7 +436,7 @@ describe Spree::Order, :type => :model do
|
|
|
510
436
|
end
|
|
511
437
|
end
|
|
512
438
|
|
|
513
|
-
# Regression test for
|
|
439
|
+
# Regression test for https://github.com/spree/spree/issues/4199
|
|
514
440
|
context "#available_payment_methods" do
|
|
515
441
|
it "includes frontend payment methods" do
|
|
516
442
|
payment_method = Spree::PaymentMethod.create!({
|
|
@@ -765,7 +691,7 @@ describe Spree::Order, :type => :model do
|
|
|
765
691
|
order.completed_at = nil
|
|
766
692
|
expect(order.completed?).to be false
|
|
767
693
|
|
|
768
|
-
order.completed_at = Time.
|
|
694
|
+
order.completed_at = Time.current
|
|
769
695
|
expect(order.completed?).to be true
|
|
770
696
|
end
|
|
771
697
|
end
|
|
@@ -804,14 +730,14 @@ describe Spree::Order, :type => :model do
|
|
|
804
730
|
it "should be false for completed order in the canceled state" do
|
|
805
731
|
order.state = 'canceled'
|
|
806
732
|
order.shipment_state = 'ready'
|
|
807
|
-
order.completed_at = Time.
|
|
733
|
+
order.completed_at = Time.current
|
|
808
734
|
expect(order.can_cancel?).to be false
|
|
809
735
|
end
|
|
810
736
|
|
|
811
737
|
it "should be true for completed order with no shipment" do
|
|
812
738
|
order.state = 'complete'
|
|
813
739
|
order.shipment_state = nil
|
|
814
|
-
order.completed_at = Time.
|
|
740
|
+
order.completed_at = Time.current
|
|
815
741
|
expect(order.can_cancel?).to be true
|
|
816
742
|
end
|
|
817
743
|
end
|
|
@@ -824,12 +750,12 @@ describe Spree::Order, :type => :model do
|
|
|
824
750
|
end
|
|
825
751
|
end
|
|
826
752
|
|
|
827
|
-
# Regression test for
|
|
753
|
+
# Regression test for https://github.com/spree/spree/issues/4923
|
|
828
754
|
context "locking" do
|
|
829
755
|
let(:order) { Spree::Order.create } # need a persisted in order to test locking
|
|
830
756
|
|
|
831
757
|
it 'can lock' do
|
|
832
|
-
|
|
758
|
+
order.with_lock {}
|
|
833
759
|
end
|
|
834
760
|
end
|
|
835
761
|
|
|
@@ -846,11 +772,11 @@ describe Spree::Order, :type => :model do
|
|
|
846
772
|
|
|
847
773
|
context "#refund_total" do
|
|
848
774
|
let(:order) { create(:order_with_line_items) }
|
|
849
|
-
let!(:payment) { create(:payment_with_refund, order: order) }
|
|
850
|
-
let!(:payment2) { create(:payment_with_refund, order: order) }
|
|
775
|
+
let!(:payment) { create(:payment_with_refund, order: order, amount: 5, refund_amount: 3) }
|
|
776
|
+
let!(:payment2) { create(:payment_with_refund, order: order, amount: 5, refund_amount: 2.5) }
|
|
851
777
|
|
|
852
778
|
it "sums the reimbursment refunds on the order" do
|
|
853
|
-
expect(order.refund_total).to eq(
|
|
779
|
+
expect(order.refund_total).to eq(5.5)
|
|
854
780
|
end
|
|
855
781
|
end
|
|
856
782
|
|
|
@@ -894,7 +820,7 @@ describe Spree::Order, :type => :model do
|
|
|
894
820
|
|
|
895
821
|
context 'a reimbursement related refund exists' do
|
|
896
822
|
let(:order) { refund.payment.order }
|
|
897
|
-
let(:refund) { create(:refund, reimbursement_id: 123, amount: 5)}
|
|
823
|
+
let(:refund) { create(:refund, reimbursement_id: 123, amount: 5, payment_amount: 14)}
|
|
898
824
|
|
|
899
825
|
it { is_expected.to eq false }
|
|
900
826
|
end
|
|
@@ -1027,6 +953,12 @@ describe Spree::Order, :type => :model do
|
|
|
1027
953
|
let(:shipment) { Spree::Shipment.new(cost: 10) }
|
|
1028
954
|
let(:payment) { Spree::Payment.new(amount: 10) }
|
|
1029
955
|
|
|
956
|
+
around do |example|
|
|
957
|
+
ActiveSupport::Deprecation.silence do
|
|
958
|
+
example.run
|
|
959
|
+
end
|
|
960
|
+
end
|
|
961
|
+
|
|
1030
962
|
before do
|
|
1031
963
|
allow(order).to receive(:line_items) { [line_item] }
|
|
1032
964
|
allow(order).to receive(:shipments) { [shipment] }
|
|
@@ -1479,56 +1411,4 @@ describe Spree::Order, :type => :model do
|
|
|
1479
1411
|
end
|
|
1480
1412
|
end
|
|
1481
1413
|
end
|
|
1482
|
-
|
|
1483
|
-
describe "#validate_payments_attributes" do
|
|
1484
|
-
let(:attributes) { [ActionController::Parameters.new(payment_method_id: payment_method.id)] }
|
|
1485
|
-
subject do
|
|
1486
|
-
order.validate_payments_attributes(attributes)
|
|
1487
|
-
end
|
|
1488
|
-
|
|
1489
|
-
context "with empty array" do
|
|
1490
|
-
let(:attributes) { [] }
|
|
1491
|
-
it "doesn't error" do
|
|
1492
|
-
subject
|
|
1493
|
-
end
|
|
1494
|
-
end
|
|
1495
|
-
|
|
1496
|
-
context "with no payment method specified" do
|
|
1497
|
-
let(:attributes) { [ActionController::Parameters.new({})] }
|
|
1498
|
-
it "doesn't error" do
|
|
1499
|
-
subject
|
|
1500
|
-
end
|
|
1501
|
-
end
|
|
1502
|
-
|
|
1503
|
-
context "with valid payment method" do
|
|
1504
|
-
let(:payment_method) { create(:check_payment_method) }
|
|
1505
|
-
it "doesn't error" do
|
|
1506
|
-
subject
|
|
1507
|
-
end
|
|
1508
|
-
end
|
|
1509
|
-
|
|
1510
|
-
context "with inactive payment method" do
|
|
1511
|
-
let(:payment_method) { create(:check_payment_method, active: false) }
|
|
1512
|
-
|
|
1513
|
-
it "raises RecordNotFound" do
|
|
1514
|
-
expect { subject }.to raise_error(ActiveRecord::RecordNotFound)
|
|
1515
|
-
end
|
|
1516
|
-
end
|
|
1517
|
-
|
|
1518
|
-
context "with unavailable payment method" do
|
|
1519
|
-
let(:payment_method) { create(:check_payment_method, display_on: "back_end") }
|
|
1520
|
-
|
|
1521
|
-
it "raises RecordNotFound" do
|
|
1522
|
-
expect { subject }.to raise_error(ActiveRecord::RecordNotFound)
|
|
1523
|
-
end
|
|
1524
|
-
end
|
|
1525
|
-
|
|
1526
|
-
context "with soft-deleted payment method" do
|
|
1527
|
-
let(:payment_method) { create(:check_payment_method, deleted_at: Time.current) }
|
|
1528
|
-
|
|
1529
|
-
it "raises RecordNotFound" do
|
|
1530
|
-
expect { subject }.to raise_error(ActiveRecord::RecordNotFound)
|
|
1531
|
-
end
|
|
1532
|
-
end
|
|
1533
|
-
end
|
|
1534
1414
|
end
|