solidus_core 1.2.3 → 1.3.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 +4 -4
- data/Gemfile +1 -1
- data/Rakefile +1 -1
- data/app/assets/javascripts/spree.js.coffee.erb +1 -1
- data/app/helpers/spree/base_helper.rb +21 -43
- data/app/helpers/spree/orders_helper.rb +0 -1
- data/app/helpers/spree/products_helper.rb +10 -12
- data/app/helpers/spree/taxons_helper.rb +4 -4
- data/app/mailers/spree/base_mailer.rb +1 -3
- data/app/mailers/spree/carton_mailer.rb +2 -2
- data/app/mailers/spree/order_mailer.rb +2 -2
- data/app/models/concerns/spree/adjustment_source.rb +12 -16
- data/app/models/concerns/spree/calculated_adjustments.rb +17 -14
- data/app/models/concerns/spree/default_price.rb +10 -26
- data/app/models/concerns/spree/display_money.rb +1 -1
- data/app/models/concerns/spree/ordered_property_value_list.rb +10 -12
- data/app/models/concerns/spree/ransackable_attributes.rb +6 -5
- data/app/models/concerns/spree/user_address_book.rb +87 -81
- data/app/models/concerns/spree/user_methods.rb +2 -2
- data/app/models/concerns/spree/user_payment_source.rb +12 -8
- data/app/models/spree/ability.rb +2 -2
- data/app/models/spree/address.rb +37 -38
- data/app/models/spree/adjustment.rb +2 -6
- data/app/models/spree/app_configuration.rb +60 -5
- data/app/models/spree/base.rb +1 -1
- data/app/models/spree/calculator/default_tax.rb +28 -24
- data/app/models/spree/calculator/flat_percent_item_total.rb +1 -1
- data/app/models/spree/calculator/flat_rate.rb +2 -2
- data/app/models/spree/calculator/flexi_rate.rb +4 -4
- data/app/models/spree/calculator/percent_per_item.rb +8 -9
- data/app/models/spree/calculator/price_sack.rb +3 -3
- data/app/models/spree/calculator/returns/default_refund_amount.rb +11 -12
- data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +1 -1
- data/app/models/spree/calculator/shipping/flat_rate.rb +2 -2
- data/app/models/spree/calculator/shipping/flexi_rate.rb +3 -3
- data/app/models/spree/calculator/shipping/per_item.rb +1 -1
- data/app/models/spree/calculator/shipping/price_sack.rb +3 -3
- data/app/models/spree/calculator/tiered_flat_rate.rb +2 -1
- data/app/models/spree/calculator/tiered_percent.rb +2 -1
- data/app/models/spree/calculator.rb +3 -3
- data/app/models/spree/carton.rb +2 -2
- data/app/models/spree/country.rb +7 -4
- data/app/models/spree/credit_card.rb +26 -22
- data/app/models/spree/customer_return.rb +8 -7
- data/app/models/spree/exchange.rb +1 -9
- data/app/models/spree/gateway/bogus.rb +31 -31
- data/app/models/spree/gateway/bogus_simple.rb +6 -8
- data/app/models/spree/gateway.rb +9 -15
- data/app/models/spree/image.rb +3 -3
- data/app/models/spree/inventory_unit.rb +23 -23
- data/app/models/spree/item_adjustments.rb +3 -2
- data/app/models/spree/legacy_user.rb +1 -5
- data/app/models/spree/line_item.rb +95 -84
- data/app/models/spree/option_type.rb +1 -1
- data/app/models/spree/option_value.rb +3 -1
- data/app/models/spree/order/checkout.rb +45 -44
- data/app/models/spree/order/payments.rb +42 -45
- data/app/models/spree/order.rb +70 -75
- data/app/models/spree/order_cancellations.rb +4 -4
- data/app/models/spree/order_capturing.rb +3 -2
- data/app/models/spree/order_contents.rb +61 -59
- data/app/models/spree/order_inventory.rb +59 -54
- data/app/models/spree/order_mutex.rb +0 -1
- data/app/models/spree/order_shipping.rb +8 -9
- data/app/models/spree/order_stock_location.rb +3 -3
- data/app/models/spree/order_update_attributes.rb +0 -2
- data/app/models/spree/order_updater.rb +11 -24
- data/app/models/spree/payment/processing.rb +26 -37
- data/app/models/spree/payment.rb +68 -71
- data/app/models/spree/payment_method/check.rb +2 -2
- data/app/models/spree/payment_method/store_credit.rb +6 -7
- data/app/models/spree/payment_method.rb +11 -8
- data/app/models/spree/preferences/configuration.rb +2 -2
- data/app/models/spree/preferences/preferable.rb +1 -1
- data/app/models/spree/preferences/preferable_class_methods.rb +1 -1
- data/app/models/spree/preferences/scoped_store.rb +6 -5
- data/app/models/spree/preferences/static_model_preferences.rb +1 -1
- data/app/models/spree/preferences/statically_configurable.rb +2 -2
- data/app/models/spree/preferences/store.rb +2 -6
- data/app/models/spree/price.rb +17 -19
- data/app/models/spree/product/scopes.rb +18 -17
- data/app/models/spree/product.rb +28 -11
- data/app/models/spree/product_property.rb +2 -0
- data/app/models/spree/product_scope/scopes.rb +22 -22
- data/app/models/spree/promotion/actions/create_adjustment.rb +3 -4
- data/app/models/spree/promotion/actions/create_item_adjustments.rb +8 -8
- data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +3 -3
- data/app/models/spree/promotion/actions/free_shipping.rb +4 -4
- data/app/models/spree/promotion/rules/first_order.rb +7 -6
- data/app/models/spree/promotion/rules/first_repeat_purchase_since.rb +2 -3
- data/app/models/spree/promotion/rules/item_total.rb +5 -2
- data/app/models/spree/promotion/rules/nth_order.rb +3 -4
- data/app/models/spree/promotion/rules/one_use_per_user.rb +1 -2
- data/app/models/spree/promotion/rules/option_value.rb +1 -2
- data/app/models/spree/promotion/rules/product.rb +4 -4
- data/app/models/spree/promotion/rules/taxon.rb +5 -5
- data/app/models/spree/promotion/rules/user.rb +1 -1
- data/app/models/spree/promotion/rules/user_logged_in.rb +1 -1
- data/app/models/spree/promotion.rb +8 -8
- data/app/models/spree/promotion_action.rb +1 -1
- data/app/models/spree/promotion_builder.rb +2 -2
- data/app/models/spree/promotion_chooser.rb +1 -0
- data/app/models/spree/promotion_code/code_builder.rb +3 -3
- data/app/models/spree/promotion_handler/cart.rb +17 -16
- data/app/models/spree/promotion_handler/coupon.rb +10 -14
- data/app/models/spree/promotion_handler/page.rb +4 -4
- data/app/models/spree/promotion_rule.rb +4 -3
- data/app/models/spree/prototype.rb +0 -1
- data/app/models/spree/refund.rb +3 -3
- data/app/models/spree/reimbursement/reimbursement_type_engine.rb +1 -3
- data/app/models/spree/reimbursement.rb +3 -5
- data/app/models/spree/reimbursement_performer.rb +0 -5
- data/app/models/spree/reimbursement_tax_calculator.rb +2 -7
- data/app/models/spree/reimbursement_type/credit.rb +1 -1
- data/app/models/spree/reimbursement_type/original_payment.rb +1 -1
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +3 -3
- data/app/models/spree/reimbursement_type/store_credit.rb +1 -1
- data/app/models/spree/reimbursement_type.rb +1 -1
- data/app/models/spree/return_authorization.rb +38 -37
- data/app/models/spree/return_item/eligibility_validator/default.rb +4 -4
- data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +0 -1
- data/app/models/spree/return_item/eligibility_validator/rma_required.rb +0 -1
- data/app/models/spree/return_item.rb +24 -23
- data/app/models/spree/returns_calculator.rb +1 -2
- data/app/models/spree/shipment.rb +80 -74
- data/app/models/spree/shipping_calculator.rb +4 -5
- data/app/models/spree/shipping_manifest.rb +3 -4
- data/app/models/spree/shipping_method.rb +54 -23
- data/app/models/spree/shipping_method_stock_location.rb +4 -0
- data/app/models/spree/shipping_rate.rb +24 -29
- data/app/models/spree/shipping_rate_tax.rb +41 -0
- data/app/models/spree/state.rb +1 -1
- data/app/models/spree/state_change.rb +1 -1
- data/app/models/spree/stock/availability_validator.rb +2 -2
- data/app/models/spree/stock/coordinator.rb +12 -13
- data/app/models/spree/stock/differentiator.rb +1 -0
- data/app/models/spree/stock/estimator.rb +18 -25
- data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
- data/app/models/spree/stock/package.rb +19 -9
- data/app/models/spree/stock/packer.rb +2 -3
- data/app/models/spree/stock/prioritizer.rb +3 -2
- data/app/models/spree/stock/quantifier.rb +2 -3
- data/app/models/spree/stock/shipping_rate_selector.rb +0 -1
- data/app/models/spree/stock/shipping_rate_sorter.rb +0 -1
- data/app/models/spree/stock/splitter/backordered.rb +0 -2
- data/app/models/spree/stock/splitter/base.rb +3 -2
- data/app/models/spree/stock/splitter/shipping_category.rb +2 -1
- data/app/models/spree/stock/splitter/weight.rb +2 -2
- data/app/models/spree/stock_item.rb +36 -37
- data/app/models/spree/stock_location.rb +17 -13
- data/app/models/spree/stock_movement.rb +1 -3
- data/app/models/spree/stock_transfer.rb +8 -8
- data/app/models/spree/store.rb +6 -0
- data/app/models/spree/store_credit.rb +24 -24
- data/app/models/spree/store_credit_category.rb +1 -2
- data/app/models/spree/tax/item_adjuster.rb +37 -0
- data/app/models/spree/tax/order_adjuster.rb +38 -0
- data/app/models/spree/tax/shipping_rate_taxer.rb +31 -0
- data/app/models/spree/tax/tax_helpers.rb +49 -0
- data/app/models/spree/tax/tax_location.rb +33 -0
- data/app/models/spree/tax_category.rb +1 -1
- data/app/models/spree/tax_rate.rb +46 -111
- data/app/models/spree/taxon.rb +36 -12
- data/app/models/spree/taxonomy.rb +10 -10
- data/app/models/spree/validations/db_maximum_length_validator.rb +0 -1
- data/app/models/spree/variant/pricer.rb +19 -0
- data/app/models/spree/variant/pricing_options.rb +31 -0
- data/app/models/spree/variant/scopes.rb +9 -9
- data/app/models/spree/variant.rb +95 -89
- data/app/models/spree/variant_property_rule.rb +1 -1
- data/app/models/spree/variant_property_rule_value.rb +2 -0
- data/app/models/spree/zone.rb +60 -24
- data/config/initializers/friendly_id.rb +1 -1
- data/config/locales/en.yml +337 -51
- data/config/routes.rb +1 -1
- data/db/default/spree/countries.rb +9 -15
- data/db/default/spree/roles.rb +1 -2
- data/db/default/spree/states.rb +7 -11
- data/db/default/spree/store_credit.rb +2 -2
- data/db/default/spree/stores.rb +2 -1
- data/db/migrate/20120831092320_spree_one_two.rb +100 -101
- data/db/migrate/20120831092359_spree_promo_one_two.rb +12 -12
- data/db/migrate/20120905151823_add_toggle_tax_rate_display.rb +1 -1
- data/db/migrate/20121009142519_add_lock_version_to_variant.rb +1 -1
- data/db/migrate/20121010142909_add_states_required_to_countries.rb +1 -1
- data/db/migrate/20121012071449_add_on_demand_to_product_and_variant.rb +2 -2
- data/db/migrate/20121017010007_remove_not_null_constraint_from_products_on_hand.rb +4 -4
- data/db/migrate/20121031162139_split_prices_from_variants.rb +8 -8
- data/db/migrate/20121107003422_remove_not_null_from_spree_prices_amount.rb +2 -2
- data/db/migrate/20121109173623_add_cost_currency_to_variants.rb +1 -1
- data/db/migrate/20121124203911_add_position_to_taxonomies.rb +1 -1
- data/db/migrate/20130120201805_add_position_to_product_properties.spree.rb +1 -2
- data/db/migrate/20130211190146_create_spree_stock_items.rb +1 -1
- data/db/migrate/20130213191427_create_default_stock.rb +12 -21
- data/db/migrate/20130226032817_change_meta_description_on_spree_products_to_text.rb +1 -1
- data/db/migrate/20130227143905_add_pending_to_inventory_unit.rb +2 -2
- data/db/migrate/20130228210442_create_shipping_method_zone.rb +1 -1
- data/db/migrate/20130301162924_create_shipping_method_categories.rb +2 -2
- data/db/migrate/20130304162240_create_spree_shipping_rates.rb +4 -4
- data/db/migrate/20130306181701_add_address_fields_to_stock_location.rb +2 -3
- data/db/migrate/20130306191917_add_active_field_to_stock_locations.rb +1 -1
- data/db/migrate/20130306195650_add_backorderable_to_stock_item.rb +1 -1
- data/db/migrate/20130307161754_add_default_quantity_to_stock_movement.rb +1 -1
- data/db/migrate/20130319062004_change_orders_total_precision.rb +4 -4
- data/db/migrate/20130319063911_change_spree_payments_amount_precision.rb +1 -3
- data/db/migrate/20130319064308_change_spree_return_authorization_amount_precision.rb +2 -4
- data/db/migrate/20130319082943_change_adjustments_amount_precision.rb +1 -3
- data/db/migrate/20130319190507_drop_source_and_destination_from_stock_movement.rb +2 -2
- data/db/migrate/20130325163316_migrate_inventory_unit_sold_to_on_hand.rb +2 -2
- data/db/migrate/20130417120035_update_adjustment_states.rb +2 -2
- data/db/migrate/20130417123427_add_shipping_rates_to_shipments.rb +3 -3
- data/db/migrate/20130628021056_add_unique_index_to_permalink_on_spree_products.rb +1 -1
- data/db/migrate/20130628022817_add_unique_index_to_orders_shipments_and_stock_transfers.rb +3 -3
- data/db/migrate/20130718042445_add_cost_price_to_line_item.rb +1 -1
- data/db/migrate/20130718233855_set_backorderable_to_default_to_false.rb +2 -2
- data/db/migrate/20130807024301_upgrade_adjustments.rb +3 -3
- data/db/migrate/20130813004002_add_shipment_total_to_spree_orders.rb +1 -1
- data/db/migrate/20130813140619_expand_order_number_size.rb +2 -2
- data/db/migrate/20130815000406_add_adjustment_total_to_line_items.rb +1 -1
- data/db/migrate/20130815024413_add_adjustment_total_to_shipments.rb +1 -1
- data/db/migrate/20130826062534_add_depth_to_spree_taxons.rb +1 -1
- data/db/migrate/20130830001033_add_shipping_category_to_shipping_methods_and_products.rb +1 -1
- data/db/migrate/20130830001159_migrate_old_shipping_calculators.rb +1 -1
- data/db/migrate/20131001013410_remove_unused_credit_card_fields.rb +1 -0
- data/db/migrate/20131026154747_add_track_inventory_to_variant.rb +1 -1
- data/db/migrate/20131118043959_add_included_to_adjustments.rb +1 -1
- data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +0 -1
- data/db/migrate/20131211112807_create_spree_orders_promotions.rb +1 -1
- data/db/migrate/20131218054603_add_item_count_to_spree_orders.rb +1 -1
- data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +1 -0
- data/db/migrate/20140219060952_add_considered_risky_to_orders.rb +1 -1
- data/db/migrate/20140309023735_migrate_old_preferences.rb +4 -3
- data/db/migrate/20140309033438_create_store_from_preferences.rb +2 -2
- data/db/migrate/20140410141842_add_many_missing_indexes.rb +13 -15
- data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +38 -40
- data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +4 -4
- data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +1 -1
- data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +0 -1
- data/db/migrate/20140718195325_create_friendly_id_slugs.rb +4 -4
- data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +4 -6
- data/db/migrate/20140805171219_make_existing_credit_cards_default.rb +1 -0
- data/db/migrate/20141217215630_update_product_slug_index.rb +2 -4
- data/db/migrate/20150112194216_add_position_to_stock_location.rb +2 -2
- data/db/migrate/20150225205344_move_promotion_code_to_promotion_code_value.rb +0 -1
- data/db/migrate/20150313201503_copy_shipped_shipments_to_cartons.rb +0 -1
- data/db/migrate/20150506181611_create_spree_store_credit_payment_method.rb +3 -3
- data/db/migrate/20150515211137_fix_adjustment_order_id.rb +0 -1
- data/db/migrate/20150612205731_remove_spree_configurations.rb +2 -2
- data/db/migrate/20150619160613_create_adjustment_reason.rb +1 -1
- data/db/migrate/20150723224133_remove_unnecessary_indexes.rb +10 -2
- data/db/migrate/20150731201146_add_spree_user_addresses.rb +0 -1
- data/db/migrate/20150811211025_add_finalized_to_spree_adjustments.rb +1 -1
- data/db/migrate/20151001121454_create_spree_shipping_method_stock_locations.rb +13 -0
- data/db/migrate/20151002023248_add_foreign_key_to_shipping_method_stock_location.rb +6 -0
- data/db/migrate/20151026093607_change_return_item_pre_tax_amount_to_amount.rb +29 -0
- data/db/migrate/20160111091912_add_column_available_to_all_on_spree_shipping_method.rb +5 -0
- data/db/migrate/20160116133604_add_position_to_spree_payment_methods.rb +5 -0
- data/db/migrate/20160122182105_add_carrier_and_service_level_to_spree_shipping_methods.rb +6 -0
- data/db/migrate/20160224201413_create_spree_shipping_rate_taxes.rb +11 -0
- data/db/migrate/20160229133259_add_cart_tax_country_iso_to_spree_store.rb +5 -0
- data/db/migrate/20160301103333_remove_pre_tax_amount_on_line_item_and_shipment.rb +6 -0
- data/db/migrate/20160308000300_disallow_adjustment_finalized_nulls.rb +19 -0
- data/db/migrate/20160318145302_add_timestamps_to_prices.rb +5 -0
- data/db/migrate/20160330204846_add_missing_timestamp_columns.rb +20 -0
- data/lib/generators/spree/custom_user/custom_user_generator.rb +3 -8
- data/lib/generators/spree/dummy/dummy_generator.rb +17 -19
- data/lib/generators/spree/install/install_generator.rb +15 -15
- data/lib/generators/spree/install/templates/config/initializers/spree.rb +1 -0
- data/lib/spree/core/controller_helpers/auth.rb +2 -4
- data/lib/spree/core/controller_helpers/common.rb +42 -43
- data/lib/spree/core/controller_helpers/order.rb +5 -9
- data/lib/spree/core/controller_helpers/payment_parameters.rb +4 -5
- data/lib/spree/core/controller_helpers/pricing.rb +27 -0
- data/lib/spree/core/controller_helpers/respond_with.rb +4 -4
- data/lib/spree/core/controller_helpers/search.rb +2 -2
- data/lib/spree/core/controller_helpers/store.rb +3 -3
- data/lib/spree/core/controller_helpers/strong_parameters.rb +4 -4
- data/lib/spree/core/current_store.rb +1 -1
- data/lib/spree/core/delegate_belongs_to.rb +19 -21
- data/lib/spree/core/engine.rb +12 -8
- data/lib/spree/core/environment/calculators.rb +0 -1
- data/lib/spree/core/environment_extension.rb +4 -4
- data/lib/spree/core/importer/order.rb +17 -22
- data/lib/spree/core/importer/product.rb +10 -9
- data/lib/spree/core/permalinks.rb +16 -16
- data/lib/spree/core/product_duplicator.rb +2 -3
- data/lib/spree/core/product_filters.rb +15 -16
- data/lib/spree/core/role_configuration.rb +2 -2
- data/lib/spree/core/search/base.rb +71 -57
- data/lib/spree/core/search/variant.rb +2 -4
- data/lib/spree/core/unreturned_item_charger.rb +1 -2
- data/lib/spree/core/validators/email.rb +2 -2
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/core.rb +2 -4
- data/lib/spree/i18n.rb +1 -1
- data/lib/spree/localized_number.rb +3 -1
- data/lib/spree/migrations.rb +27 -26
- data/lib/spree/money.rb +19 -4
- data/lib/spree/permission_sets/base.rb +1 -1
- data/lib/spree/permitted_attributes.rb +7 -7
- data/lib/spree/responder.rb +4 -5
- data/lib/spree/testing_support/authorization_helpers.rb +1 -1
- data/lib/spree/testing_support/caching.rb +8 -8
- data/lib/spree/testing_support/capybara_ext.rb +11 -13
- data/lib/spree/testing_support/common_rake.rb +4 -4
- data/lib/spree/testing_support/controller_requests.rb +1 -1
- data/lib/spree/testing_support/extension_rake.rb +1 -2
- data/lib/spree/testing_support/factories/address_factory.rb +14 -3
- data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +1 -1
- data/lib/spree/testing_support/factories/carton_factory.rb +2 -2
- data/lib/spree/testing_support/factories/credit_card_factory.rb +4 -0
- data/lib/spree/testing_support/factories/customer_return_factory.rb +4 -6
- data/lib/spree/testing_support/factories/line_item_factory.rb +1 -1
- data/lib/spree/testing_support/factories/order_factory.rb +10 -11
- data/lib/spree/testing_support/factories/payment_factory.rb +5 -0
- data/lib/spree/testing_support/factories/promotion_category_factory.rb +0 -1
- data/lib/spree/testing_support/factories/promotion_factory.rb +0 -1
- data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
- data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
- data/lib/spree/testing_support/factories/return_item_factory.rb +1 -1
- data/lib/spree/testing_support/factories/shipping_method_factory.rb +5 -2
- data/lib/spree/testing_support/factories/state_factory.rb +17 -7
- data/lib/spree/testing_support/factories/stock_location_factory.rb +4 -4
- data/lib/spree/testing_support/factories/stock_transfer_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_credit_category_factory.rb +0 -1
- data/lib/spree/testing_support/factories/store_credit_type_factory.rb +0 -2
- data/lib/spree/testing_support/factories/tax_category_factory.rb +2 -2
- data/lib/spree/testing_support/factories/user_factory.rb +1 -1
- data/lib/spree/testing_support/factories/variant_factory.rb +1 -2
- data/lib/spree/testing_support/factories/zone_factory.rb +2 -1
- data/lib/spree/testing_support/i18n.rb +4 -5
- data/lib/spree/testing_support/order_walkthrough.rb +8 -9
- data/lib/spree/testing_support/preferences.rb +1 -1
- data/lib/spree/testing_support/sequences.rb +5 -4
- data/lib/tasks/core.rake +15 -19
- data/lib/tasks/email.rake +3 -3
- data/lib/tasks/exchanges.rake +12 -14
- data/lib/tasks/migrations/assure_store_on_orders.rake +38 -0
- data/lib/tasks/migrations/copy_order_bill_address_to_credit_card.rake +2 -2
- data/lib/tasks/migrations/copy_shipped_shipments_to_cartons.rake +1 -11
- data/lib/tasks/migrations/migrate_shipping_rate_taxes.rake +17 -0
- data/lib/tasks/migrations/migrate_user_addresses.rake +1 -1
- data/lib/tasks/order_capturing.rake +1 -1
- data/lib/tasks/upgrade.rake +11 -0
- data/script/rails +0 -1
- data/solidus_core.gemspec +6 -8
- data/spec/helpers/base_helper_spec.rb +15 -18
- data/spec/helpers/order_helper_spec.rb +2 -2
- data/spec/helpers/products_helper_spec.rb +43 -51
- data/spec/helpers/taxons_helper_spec.rb +1 -1
- data/spec/lib/i18n_spec.rb +11 -11
- data/spec/lib/search/base_spec.rb +12 -14
- data/spec/lib/search/variant_spec.rb +1 -0
- data/spec/lib/spree/core/controller_helpers/order_spec.rb +1 -7
- data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +26 -28
- data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +63 -0
- data/spec/lib/spree/core/controller_helpers/search_spec.rb +4 -2
- data/spec/lib/spree/core/delegate_belongs_to_spec.rb +1 -1
- data/spec/lib/spree/core/importer/order_spec.rb +95 -90
- data/spec/lib/spree/core/role_configuration_spec.rb +16 -16
- data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +35 -0
- data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +10 -1
- data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -1
- data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +6 -1
- data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +37 -1
- data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +2 -2
- data/spec/lib/spree/core/testing_support/factories/stock_packer_factory_spec.rb +1 -1
- data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +1 -2
- data/spec/lib/spree/core/testing_support/preferences_spec.rb +26 -0
- data/spec/lib/spree/core/unreturned_item_charger_spec.rb +7 -9
- data/spec/lib/spree/core/validators/email_spec.rb +8 -6
- data/spec/lib/spree/localized_number_spec.rb +1 -3
- data/spec/lib/spree/migrations_spec.rb +2 -2
- data/spec/lib/spree/money_spec.rb +75 -6
- data/spec/lib/tasks/exchanges_spec.rb +2 -12
- data/spec/lib/tasks/migrations/copy_shipped_shipments_to_cartons_spec.rb +0 -1
- data/spec/lib/tasks/order_capturing_spec.rb +1 -1
- data/spec/mailers/carton_mailer_spec.rb +3 -3
- data/spec/mailers/order_mailer_spec.rb +9 -11
- data/spec/mailers/reimbursement_mailer_spec.rb +2 -2
- data/spec/mailers/test_mailer_spec.rb +1 -1
- data/spec/models/spree/ability_spec.rb +4 -7
- data/spec/models/spree/address_spec.rb +32 -35
- data/spec/models/spree/adjustment_reason_spec.rb +0 -2
- data/spec/models/spree/adjustment_spec.rb +2 -2
- data/spec/models/spree/app_configuration_spec.rb +33 -3
- data/spec/models/spree/asset_spec.rb +1 -2
- data/spec/models/spree/calculator/default_tax_spec.rb +141 -52
- data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +1 -1
- data/spec/models/spree/calculator/flexi_rate_spec.rb +6 -6
- data/spec/models/spree/calculator/percent_on_line_item_spec.rb +1 -1
- data/spec/models/spree/calculator/price_sack_spec.rb +2 -2
- data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +9 -11
- data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +4 -4
- data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +2 -2
- data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +6 -7
- data/spec/models/spree/calculator/shipping/per_item_spec.rb +2 -2
- data/spec/models/spree/calculator/shipping/price_sack_spec.rb +2 -2
- data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +1 -2
- data/spec/models/spree/calculator/tiered_percent_spec.rb +1 -1
- data/spec/models/spree/calculator_spec.rb +3 -8
- data/spec/models/spree/carton_spec.rb +1 -1
- data/spec/models/spree/classification_spec.rb +1 -1
- data/spec/models/spree/concerns/display_money_spec.rb +0 -1
- data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +26 -1
- data/spec/models/spree/concerns/user_address_book_spec.rb +19 -12
- data/spec/models/spree/concerns/user_methods_spec.rb +1 -1
- data/spec/models/spree/country_spec.rb +52 -0
- data/spec/models/spree/credit_card_spec.rb +17 -12
- data/spec/models/spree/customer_return_spec.rb +27 -23
- data/spec/models/spree/exchange_spec.rb +2 -7
- data/spec/models/spree/gateway/bogus_simple.rb +2 -4
- data/spec/models/spree/gateway/bogus_spec.rb +4 -2
- data/spec/models/spree/gateway_spec.rb +8 -3
- data/spec/models/spree/inventory_unit_spec.rb +13 -14
- data/spec/models/spree/item_adjustments_spec.rb +36 -40
- data/spec/models/spree/line_item_spec.rb +92 -48
- data/spec/models/spree/option_type_spec.rb +1 -1
- data/spec/models/spree/option_value_spec.rb +1 -1
- data/spec/models/spree/order/address_spec.rb +1 -1
- data/spec/models/spree/order/callbacks_spec.rb +3 -3
- data/spec/models/spree/order/checkout_spec.rb +55 -48
- data/spec/models/spree/order/finalizing_spec.rb +8 -9
- data/spec/models/spree/order/payment_spec.rb +20 -20
- data/spec/models/spree/order/risk_assessment_spec.rb +1 -1
- data/spec/models/spree/order/state_machine_spec.rb +40 -131
- data/spec/models/spree/order/tax_spec.rb +11 -12
- data/spec/models/spree/order/totals_spec.rb +3 -3
- data/spec/models/spree/order/updating_spec.rb +2 -2
- data/spec/models/spree/order/validations_spec.rb +2 -2
- data/spec/models/spree/order_cancellations_spec.rb +1 -1
- data/spec/models/spree/order_capturing_spec.rb +1 -1
- data/spec/models/spree/order_contents_spec.rb +10 -11
- data/spec/models/spree/order_inventory_spec.rb +11 -11
- data/spec/models/spree/order_merger_spec.rb +1 -0
- data/spec/models/spree/order_shipping_spec.rb +8 -10
- data/spec/models/spree/order_spec.rb +137 -124
- data/spec/models/spree/order_stock_location_spec.rb +2 -2
- data/spec/models/spree/order_update_attributes_spec.rb +6 -10
- data/spec/models/spree/order_updater_spec.rb +4 -8
- data/spec/models/spree/payment_create_spec.rb +11 -12
- data/spec/models/spree/payment_method/store_credit_spec.rb +10 -6
- data/spec/models/spree/payment_method_spec.rb +4 -5
- data/spec/models/spree/payment_spec.rb +61 -69
- data/spec/models/spree/permission_sets/base_spec.rb +1 -1
- data/spec/models/spree/permission_sets/configuration_display.rb +0 -1
- data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -1
- data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -1
- data/spec/models/spree/permission_sets/order_display_spec.rb +0 -1
- data/spec/models/spree/permission_sets/order_management_spec.rb +0 -1
- data/spec/models/spree/permission_sets/product_display_spec.rb +0 -1
- data/spec/models/spree/permission_sets/product_management_spec.rb +0 -1
- data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -1
- data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -1
- data/spec/models/spree/permission_sets/report_display_spec.rb +0 -1
- data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -1
- data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -1
- data/spec/models/spree/permission_sets/restricted_stock_transfer_display_spec.rb +0 -1
- data/spec/models/spree/permission_sets/restricted_stock_transfer_management_spec.rb +6 -6
- data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -1
- data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -1
- data/spec/models/spree/permission_sets/stock_transfer_display_spec.rb +0 -1
- data/spec/models/spree/permission_sets/stock_transfer_management_spec.rb +0 -2
- data/spec/models/spree/permission_sets/user_display_spec.rb +0 -1
- data/spec/models/spree/permission_sets/user_management_spec.rb +0 -1
- data/spec/models/spree/preference_spec.rb +1 -4
- data/spec/models/spree/preferences/configuration_spec.rb +2 -7
- data/spec/models/spree/preferences/preferable_spec.rb +13 -24
- data/spec/models/spree/preferences/scoped_store_spec.rb +1 -1
- data/spec/models/spree/preferences/static_model_preferences_spec.rb +5 -6
- data/spec/models/spree/preferences/statically_configurable_spec.rb +2 -6
- data/spec/models/spree/preferences/store_spec.rb +2 -3
- data/spec/models/spree/price_spec.rb +6 -6
- data/spec/models/spree/product/scopes_spec.rb +20 -20
- data/spec/models/spree/product_duplicator_spec.rb +16 -29
- data/spec/models/spree/product_filter_spec.rb +2 -2
- data/spec/models/spree/product_spec.rb +53 -20
- data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +10 -12
- data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +4 -4
- data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +9 -9
- data/spec/models/spree/promotion/actions/free_shipping_spec.rb +1 -1
- data/spec/models/spree/promotion/rules/first_order_spec.rb +10 -10
- data/spec/models/spree/promotion/rules/item_total_spec.rb +63 -19
- data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +1 -1
- data/spec/models/spree/promotion/rules/product_spec.rb +8 -8
- data/spec/models/spree/promotion/rules/taxon_spec.rb +4 -4
- data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +3 -4
- data/spec/models/spree/promotion/rules/user_spec.rb +7 -7
- data/spec/models/spree/promotion_builder_spec.rb +10 -8
- data/spec/models/spree/promotion_category_spec.rb +1 -1
- data/spec/models/spree/promotion_code/code_builder_spec.rb +1 -3
- data/spec/models/spree/promotion_code_spec.rb +8 -7
- data/spec/models/spree/promotion_handler/cart_spec.rb +1 -1
- data/spec/models/spree/promotion_handler/coupon_spec.rb +28 -28
- data/spec/models/spree/promotion_handler/page_spec.rb +6 -7
- data/spec/models/spree/promotion_rule_spec.rb +1 -2
- data/spec/models/spree/promotion_spec.rb +25 -21
- data/spec/models/spree/refund_spec.rb +8 -11
- data/spec/models/spree/reimbursement/credit_spec.rb +2 -2
- data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +6 -4
- data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +1 -1
- data/spec/models/spree/reimbursement_performer_spec.rb +2 -2
- data/spec/models/spree/reimbursement_spec.rb +9 -11
- data/spec/models/spree/reimbursement_tax_calculator_spec.rb +4 -5
- data/spec/models/spree/reimbursement_type/credit_spec.rb +2 -2
- data/spec/models/spree/reimbursement_type/exchange_spec.rb +2 -3
- data/spec/models/spree/reimbursement_type/original_payment_spec.rb +4 -4
- data/spec/models/spree/reimbursement_type/store_credit_spec.rb +1 -1
- data/spec/models/spree/return_authorization_spec.rb +18 -21
- data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +7 -7
- data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -1
- data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -1
- 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 +1 -1
- data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +1 -2
- data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +3 -5
- data/spec/models/spree/return_item_spec.rb +29 -31
- data/spec/models/spree/returns_calculator_spec.rb +1 -1
- data/spec/models/spree/shipment_spec.rb +59 -43
- data/spec/models/spree/shipping_calculator_spec.rb +3 -3
- data/spec/models/spree/shipping_manifest_spec.rb +8 -7
- data/spec/models/spree/shipping_method_spec.rb +149 -24
- data/spec/models/spree/shipping_rate_spec.rb +116 -76
- data/spec/models/spree/shipping_rate_tax_spec.rb +83 -0
- data/spec/models/spree/state_spec.rb +2 -2
- data/spec/models/spree/stock/availability_validator_spec.rb +4 -4
- data/spec/models/spree/stock/coordinator_spec.rb +33 -49
- data/spec/models/spree/stock/differentiator_spec.rb +1 -1
- data/spec/models/spree/stock/estimator_spec.rb +83 -54
- data/spec/models/spree/stock/inventory_unit_builder_spec.rb +1 -3
- data/spec/models/spree/stock/package_spec.rb +27 -10
- data/spec/models/spree/stock/packer_spec.rb +4 -4
- data/spec/models/spree/stock/prioritizer_spec.rb +1 -1
- data/spec/models/spree/stock/quantifier_spec.rb +2 -6
- data/spec/models/spree/stock/splitter/backordered_spec.rb +1 -1
- data/spec/models/spree/stock/splitter/base_spec.rb +1 -2
- data/spec/models/spree/stock/splitter/shipping_category_spec.rb +1 -3
- data/spec/models/spree/stock/splitter/weight_spec.rb +3 -3
- data/spec/models/spree/stock_item_spec.rb +16 -16
- data/spec/models/spree/stock_location_spec.rb +6 -8
- data/spec/models/spree/stock_movement_spec.rb +1 -1
- data/spec/models/spree/stock_transfer_spec.rb +1 -3
- data/spec/models/spree/store_credit_category_spec.rb +1 -1
- data/spec/models/spree/store_credit_event_spec.rb +3 -5
- data/spec/models/spree/store_credit_spec.rb +24 -23
- data/spec/models/spree/store_spec.rb +21 -2
- data/spec/models/spree/tax/item_adjuster_spec.rb +74 -0
- data/spec/models/spree/tax/order_adjuster_spec.rb +49 -0
- data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +50 -0
- data/spec/models/spree/tax/tax_location_spec.rb +68 -0
- data/spec/models/spree/tax/taxation_integration_spec.rb +787 -0
- data/spec/models/spree/tax_category_spec.rb +2 -2
- data/spec/models/spree/tax_rate_spec.rb +185 -536
- data/spec/models/spree/taxon_spec.rb +69 -5
- data/spec/models/spree/taxonomy_spec.rb +2 -3
- data/spec/models/spree/tracker_spec.rb +1 -1
- data/spec/models/spree/transfer_item_spec.rb +1 -1
- data/spec/models/spree/unit_cancel_spec.rb +9 -14
- data/spec/models/spree/user_spec.rb +19 -24
- data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +1 -1
- data/spec/models/spree/variant/pricer_spec.rb +48 -0
- data/spec/models/spree/variant/pricing_options_spec.rb +106 -0
- data/spec/models/spree/variant/scopes_spec.rb +31 -8
- data/spec/models/spree/variant_property_rule_spec.rb +1 -1
- data/spec/models/spree/variant_spec.rb +166 -52
- data/spec/models/spree/zone_spec.rb +135 -10
- data/spec/support/big_decimal.rb +1 -1
- data/spec/support/concerns/working_factories.rb +2 -2
- data/spec/support/dummy_ability.rb +0 -1
- metadata +55 -44
- data/lib/generators/spree/dummy/templates/initializers/devise.rb +0 -3
- data/lib/spree/migration_helpers.rb +0 -19
- data/vendor/assets/stylesheets/skeleton.css +0 -242
@@ -14,24 +14,16 @@ describe Spree::Shipment, type: :model do
|
|
14
14
|
shipping_rates: [
|
15
15
|
Spree::ShippingRate.new(
|
16
16
|
shipping_method: shipping_method,
|
17
|
-
selected: true
|
18
|
-
)
|
17
|
+
selected: true
|
18
|
+
)
|
19
19
|
],
|
20
|
-
stock_location: stock_location
|
20
|
+
stock_location: stock_location
|
21
21
|
)
|
22
22
|
end
|
23
23
|
|
24
24
|
let(:variant) { mock_model(Spree::Variant) }
|
25
25
|
let(:line_item) { mock_model(Spree::LineItem, variant: variant) }
|
26
26
|
|
27
|
-
describe "precision of pre_tax_amount" do
|
28
|
-
let!(:line_item) { create :line_item, pre_tax_amount: 4.2051 }
|
29
|
-
|
30
|
-
it "keeps four digits of precision even when reloading" do
|
31
|
-
expect(line_item.reload.pre_tax_amount).to eq(4.2051)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
27
|
# Regression test for https://github.com/spree/spree/issues/4063
|
36
28
|
context "number generation" do
|
37
29
|
before { allow(order).to receive :update! }
|
@@ -47,7 +39,7 @@ describe Spree::Shipment, type: :model do
|
|
47
39
|
it 'is backordered if one if its inventory_units is backordered' do
|
48
40
|
shipment.inventory_units = [
|
49
41
|
build(:inventory_unit, state: 'backordered', shipment: nil),
|
50
|
-
build(:inventory_unit, state: 'shipped', shipment: nil)
|
42
|
+
build(:inventory_unit, state: 'shipped', shipment: nil)
|
51
43
|
]
|
52
44
|
expect(shipment).to be_backordered
|
53
45
|
end
|
@@ -64,7 +56,7 @@ describe Spree::Shipment, type: :model do
|
|
64
56
|
end
|
65
57
|
|
66
58
|
it 'returns pending if backordered' do
|
67
|
-
allow(shipment).to receive_messages inventory_units: [mock_model(Spree::InventoryUnit,
|
59
|
+
allow(shipment).to receive_messages inventory_units: [mock_model(Spree::InventoryUnit, allow_ship?: false, canceled?: false)]
|
68
60
|
expect(shipment.determine_state(order)).to eq 'pending'
|
69
61
|
end
|
70
62
|
|
@@ -165,10 +157,12 @@ describe Spree::Shipment, type: :model do
|
|
165
157
|
let(:shipment) { create(:shipment) }
|
166
158
|
let(:shipping_method1) { create(:shipping_method) }
|
167
159
|
let(:shipping_method2) { create(:shipping_method) }
|
168
|
-
let(:shipping_rates) {
|
160
|
+
let(:shipping_rates) {
|
161
|
+
[
|
169
162
|
Spree::ShippingRate.new(shipping_method: shipping_method1, cost: 10.00, selected: true),
|
170
163
|
Spree::ShippingRate.new(shipping_method: shipping_method2, cost: 20.00)
|
171
|
-
]
|
164
|
+
]
|
165
|
+
}
|
172
166
|
|
173
167
|
it 'returns shipping_method from selected shipping_rate' do
|
174
168
|
shipment.shipping_rates.delete_all
|
@@ -181,7 +175,7 @@ describe Spree::Shipment, type: :model do
|
|
181
175
|
before { allow(shipment).to receive(:can_get_rates?){ true } }
|
182
176
|
|
183
177
|
it 'should request new rates, and maintain shipping_method selection' do
|
184
|
-
expect(Spree::Stock::Estimator).to receive(:new).with(
|
178
|
+
expect(Spree::Stock::Estimator).to receive(:new).with(no_args).and_return(mock_estimator)
|
185
179
|
allow(shipment).to receive_messages(shipping_method: shipping_method2)
|
186
180
|
|
187
181
|
expect(shipment.refresh_rates).to eq(shipping_rates)
|
@@ -189,7 +183,7 @@ describe Spree::Shipment, type: :model do
|
|
189
183
|
end
|
190
184
|
|
191
185
|
it 'should handle no shipping_method selection' do
|
192
|
-
expect(Spree::Stock::Estimator).to receive(:new).with(
|
186
|
+
expect(Spree::Stock::Estimator).to receive(:new).with(no_args).and_return(mock_estimator)
|
193
187
|
allow(shipment).to receive_messages(shipping_method: nil)
|
194
188
|
expect(shipment.refresh_rates).to eq(shipping_rates)
|
195
189
|
expect(shipment.reload.selected_shipping_rate).not_to be_nil
|
@@ -203,7 +197,7 @@ describe Spree::Shipment, type: :model do
|
|
203
197
|
end
|
204
198
|
|
205
199
|
it "can't get rates without a shipping address" do
|
206
|
-
shipment.order(ship_address: nil)
|
200
|
+
shipment.order.update_attributes!(ship_address: nil)
|
207
201
|
expect(shipment.refresh_rates).to eq([])
|
208
202
|
end
|
209
203
|
|
@@ -228,22 +222,31 @@ describe Spree::Shipment, type: :model do
|
|
228
222
|
expect(package.on_hand.count).to eq 1
|
229
223
|
expect(package.backordered.count).to eq 1
|
230
224
|
end
|
225
|
+
|
226
|
+
it 'should set the shipment to itself' do
|
227
|
+
expect(shipment.to_package.shipment).to eq(shipment)
|
228
|
+
end
|
231
229
|
end
|
232
230
|
end
|
233
231
|
end
|
234
232
|
|
235
233
|
context "#update!" do
|
236
234
|
shared_examples_for "immutable once shipped" do
|
235
|
+
before { shipment.update_columns(state: 'shipped') }
|
236
|
+
|
237
237
|
it "should remain in shipped state once shipped" do
|
238
|
-
|
239
|
-
|
240
|
-
shipment.
|
238
|
+
expect {
|
239
|
+
shipment.update!(order)
|
240
|
+
}.not_to change { shipment.state }
|
241
241
|
end
|
242
242
|
end
|
243
243
|
|
244
244
|
shared_examples_for "pending if backordered" do
|
245
245
|
it "should have a state of pending if backordered" do
|
246
|
-
|
246
|
+
# Set as ready so we can test for change
|
247
|
+
shipment.update_attributes!(state: 'ready')
|
248
|
+
|
249
|
+
allow(shipment).to receive_messages(inventory_units: [mock_model(Spree::InventoryUnit, allow_ship?: false, canceled?: false)])
|
247
250
|
expect(shipment).to receive(:update_columns).with(state: 'pending', updated_at: kind_of(Time))
|
248
251
|
shipment.update!(order)
|
249
252
|
end
|
@@ -252,6 +255,8 @@ describe Spree::Shipment, type: :model do
|
|
252
255
|
context "when order cannot ship" do
|
253
256
|
before { allow(order).to receive_messages can_ship?: false }
|
254
257
|
it "should result in a 'pending' state" do
|
258
|
+
# Set as ready so we can test for change
|
259
|
+
shipment.update_attributes!(state: 'ready')
|
255
260
|
expect(shipment).to receive(:update_columns).with(state: 'pending', updated_at: kind_of(Time))
|
256
261
|
shipment.update!(order)
|
257
262
|
end
|
@@ -269,14 +274,9 @@ describe Spree::Shipment, type: :model do
|
|
269
274
|
|
270
275
|
context "when payment is not required" do
|
271
276
|
before do
|
272
|
-
@original_require_payment = Spree::Config[:require_payment_to_ship]
|
273
277
|
Spree::Config[:require_payment_to_ship] = false
|
274
278
|
end
|
275
279
|
|
276
|
-
after do
|
277
|
-
Spree::Config[:require_payment_to_ship] = @original_require_payment
|
278
|
-
end
|
279
|
-
|
280
280
|
it "should result in a 'ready' state" do
|
281
281
|
expect(shipment).to receive(:update_columns).with(state: 'ready', updated_at: kind_of(Time))
|
282
282
|
shipment.update!(order)
|
@@ -331,8 +331,6 @@ describe Spree::Shipment, type: :model do
|
|
331
331
|
end
|
332
332
|
|
333
333
|
context "when order is completed" do
|
334
|
-
after { Spree::Config.set track_inventory_levels: true }
|
335
|
-
|
336
334
|
before do
|
337
335
|
allow(order).to receive_messages completed?: true
|
338
336
|
allow(order).to receive_messages canceled?: false
|
@@ -424,7 +422,7 @@ describe Spree::Shipment, type: :model do
|
|
424
422
|
end
|
425
423
|
|
426
424
|
context "when any inventory is backordered" do
|
427
|
-
before { allow_any_instance_of(Spree::InventoryUnit).to receive(:
|
425
|
+
before { allow_any_instance_of(Spree::InventoryUnit).to receive(:allow_ship?).and_return(false) }
|
428
426
|
it "should result in a 'ready' state" do
|
429
427
|
shipment.resume!
|
430
428
|
expect(shipment.state).to eq 'pending'
|
@@ -435,7 +433,7 @@ describe Spree::Shipment, type: :model do
|
|
435
433
|
before do
|
436
434
|
allow(order).to receive_messages(can_ship?: true)
|
437
435
|
allow(order).to receive_messages(paid?: true)
|
438
|
-
allow_any_instance_of(Spree::InventoryUnit).to receive(:
|
436
|
+
allow_any_instance_of(Spree::InventoryUnit).to receive(:allow_ship?).and_return(true)
|
439
437
|
end
|
440
438
|
|
441
439
|
it "should result in a 'ready' state" do
|
@@ -538,9 +536,14 @@ describe Spree::Shipment, type: :model do
|
|
538
536
|
end
|
539
537
|
|
540
538
|
context "changes shipping rate via general update" do
|
539
|
+
let(:store) { create :store }
|
541
540
|
let(:order) do
|
542
541
|
Spree::Order.create(
|
543
|
-
payment_total: 100,
|
542
|
+
payment_total: 100,
|
543
|
+
payment_state: 'paid',
|
544
|
+
total: 100,
|
545
|
+
item_total: 100,
|
546
|
+
store: store
|
544
547
|
)
|
545
548
|
end
|
546
549
|
|
@@ -603,17 +606,30 @@ describe Spree::Shipment, type: :model do
|
|
603
606
|
end
|
604
607
|
|
605
608
|
context "#tracking_url" do
|
606
|
-
subject
|
607
|
-
|
609
|
+
subject { shipment.tracking_url }
|
610
|
+
|
611
|
+
context "when tracking has not yet been set" do
|
612
|
+
it { is_expected.to be nil }
|
608
613
|
end
|
609
614
|
|
610
|
-
|
611
|
-
|
612
|
-
|
615
|
+
context "when tracking has been set, but a shipping method is not present" do
|
616
|
+
before do
|
617
|
+
shipment.tracking = "12345"
|
618
|
+
shipment.shipping_rates.clear
|
619
|
+
end
|
620
|
+
|
621
|
+
it { is_expected.to be nil }
|
613
622
|
end
|
614
623
|
|
615
|
-
|
616
|
-
|
624
|
+
context "when tracking has been set and a shipping method exists" do
|
625
|
+
before do
|
626
|
+
shipment.tracking = "12345"
|
627
|
+
shipment.shipping_method.update(tracking_url: "https://example.com/:tracking")
|
628
|
+
end
|
629
|
+
|
630
|
+
it "builds the tracking url with the shipping method" do
|
631
|
+
expect(subject).to eql("https://example.com/12345")
|
632
|
+
end
|
617
633
|
end
|
618
634
|
end
|
619
635
|
|
@@ -631,7 +647,7 @@ describe Spree::Shipment, type: :model do
|
|
631
647
|
|
632
648
|
it "associates variant and order" do
|
633
649
|
expect(inventory_units).to receive(:create).with(params)
|
634
|
-
|
650
|
+
shipment.set_up_inventory('on_hand', variant, order, line_item)
|
635
651
|
end
|
636
652
|
end
|
637
653
|
|
@@ -648,7 +664,7 @@ describe Spree::Shipment, type: :model do
|
|
648
664
|
context "state changes" do
|
649
665
|
before do
|
650
666
|
# Must be stubbed so transition can succeed
|
651
|
-
allow(order).to receive_messages
|
667
|
+
allow(order).to receive_messages paid?: true
|
652
668
|
end
|
653
669
|
|
654
670
|
it "are logged to the database" do
|
@@ -662,13 +678,13 @@ describe Spree::Shipment, type: :model do
|
|
662
678
|
end
|
663
679
|
|
664
680
|
context "don't require shipment" do
|
665
|
-
let(:stock_location) { create(:stock_location, fulfillable: false)}
|
681
|
+
let(:stock_location) { create(:stock_location, fulfillable: false) }
|
666
682
|
let(:unshippable_shipment) do
|
667
683
|
create(
|
668
684
|
:shipment,
|
669
685
|
address: create(:address),
|
670
686
|
stock_location: stock_location,
|
671
|
-
inventory_units: [build(:inventory_unit)]
|
687
|
+
inventory_units: [build(:inventory_unit)]
|
672
688
|
)
|
673
689
|
end
|
674
690
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module Spree
|
4
|
-
describe ShippingCalculator, :
|
5
|
-
let(:variant1) { build(:variant, :
|
6
|
-
let(:variant2) { build(:variant, :
|
4
|
+
describe ShippingCalculator, type: :model do
|
5
|
+
let(:variant1) { build(:variant, price: 10) }
|
6
|
+
let(:variant2) { build(:variant, price: 20) }
|
7
7
|
|
8
8
|
let(:package) do
|
9
9
|
build(:stock_package, variants_contents: { variant1 => 2, variant2 => 1 })
|
@@ -1,14 +1,15 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module Spree
|
4
|
-
describe ShippingManifest, :
|
4
|
+
describe ShippingManifest, type: :model do
|
5
|
+
let!(:store) { create :store }
|
5
6
|
let(:order) { Order.create! }
|
6
7
|
let(:variant) { create :variant }
|
7
8
|
let!(:shipment) { create(:shipment, state: 'pending', order: order) }
|
8
9
|
let(:manifest) { described_class.new(inventory_units: inventory_units) }
|
9
10
|
|
10
|
-
def build_unit(variant, attrs={})
|
11
|
-
attrs = {order: order, variant: variant, shipment: shipment}.merge(attrs)
|
11
|
+
def build_unit(variant, attrs = {})
|
12
|
+
attrs = { order: order, variant: variant, shipment: shipment }.merge(attrs)
|
12
13
|
attrs[:line_item] = attrs[:order].contents.add(attrs[:variant])
|
13
14
|
InventoryUnit.new(attrs)
|
14
15
|
end
|
@@ -30,7 +31,7 @@ module Spree
|
|
30
31
|
expect(manifest.items[0]).to have_attributes(
|
31
32
|
variant: variant,
|
32
33
|
quantity: 1,
|
33
|
-
states: {"on_hand" => 1}
|
34
|
+
states: { "on_hand" => 1 }
|
34
35
|
)
|
35
36
|
end
|
36
37
|
end
|
@@ -42,7 +43,7 @@ module Spree
|
|
42
43
|
expect(manifest.items[0]).to have_attributes(
|
43
44
|
variant: variant,
|
44
45
|
quantity: 2,
|
45
|
-
states: {"on_hand" => 2}
|
46
|
+
states: { "on_hand" => 2 }
|
46
47
|
)
|
47
48
|
end
|
48
49
|
end
|
@@ -55,12 +56,12 @@ module Spree
|
|
55
56
|
expect(manifest.items[0]).to have_attributes(
|
56
57
|
variant: variant,
|
57
58
|
quantity: 1,
|
58
|
-
states: {"on_hand" => 1}
|
59
|
+
states: { "on_hand" => 1 }
|
59
60
|
)
|
60
61
|
expect(manifest.items[1]).to have_attributes(
|
61
62
|
variant: variant2,
|
62
63
|
quantity: 1,
|
63
|
-
states: {"on_hand" => 1}
|
64
|
+
states: { "on_hand" => 1 }
|
64
65
|
)
|
65
66
|
end
|
66
67
|
end
|
@@ -3,29 +3,13 @@ require 'spec_helper'
|
|
3
3
|
class DummyShippingCalculator < Spree::ShippingCalculator
|
4
4
|
end
|
5
5
|
|
6
|
-
describe Spree::ShippingMethod, :
|
7
|
-
let(:shipping_method){ create(:shipping_method) }
|
8
|
-
|
9
|
-
context 'calculators' do
|
10
|
-
it "Should reject calculators that don't inherit from Spree::ShippingCalculator" do
|
11
|
-
allow(Spree::ShippingMethod).to receive_message_chain(:spree_calculators, :shipping_methods).and_return([
|
12
|
-
Spree::Calculator::Shipping::FlatPercentItemTotal,
|
13
|
-
Spree::Calculator::Shipping::PriceSack,
|
14
|
-
Spree::Calculator::DefaultTax,
|
15
|
-
DummyShippingCalculator # included as regression test for https://github.com/spree/spree/issues/3109
|
16
|
-
])
|
17
|
-
|
18
|
-
expect(Spree::ShippingMethod.calculators).to eq([Spree::Calculator::Shipping::FlatPercentItemTotal, Spree::Calculator::Shipping::PriceSack, DummyShippingCalculator ])
|
19
|
-
expect(Spree::ShippingMethod.calculators).not_to eq([Spree::Calculator::DefaultTax])
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
6
|
+
describe Spree::ShippingMethod, type: :model do
|
23
7
|
# Regression test for https://github.com/spree/spree/issues/4492
|
24
8
|
context "#shipments" do
|
25
9
|
let!(:shipping_method) { create(:shipping_method) }
|
26
10
|
let!(:shipment) do
|
27
11
|
shipment = create(:shipment)
|
28
|
-
shipment.shipping_rates.create!(:
|
12
|
+
shipment.shipping_rates.create!(shipping_method: shipping_method)
|
29
13
|
shipment
|
30
14
|
end
|
31
15
|
|
@@ -53,12 +37,6 @@ describe Spree::ShippingMethod, :type => :model do
|
|
53
37
|
end
|
54
38
|
end
|
55
39
|
|
56
|
-
context 'factory' do
|
57
|
-
it "should set calculable correctly" do
|
58
|
-
expect(shipping_method.calculator.calculable).to eq(shipping_method)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
40
|
context "generating tracking URLs" do
|
63
41
|
context "shipping method has a tracking URL mask on file" do
|
64
42
|
let(:tracking_url) { "https://track-o-matic.com/:tracking" }
|
@@ -85,4 +63,151 @@ describe Spree::ShippingMethod, :type => :model do
|
|
85
63
|
expect(shipping_method.deleted_at).not_to be_blank
|
86
64
|
end
|
87
65
|
end
|
66
|
+
|
67
|
+
describe ".with_all_shipping_category_ids" do
|
68
|
+
let(:category1) { create(:shipping_category) }
|
69
|
+
let(:category2) { create(:shipping_category) }
|
70
|
+
|
71
|
+
def matching(categories)
|
72
|
+
described_class.with_all_shipping_category_ids(categories.map(&:id))
|
73
|
+
end
|
74
|
+
|
75
|
+
context "with one associated shipping category" do
|
76
|
+
let!(:shipping_method) { create(:shipping_method, shipping_categories: [category1]) }
|
77
|
+
|
78
|
+
it "should match the associated category" do
|
79
|
+
expect(matching([category1])).to eq [shipping_method]
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should not match the other category" do
|
83
|
+
expect(matching([category2])).to be_empty
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should not match both categories" do
|
87
|
+
expect(matching([category1, category2])).to be_empty
|
88
|
+
end
|
89
|
+
|
90
|
+
context "with additional joins" do
|
91
|
+
before do
|
92
|
+
shipping_method.zones << create(:zone)
|
93
|
+
end
|
94
|
+
it "should not match both categories" do
|
95
|
+
result =
|
96
|
+
described_class.
|
97
|
+
joins(:zones).
|
98
|
+
with_all_shipping_category_ids([category1.id, category2.id])
|
99
|
+
expect(result).to be_empty
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
context "with two associated shipping categories" do
|
105
|
+
let!(:shipping_method) { create(:shipping_method, shipping_categories: [category1, category2]) }
|
106
|
+
|
107
|
+
it "should match the associated category" do
|
108
|
+
expect(matching([category1])).to eq [shipping_method]
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should match both categories" do
|
112
|
+
expect(matching([category1, category2])).to eq [shipping_method]
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
context "with several shipping methods" do
|
117
|
+
let!(:shipping_method1) { create(:shipping_method, shipping_categories: [category1]) }
|
118
|
+
let!(:shipping_method2) { create(:shipping_method, shipping_categories: [category1, category2]) }
|
119
|
+
let!(:shipping_method3) { create(:shipping_method, shipping_categories: [category2]) }
|
120
|
+
|
121
|
+
it "matches correctly" do
|
122
|
+
expect(matching([category1])).to match_array [shipping_method1, shipping_method2]
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
describe ".available_in_stock_location" do
|
128
|
+
let!(:stock_location) { create :stock_location }
|
129
|
+
let!(:other_stock_location) { create :stock_location }
|
130
|
+
|
131
|
+
subject { described_class.available_in_stock_location(stock_location) }
|
132
|
+
|
133
|
+
context "when available_to_all" do
|
134
|
+
let!(:shipping_method) { create(:shipping_method, available_to_all: true) }
|
135
|
+
|
136
|
+
it "returns the shipping_method" do
|
137
|
+
is_expected.to eq [shipping_method]
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
context "when in stock location" do
|
142
|
+
let!(:shipping_method) { create(:shipping_method, available_to_all: false, stock_locations: [stock_location]) }
|
143
|
+
|
144
|
+
it "returns the shipping_method" do
|
145
|
+
is_expected.to eq [shipping_method]
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
context "when available_to_all and in stock location" do
|
150
|
+
let!(:shipping_method) { create(:shipping_method, available_to_all: true, stock_locations: [stock_location]) }
|
151
|
+
|
152
|
+
it "returns the shipping_method" do
|
153
|
+
is_expected.to eq [shipping_method]
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
context "when in no stock locations" do
|
158
|
+
let!(:shipping_method) { create(:shipping_method, available_to_all: false) }
|
159
|
+
|
160
|
+
it "returns no results" do
|
161
|
+
is_expected.to be_empty
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
context "when in another stock location" do
|
166
|
+
let!(:shipping_method) { create(:shipping_method, available_to_all: false, stock_locations: [other_stock_location]) }
|
167
|
+
|
168
|
+
it "returns no results" do
|
169
|
+
is_expected.to be_empty
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
context "when available_to_all and in another stock location" do
|
174
|
+
let!(:shipping_method) { create(:shipping_method, available_to_all: true, stock_locations: [other_stock_location]) }
|
175
|
+
|
176
|
+
it "returns the shipping_method" do
|
177
|
+
is_expected.to eq [shipping_method]
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
context "when multiple shipping methods match" do
|
182
|
+
let!(:shipping_method1) { create(:shipping_method, available_to_all: true, stock_locations: [other_stock_location]) }
|
183
|
+
let!(:shipping_method2) { create(:shipping_method, available_to_all: false, stock_locations: [stock_location]) }
|
184
|
+
let!(:shipping_method3) { create(:shipping_method, available_to_all: false, stock_locations: [other_stock_location]) }
|
185
|
+
|
186
|
+
it "returns both matching shipping_methods" do
|
187
|
+
is_expected.to match_array([shipping_method1, shipping_method2])
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
describe ".available_for_address" do
|
193
|
+
let!(:included_country) { create(:country, iso: "US") }
|
194
|
+
let!(:excluded_country) { create(:country, iso: "CA") }
|
195
|
+
let!(:included_zone) { create(:zone, countries: [included_country]) }
|
196
|
+
let!(:excluded_zone) { create(:zone, countries: [excluded_country]) }
|
197
|
+
let!(:shipping_method) { create(:shipping_method, zones: [included_zone]) }
|
198
|
+
|
199
|
+
let(:matches) { described_class.available_for_address(address) }
|
200
|
+
subject { matches }
|
201
|
+
|
202
|
+
context "address included in zone" do
|
203
|
+
let!(:address) { create(:address, country_iso_code: 'US') }
|
204
|
+
|
205
|
+
it { is_expected.to include(shipping_method) }
|
206
|
+
end
|
207
|
+
|
208
|
+
context "address included other zone" do
|
209
|
+
let!(:address) { create(:address, country_iso_code: 'CA') }
|
210
|
+
it { is_expected.to_not include(shipping_method) }
|
211
|
+
end
|
212
|
+
end
|
88
213
|
end
|