spree_core 3.0.9 → 3.2.0
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/javascripts/{spree.js.coffee.erb → spree.js.coffee} +13 -4
- data/app/helpers/spree/base_helper.rb +5 -2
- data/app/helpers/spree/products_helper.rb +37 -12
- data/app/mailers/spree/base_mailer.rb +11 -2
- data/app/mailers/spree/reimbursement_mailer.rb +6 -6
- data/app/models/concerns/spree/acts_as_taggable.rb +11 -0
- data/app/models/concerns/spree/adjustment_source.rb +3 -10
- data/app/models/concerns/spree/default_price.rb +7 -1
- data/app/models/concerns/spree/named_type.rb +1 -1
- data/app/models/concerns/spree/ransackable_attributes.rb +6 -1
- data/app/models/concerns/spree/user_api_authentication.rb +7 -1
- data/app/models/concerns/spree/user_methods.rb +57 -0
- data/app/models/concerns/spree/user_reporting.rb +2 -2
- data/app/models/concerns/spree/vat_price_calculation.rb +47 -0
- data/app/models/spree/ability.rb +9 -1
- data/app/models/spree/address.rb +75 -45
- data/app/models/spree/adjustable/adjuster/base.rb +25 -0
- data/app/models/spree/adjustable/adjuster/promotion.rb +41 -0
- data/app/models/spree/adjustable/adjuster/tax.rb +26 -0
- data/app/models/spree/adjustable/adjustments_updater.rb +22 -45
- data/app/models/spree/adjustment.rb +8 -10
- data/app/models/spree/app_configuration.rb +14 -8
- data/app/models/spree/base.rb +5 -1
- data/app/models/spree/calculator/default_tax.rb +2 -10
- data/app/models/spree/calculator/free_shipping.rb +6 -5
- data/app/models/spree/calculator.rb +1 -6
- data/app/models/spree/classification.rb +7 -3
- data/app/models/spree/country.rb +15 -3
- data/app/models/spree/credit_card.rb +37 -38
- data/app/models/spree/customer_return.rb +7 -15
- data/app/models/spree/gateway/bogus.rb +12 -12
- data/app/models/spree/gateway/bogus_simple.rb +4 -4
- data/app/models/spree/gateway.rb +8 -7
- data/app/models/spree/image.rb +3 -3
- data/app/models/spree/inventory_unit.rb +13 -14
- data/app/models/spree/legacy_user.rb +1 -14
- data/app/models/spree/line_item.rb +79 -67
- data/app/models/spree/log_entry.rb +1 -4
- data/app/models/spree/option_type.rb +15 -6
- data/app/models/spree/option_type_prototype.rb +9 -0
- data/app/models/spree/option_value.rb +11 -3
- data/app/models/spree/option_value_variant.rb +6 -0
- data/app/models/spree/order/checkout.rb +10 -13
- data/app/models/spree/order/currency_updater.rb +1 -1
- data/app/models/spree/order/store_credit.rb +96 -0
- data/app/models/spree/order.rb +105 -68
- data/app/models/spree/order_contents.rb +13 -7
- data/app/models/spree/order_inventory.rb +16 -9
- data/app/models/spree/order_promotion.rb +6 -0
- data/app/models/spree/order_updater.rb +4 -8
- data/app/models/spree/payment/gateway_options.rb +8 -4
- data/app/models/spree/payment/processing.rb +1 -1
- data/app/models/spree/payment.rb +55 -29
- data/app/models/spree/payment_method/store_credit.rb +130 -0
- data/app/models/spree/payment_method.rb +18 -13
- data/app/models/spree/preference.rb +1 -1
- data/app/models/spree/preferences/store.rb +2 -2
- data/app/models/spree/price.rb +16 -6
- data/app/models/spree/product/scopes.rb +22 -13
- data/app/models/spree/product.rb +83 -52
- data/app/models/spree/product_option_type.rb +7 -2
- data/app/models/spree/product_promotion_rule.rb +9 -0
- data/app/models/spree/product_property.rb +9 -10
- data/app/models/spree/promotion/actions/create_adjustment.rb +1 -1
- data/app/models/spree/promotion/actions/create_line_items.rb +21 -3
- data/app/models/spree/promotion/rules/country.rb +23 -0
- data/app/models/spree/promotion/rules/option_value.rb +13 -10
- data/app/models/spree/promotion/rules/product.rb +3 -1
- data/app/models/spree/promotion/rules/taxon.rb +3 -2
- data/app/models/spree/promotion/rules/user.rb +4 -4
- data/app/models/spree/promotion.rb +55 -19
- data/app/models/spree/promotion_action.rb +3 -3
- data/app/models/spree/promotion_category.rb +1 -1
- data/app/models/spree/promotion_handler/cart.rb +3 -17
- data/app/models/spree/promotion_handler/coupon.rb +22 -22
- data/app/models/spree/promotion_handler/page.rb +2 -2
- data/app/models/spree/promotion_rule_taxon.rb +9 -0
- data/app/models/spree/promotion_rule_user.rb +9 -0
- data/app/models/spree/property.rb +2 -1
- data/app/models/spree/property_prototype.rb +9 -0
- data/app/models/spree/prototype.rb +8 -3
- data/app/models/spree/prototype_taxon.rb +9 -0
- data/app/models/spree/refund.rb +10 -7
- data/app/models/spree/refund_reason.rb +2 -2
- data/app/models/spree/reimbursement.rb +12 -16
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +23 -6
- data/app/models/spree/reimbursement_type/store_credit.rb +28 -0
- data/app/models/spree/reimbursement_type.rb +5 -1
- data/app/models/spree/return_authorization.rb +8 -13
- data/app/models/spree/return_authorization_reason.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +1 -1
- data/app/models/spree/return_item.rb +14 -13
- data/app/models/spree/role.rb +3 -2
- data/app/models/spree/role_user.rb +6 -0
- data/app/models/spree/shipment.rb +23 -30
- data/app/models/spree/shipment_handler.rb +2 -2
- data/app/models/spree/shipping_category.rb +6 -3
- data/app/models/spree/shipping_method.rb +12 -11
- data/app/models/spree/shipping_method_zone.rb +6 -0
- data/app/models/spree/shipping_rate.rb +16 -29
- data/app/models/spree/state.rb +3 -2
- data/app/models/spree/state_change.rb +1 -1
- data/app/models/spree/stock/adjuster.rb +9 -2
- data/app/models/spree/stock/content_item.rb +10 -12
- data/app/models/spree/stock/coordinator.rb +21 -15
- data/app/models/spree/stock/estimator.rb +28 -30
- data/app/models/spree/stock/inventory_unit_builder.rb +2 -10
- data/app/models/spree/stock/package.rb +11 -3
- data/app/models/spree/stock/packer.rb +16 -6
- data/app/models/spree/stock/prioritizer.rb +25 -15
- data/app/models/spree/stock/quantifier.rb +5 -5
- data/app/models/spree/stock/splitter/backordered.rb +2 -2
- data/app/models/spree/stock/splitter/shipping_category.rb +6 -1
- data/app/models/spree/stock_item.rb +15 -18
- data/app/models/spree/stock_location.rb +4 -7
- data/app/models/spree/stock_movement.rb +16 -9
- data/app/models/spree/stock_transfer.rb +11 -12
- data/app/models/spree/store.rb +15 -6
- data/app/models/spree/store_credit.rb +252 -0
- data/app/models/spree/store_credit_category.rb +22 -0
- data/app/models/spree/store_credit_event.rb +38 -0
- data/app/models/spree/store_credit_type.rb +6 -0
- data/app/models/spree/tag.rb +4 -0
- data/app/models/spree/tax_category.rb +3 -8
- data/app/models/spree/tax_rate.rb +61 -121
- data/app/models/spree/taxon.rb +12 -6
- data/app/models/spree/tracker.rb +12 -1
- data/app/models/spree/validations/db_maximum_length_validator.rb +2 -1
- data/app/models/spree/variant.rb +94 -49
- data/app/models/spree/zone.rb +23 -19
- data/app/models/spree/zone_member.rb +6 -0
- data/app/validators/db_maximum_length_validator.rb +11 -0
- data/app/views/layouts/spree/base_mailer.html.erb +38 -781
- data/app/views/spree/order_mailer/_adjustment.html.erb +8 -0
- data/app/views/spree/order_mailer/_subtotal.html.erb +8 -0
- data/app/views/spree/order_mailer/_total.html.erb +8 -0
- data/app/views/spree/order_mailer/cancel_email.html.erb +13 -28
- data/app/views/spree/order_mailer/cancel_email.text.erb +1 -1
- data/app/views/spree/order_mailer/confirm_email.html.erb +49 -63
- data/app/views/spree/order_mailer/confirm_email.text.erb +1 -1
- data/app/views/spree/shared/_base_mailer_header.html.erb +5 -7
- data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +777 -0
- data/app/views/spree/shared/_error_messages.html.erb +1 -1
- data/app/views/spree/shared/_mailer_line_item.html.erb +12 -0
- data/app/views/spree/shared/_paths.html.erb +8 -0
- data/app/views/spree/shipment_mailer/shipped_email.html.erb +21 -14
- data/app/views/spree/shipment_mailer/shipped_email.text.erb +3 -3
- data/config/initializers/acts_as_taggable_on.rb +9 -0
- data/config/initializers/friendly_id.rb +0 -81
- data/config/initializers/user_class_extensions.rb +7 -38
- data/config/locales/en.yml +137 -12
- data/config/routes.rb +7 -0
- data/db/default/spree/countries.rb +5 -1
- data/db/default/spree/default_reimbursement_type.rb +1 -1
- data/db/default/spree/roles.rb +2 -2
- data/db/default/spree/states.rb +1 -1
- data/db/default/spree/zones.rb +4 -5
- data/db/migrate/20120831092320_spree_one_two.rb +101 -101
- data/db/migrate/20120831092359_spree_promo_one_two.rb +14 -14
- data/db/migrate/20120905145253_add_tax_rate_label.rb +1 -1
- data/db/migrate/20120905151823_add_toggle_tax_rate_display.rb +2 -2
- data/db/migrate/20120929093553_remove_unused_preference_columns.rb +4 -4
- data/db/migrate/20121009142519_add_lock_version_to_variant.rb +2 -2
- data/db/migrate/20121010142909_add_states_required_to_countries.rb +2 -2
- data/db/migrate/20121012071449_add_on_demand_to_product_and_variant.rb +3 -3
- data/db/migrate/20121017010007_remove_not_null_constraint_from_products_on_hand.rb +5 -5
- data/db/migrate/20121031162139_split_prices_from_variants.rb +10 -10
- data/db/migrate/20121107003422_remove_not_null_from_spree_prices_amount.rb +3 -3
- data/db/migrate/20121107184631_add_currency_to_line_items.rb +1 -1
- data/db/migrate/20121107194006_add_currency_to_orders.rb +1 -1
- data/db/migrate/20121109173623_add_cost_currency_to_variants.rb +2 -2
- data/db/migrate/20121111231553_remove_display_on_from_payment_methods.rb +1 -1
- data/db/migrate/20121124203911_add_position_to_taxonomies.rb +2 -2
- data/db/migrate/20121126040517_add_last_ip_to_spree_orders.rb +1 -1
- data/db/migrate/20121213162028_add_state_to_spree_adjustments.rb +1 -1
- data/db/migrate/20130114053446_add_display_on_to_spree_payment_methods.rb +1 -1
- data/db/migrate/20130120201805_add_position_to_product_properties.spree.rb +2 -2
- data/db/migrate/20130203232234_add_identifier_to_spree_payments.rb +1 -1
- data/db/migrate/20130207155350_add_order_id_index_to_payments.rb +1 -1
- data/db/migrate/20130208032954_add_primary_to_spree_products_taxons.rb +1 -1
- data/db/migrate/20130211190146_create_spree_stock_items.rb +2 -2
- data/db/migrate/20130211191120_create_spree_stock_locations.rb +1 -1
- data/db/migrate/20130213191427_create_default_stock.rb +1 -2
- data/db/migrate/20130222032153_add_order_id_index_to_shipments.rb +1 -1
- data/db/migrate/20130226032817_change_meta_description_on_spree_products_to_text.rb +2 -2
- data/db/migrate/20130226191231_add_stock_location_id_to_spree_shipments.rb +1 -1
- data/db/migrate/20130227143905_add_pending_to_inventory_unit.rb +3 -3
- data/db/migrate/20130228164411_remove_on_demand_from_product_and_variant.rb +1 -1
- data/db/migrate/20130228210442_create_shipping_method_zone.rb +3 -3
- data/db/migrate/20130301162745_remove_shipping_category_id_from_shipping_method.rb +1 -1
- data/db/migrate/20130301162924_create_shipping_method_categories.rb +3 -3
- data/db/migrate/20130301205200_add_tracking_url_to_spree_shipping_methods.rb +1 -1
- data/db/migrate/20130304162240_create_spree_shipping_rates.rb +5 -5
- data/db/migrate/20130304192936_remove_category_match_attributes_from_shipping_method.rb +1 -1
- data/db/migrate/20130305143310_create_stock_movements.rb +1 -1
- data/db/migrate/20130306181701_add_address_fields_to_stock_location.rb +3 -3
- data/db/migrate/20130306191917_add_active_field_to_stock_locations.rb +2 -2
- data/db/migrate/20130306195650_add_backorderable_to_stock_item.rb +2 -2
- data/db/migrate/20130307161754_add_default_quantity_to_stock_movement.rb +2 -2
- data/db/migrate/20130318151756_add_source_and_destination_to_stock_movements.rb +1 -1
- data/db/migrate/20130319062004_change_orders_total_precision.rb +5 -5
- data/db/migrate/20130319063911_change_spree_payments_amount_precision.rb +2 -2
- data/db/migrate/20130319064308_change_spree_return_authorization_amount_precision.rb +2 -2
- data/db/migrate/20130319082943_change_adjustments_amount_precision.rb +2 -2
- data/db/migrate/20130319183250_add_originator_to_stock_movement.rb +1 -1
- data/db/migrate/20130319190507_drop_source_and_destination_from_stock_movement.rb +3 -3
- data/db/migrate/20130325163316_migrate_inventory_unit_sold_to_on_hand.rb +3 -3
- data/db/migrate/20130326175857_add_stock_location_to_rma.rb +1 -1
- data/db/migrate/20130328130308_update_shipment_state_for_canceled_orders.rb +1 -1
- data/db/migrate/20130328195253_add_seo_metas_to_taxons.rb +1 -1
- data/db/migrate/20130329134939_remove_stock_item_and_variant_lock.rb +1 -1
- data/db/migrate/20130413230529_add_name_to_spree_credit_cards.rb +1 -1
- data/db/migrate/20130414000512_update_name_fields_on_spree_credit_cards.rb +2 -2
- data/db/migrate/20130417120034_add_index_to_source_columns_on_adjustments.rb +1 -1
- data/db/migrate/20130417120035_update_adjustment_states.rb +3 -3
- data/db/migrate/20130417123427_add_shipping_rates_to_shipments.rb +4 -4
- data/db/migrate/20130418125341_create_spree_stock_transfers.rb +1 -1
- data/db/migrate/20130423110707_drop_products_count_on_hand.rb +1 -1
- data/db/migrate/20130423223847_set_default_shipping_rate_cost.rb +1 -1
- data/db/migrate/20130509115210_add_number_to_stock_transfer.rb +1 -1
- data/db/migrate/20130514151929_add_sku_index_to_spree_variants.rb +1 -1
- data/db/migrate/20130515180736_add_backorderable_default_to_spree_stock_location.rb +1 -1
- data/db/migrate/20130516151222_add_propage_all_variants_to_spree_stock_location.rb +1 -1
- data/db/migrate/20130611054351_rename_shipping_methods_zones_to_spree_shipping_methods_zones.rb +1 -1
- data/db/migrate/20130611185927_add_user_id_index_to_spree_orders.rb +1 -1
- data/db/migrate/20130618041418_add_updated_at_to_spree_countries.rb +1 -1
- data/db/migrate/20130619012236_add_updated_at_to_spree_states.rb +1 -1
- data/db/migrate/20130626232741_add_cvv_result_code_and_cvv_result_message_to_spree_payments.rb +1 -1
- data/db/migrate/20130628021056_add_unique_index_to_permalink_on_spree_products.rb +2 -2
- data/db/migrate/20130628022817_add_unique_index_to_orders_shipments_and_stock_transfers.rb +4 -4
- data/db/migrate/20130708052307_add_deleted_at_to_spree_tax_rates.rb +1 -1
- data/db/migrate/20130711200933_remove_lock_version_from_inventory_units.rb +1 -1
- data/db/migrate/20130718042445_add_cost_price_to_line_item.rb +2 -2
- data/db/migrate/20130718233855_set_backorderable_to_default_to_false.rb +3 -3
- data/db/migrate/20130725031716_add_created_by_id_to_spree_orders.rb +1 -1
- data/db/migrate/20130729214043_index_completed_at_on_spree_orders.rb +1 -1
- data/db/migrate/20130802014537_add_tax_category_id_to_spree_line_items.rb +1 -1
- data/db/migrate/20130802022321_migrate_tax_categories_to_line_items.rb +1 -1
- data/db/migrate/20130806022521_drop_spree_mail_methods.rb +1 -1
- data/db/migrate/20130806145853_set_default_stock_location_on_shipments.rb +1 -1
- data/db/migrate/20130807024301_upgrade_adjustments.rb +4 -4
- data/db/migrate/20130807024302_rename_adjustment_fields.rb +1 -1
- data/db/migrate/20130809164245_add_admin_name_column_to_spree_shipping_methods.rb +1 -1
- data/db/migrate/20130809164330_add_admin_name_column_to_spree_stock_locations.rb +1 -1
- data/db/migrate/20130813004002_add_shipment_total_to_spree_orders.rb +2 -2
- data/db/migrate/20130813140619_expand_order_number_size.rb +3 -3
- data/db/migrate/20130813232134_rename_activators_to_promotions.rb +1 -1
- data/db/migrate/20130815000406_add_adjustment_total_to_line_items.rb +2 -2
- data/db/migrate/20130815024413_add_adjustment_total_to_shipments.rb +2 -2
- data/db/migrate/20130826062534_add_depth_to_spree_taxons.rb +1 -1
- data/db/migrate/20130828234942_add_tax_total_to_line_items_shipments_and_orders.rb +2 -2
- data/db/migrate/20130830001033_add_shipping_category_to_shipping_methods_and_products.rb +2 -2
- data/db/migrate/20130830001159_migrate_old_shipping_calculators.rb +1 -1
- data/db/migrate/20130903183026_add_code_to_spree_promotion_rules.rb +1 -1
- data/db/migrate/20130909115621_change_states_required_for_countries.rb +1 -1
- data/db/migrate/20130915032339_add_deleted_at_to_spree_stock_items.rb +1 -1
- data/db/migrate/20130917024658_remove_promotions_event_name_field.rb +2 -2
- data/db/migrate/20130924040529_add_promo_total_to_line_items_and_shipments_and_orders.rb +1 -1
- data/db/migrate/20131001013410_remove_unused_credit_card_fields.rb +2 -2
- data/db/migrate/20131026154747_add_track_inventory_to_variant.rb +2 -2
- data/db/migrate/20131107132123_add_tax_category_to_variants.rb +1 -1
- data/db/migrate/20131113035136_add_channel_to_spree_orders.rb +1 -1
- data/db/migrate/20131118043959_add_included_to_adjustments.rb +2 -2
- data/db/migrate/20131118050234_rename_tax_total_fields.rb +1 -1
- data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +1 -1
- data/db/migrate/20131120234456_add_updated_at_to_variants.rb +1 -1
- data/db/migrate/20131127001002_add_position_to_classifications.rb +1 -1
- data/db/migrate/20131211112807_create_spree_orders_promotions.rb +2 -2
- data/db/migrate/20131211192741_unique_shipping_method_categories.rb +1 -1
- data/db/migrate/20131218054603_add_item_count_to_spree_orders.rb +2 -2
- data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +1 -1
- data/db/migrate/20140106224208_rename_permalink_to_slug_for_products.rb +1 -1
- data/db/migrate/20140120160805_add_index_to_variant_id_and_currency_on_prices.rb +1 -1
- data/db/migrate/20140124023232_rename_activator_id_in_rules_and_actions_to_promotion_id.rb +1 -1
- data/db/migrate/20140129024326_add_deleted_at_to_spree_prices.rb +1 -1
- data/db/migrate/20140203161722_add_approver_id_and_approved_at_to_orders.rb +1 -1
- data/db/migrate/20140204115338_add_confirmation_delivered_to_spree_orders.rb +1 -1
- data/db/migrate/20140204192230_add_auto_capture_to_payment_methods.rb +1 -1
- data/db/migrate/20140205120320_create_spree_payment_capture_events.rb +1 -1
- data/db/migrate/20140205144710_add_uncaptured_amount_to_payments.rb +1 -1
- data/db/migrate/20140205181631_default_variant_weight_to_zero.rb +1 -1
- data/db/migrate/20140207085910_add_tax_category_id_to_shipping_methods.rb +1 -1
- data/db/migrate/20140207093021_add_tax_rate_id_to_shipping_rates.rb +1 -1
- data/db/migrate/20140211040159_add_pre_tax_amount_to_line_items_and_shipments.rb +1 -1
- data/db/migrate/20140213184916_add_more_indexes.rb +1 -1
- data/db/migrate/20140219060952_add_considered_risky_to_orders.rb +2 -2
- data/db/migrate/20140227112348_add_preference_store_to_everything.rb +1 -1
- data/db/migrate/20140307235515_add_user_id_to_spree_credit_cards.rb +1 -1
- data/db/migrate/20140309023735_migrate_old_preferences.rb +1 -1
- data/db/migrate/20140309024355_create_spree_stores.rb +2 -2
- data/db/migrate/20140309033438_create_store_from_preferences.rb +2 -2
- data/db/migrate/20140315053743_add_timestamps_to_spree_assets.rb +1 -1
- data/db/migrate/20140318191500_create_spree_taxons_promotion_rules.rb +1 -1
- data/db/migrate/20140331100557_add_additional_store_fields.rb +1 -1
- data/db/migrate/20140410141842_add_many_missing_indexes.rb +1 -1
- data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +1 -1
- data/db/migrate/20140415041315_add_user_id_created_by_id_index_to_order.rb +1 -1
- data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +5 -5
- data/db/migrate/20140518174634_add_token_to_spree_orders.rb +1 -1
- data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +2 -2
- data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +1 -1
- data/db/migrate/20140604135309_drop_credit_card_first_name_and_last_name.rb +1 -1
- data/db/migrate/20140609201656_add_deleted_at_to_spree_promotion_actions.rb +1 -1
- data/db/migrate/20140616202624_remove_uncaptured_amount_from_spree_payments.rb +1 -1
- data/db/migrate/20140625214618_create_spree_refunds.rb +1 -1
- data/db/migrate/20140702140656_create_spree_return_authorization_inventory_unit.rb +1 -1
- data/db/migrate/20140707125621_rename_return_authorization_inventory_unit_to_return_items.rb +1 -1
- data/db/migrate/20140709160534_backfill_line_item_pre_tax_amount.rb +1 -1
- data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +2 -2
- data/db/migrate/20140710181204_add_amount_fields_to_return_items.rb +1 -1
- data/db/migrate/20140710190048_drop_return_authorization_amount.rb +1 -1
- data/db/migrate/20140713140455_create_spree_return_authorization_reasons.rb +1 -1
- data/db/migrate/20140713140527_create_spree_refund_reasons.rb +1 -1
- data/db/migrate/20140713142214_rename_return_authorization_reason.rb +1 -1
- data/db/migrate/20140715182625_create_spree_promotion_categories.rb +1 -1
- data/db/migrate/20140716204111_drop_received_at_on_return_items.rb +1 -1
- data/db/migrate/20140716212330_add_reception_and_acceptance_status_to_return_items.rb +1 -1
- data/db/migrate/20140717155155_create_default_refund_reason.rb +1 -1
- data/db/migrate/20140717185932_add_default_to_spree_stock_locations.rb +1 -1
- data/db/migrate/20140718133010_create_spree_customer_returns.rb +1 -1
- data/db/migrate/20140718133349_add_customer_return_id_to_return_item.rb +1 -1
- data/db/migrate/20140718195325_create_friendly_id_slugs.rb +5 -5
- data/db/migrate/20140723004419_rename_spree_refund_return_authorization_id.rb +1 -1
- data/db/migrate/20140723152808_increase_return_item_pre_tax_amount_precision.rb +1 -1
- data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +2 -2
- data/db/migrate/20140725131539_create_spree_reimbursements.rb +1 -1
- data/db/migrate/20140728225422_add_promotionable_to_spree_products.rb +1 -1
- data/db/migrate/20140729133613_add_exchange_inventory_unit_foreign_keys.rb +1 -1
- data/db/migrate/20140730155938_add_acceptance_status_errors_to_return_item.rb +1 -1
- data/db/migrate/20140731150017_create_spree_reimbursement_types.rb +1 -1
- data/db/migrate/20140804185157_add_default_to_shipment_cost.rb +1 -1
- data/db/migrate/20140805171035_add_default_to_spree_credit_cards.rb +1 -1
- data/db/migrate/20140805171219_make_existing_credit_cards_default.rb +1 -1
- data/db/migrate/20140806144901_add_type_to_reimbursement_type.rb +1 -1
- data/db/migrate/20140808184039_create_spree_reimbursement_credits.rb +1 -1
- data/db/migrate/20140827170513_add_meta_title_to_spree_products.rb +1 -1
- data/db/migrate/20140911173301_add_kind_to_zone.rb +1 -1
- data/db/migrate/20140924164824_add_code_to_spree_tax_categories.rb +1 -1
- data/db/migrate/20140927193717_default_pre_tax_amount_should_be_zero.rb +1 -1
- data/db/migrate/20141002191113_add_code_to_spree_shipping_methods.rb +1 -1
- data/db/migrate/20141007230328_add_cancel_audit_fields_to_spree_orders.rb +1 -1
- data/db/migrate/20141009204607_add_store_id_to_orders.rb +1 -1
- data/db/migrate/20141012083513_create_spree_taxons_prototypes.rb +1 -1
- data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +1 -1
- data/db/migrate/20141023005240_add_counter_cache_from_spree_variants_to_spree_stock_items.rb +2 -7
- data/db/migrate/20141101231208_fix_adjustment_order_presence.rb +1 -1
- data/db/migrate/20141105213646_update_classifications_positions.rb +1 -1
- data/db/migrate/20141120135441_add_guest_token_index_to_spree_orders.rb +1 -1
- data/db/migrate/20141215232040_remove_token_permissions_table.rb +1 -1
- data/db/migrate/20141215235502_remove_extra_products_slug_index.rb +1 -1
- data/db/migrate/20141217215630_update_product_slug_index.rb +1 -1
- data/db/migrate/20141218025915_rename_identifier_to_number_for_payment.rb +1 -1
- data/db/migrate/20150118210639_create_spree_store_credits.rb +24 -0
- data/db/migrate/20150118211500_create_spree_store_credit_categories.rb +8 -0
- data/db/migrate/20150118212051_create_spree_store_credit_events.rb +17 -0
- data/db/migrate/20150118212101_create_spree_store_credit_types.rb +10 -0
- data/db/migrate/20150121022521_remove_environment_from_payment_method.rb +1 -1
- data/db/migrate/20150122145607_add_resellable_to_return_items.rb +1 -1
- data/db/migrate/20150122202432_add_code_to_spree_promotion_categories.rb +1 -1
- data/db/migrate/20150128032538_remove_environment_from_tracker.rb +1 -1
- data/db/migrate/20150128060325_remove_spree_configurations.rb +1 -1
- data/db/migrate/20150216173445_add_index_to_spree_stock_items_variant_id.rb +1 -1
- data/db/migrate/20150309161154_ensure_payments_have_numbers.rb +1 -1
- data/db/migrate/20150314013438_add_missing_indexes_on_spree_tables.rb +67 -0
- data/db/migrate/20150317174308_remove_duplicated_indexes_from_multi_columns.rb +18 -0
- data/db/migrate/20150324104002_remove_user_index_from_spree_state_changes.rb +14 -0
- data/db/migrate/20150515211137_fix_adjustment_order_id.rb +1 -1
- data/db/migrate/20150522071831_add_position_to_spree_payment_methods.rb +5 -0
- data/db/migrate/20150522181728_add_deleted_at_to_friendly_id_slugs.rb +1 -1
- data/db/migrate/20150609093816_increase_scale_on_pre_tax_amounts.rb +1 -1
- data/db/migrate/20150626181949_add_taxable_adjustment_total_to_line_item.rb +19 -0
- data/db/migrate/20150627090949_migrate_payment_methods_display.rb +12 -0
- data/db/migrate/20150707204155_enable_acts_as_paranoid_on_calculators.rb +1 -1
- data/db/migrate/20150714154102_spree_payment_method_store_credits.rb +12 -0
- data/db/migrate/20150726141425_rename_has_and_belongs_to_associations_to_model_names.rb +18 -0
- data/db/migrate/20150727191614_spree_store_credit_types.rb +11 -0
- data/db/migrate/20150819154308_add_discontinued_to_products_and_variants.rb +68 -0
- data/db/migrate/20151220072838_remove_shipping_method_id_from_spree_orders.rb +13 -0
- data/db/migrate/20160207191757_add_id_column_to_earlier_habtm_tables.rb +16 -0
- data/db/migrate/20160219165458_add_indexes.rb +14 -0
- data/db/migrate/20160509064646_remove_counter_cache_from_spree_variants_to_spree_stock_items.rb +10 -0
- data/db/migrate/20160511071954_acts_as_taggable_on_spree_migration.rb +40 -0
- data/db/migrate/20160511072249_change_collation_for_spree_tag_names.rb +9 -0
- data/db/migrate/20160511072335_add_missing_indexes_to_spree_taggings.rb +14 -0
- data/db/migrate/20160608090604_add_zipcode_required_to_spree_countries.rb +7 -0
- data/db/migrate/20161014145148_add_created_at_to_variant.rb +8 -0
- data/db/migrate/20161014152814_add_null_false_to_spree_variants_timestamps.rb +6 -0
- data/lib/generators/spree/custom_user/custom_user_generator.rb +1 -1
- data/lib/generators/spree/custom_user/templates/authentication_helpers.rb.tt +3 -3
- data/lib/generators/spree/custom_user/templates/migration.rb.tt +2 -2
- data/lib/generators/spree/dummy/dummy_generator.rb +11 -11
- data/lib/generators/spree/dummy/templates/rails/application.rb +1 -1
- data/lib/generators/spree/dummy/templates/rails/database.yml +38 -28
- data/lib/generators/spree/dummy/templates/rails/test.rb +4 -3
- data/lib/generators/spree/install/install_generator.rb +37 -13
- data/lib/spree/core/controller_helpers/auth.rb +1 -1
- data/lib/spree/core/controller_helpers/common.rb +6 -6
- data/lib/spree/core/controller_helpers/order.rb +9 -10
- data/lib/spree/core/controller_helpers/respond_with.rb +1 -1
- data/lib/spree/core/controller_helpers/search.rb +1 -1
- data/lib/spree/core/controller_helpers/store.rb +29 -0
- data/lib/spree/core/delegate_belongs_to.rb +4 -4
- data/lib/spree/core/engine.rb +39 -20
- data/lib/spree/core/environment.rb +1 -1
- data/lib/spree/core/importer/order.rb +37 -40
- data/lib/spree/core/importer/product.rb +2 -2
- data/lib/spree/core/number_generator.rb +52 -0
- data/lib/spree/core/product_duplicator.rb +1 -1
- data/lib/spree/core/product_filters.rb +2 -2
- data/lib/spree/core/search/base.rb +4 -3
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/core.rb +16 -0
- data/lib/spree/i18n/initializer.rb +1 -1
- data/lib/spree/localized_number.rb +3 -1
- data/lib/spree/permitted_attributes.rb +6 -3
- data/lib/spree/testing_support/caching.rb +3 -3
- data/lib/spree/testing_support/common_rake.rb +3 -3
- data/lib/spree/testing_support/controller_requests.rb +4 -4
- data/lib/spree/testing_support/factories/address_factory.rb +1 -1
- data/lib/spree/testing_support/factories/country_factory.rb +2 -2
- data/lib/spree/testing_support/factories/line_item_factory.rb +0 -1
- data/lib/spree/testing_support/factories/order_factory.rb +3 -2
- data/lib/spree/testing_support/factories/payment_factory.rb +5 -0
- data/lib/spree/testing_support/factories/payment_method_factory.rb +8 -0
- data/lib/spree/testing_support/factories/promotion_rule_factory.rb +5 -0
- data/lib/spree/testing_support/factories/refund_factory.rb +9 -1
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +2 -0
- data/lib/spree/testing_support/factories/state_factory.rb +2 -2
- data/lib/spree/testing_support/factories/store_credit_category_factory.rb +9 -0
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +8 -0
- data/lib/spree/testing_support/factories/store_credit_factory.rb +17 -0
- data/lib/spree/testing_support/factories/store_credit_type_factory.rb +11 -0
- data/lib/spree/testing_support/factories/tag_factory.rb +5 -0
- data/lib/spree/testing_support/factories/user_factory.rb +1 -1
- data/lib/spree/testing_support/factories/zone_member_factory.rb +6 -0
- data/lib/spree/testing_support/factories.rb +3 -3
- data/lib/spree/testing_support/kernel.rb +18 -0
- data/lib/spree/testing_support/microdata.rb +189 -0
- data/lib/spree/testing_support/order_walkthrough.rb +4 -4
- data/lib/tasks/core.rake +69 -1
- data/lib/tasks/exchanges.rake +2 -2
- data/spec/fixtures/microdata.html +22 -0
- data/spec/fixtures/microdata_itemref.html +15 -0
- data/spec/fixtures/microdata_no_itemscope.html +20 -0
- data/spec/helpers/base_helper_spec.rb +74 -11
- data/spec/helpers/products_helper_spec.rb +80 -15
- data/spec/lib/i18n_spec.rb +13 -13
- data/spec/lib/search/base_spec.rb +18 -18
- data/spec/lib/spree/core/controller_helpers/auth_spec.rb +6 -4
- data/spec/lib/spree/core/controller_helpers/order_spec.rb +15 -0
- data/spec/lib/spree/core/controller_helpers/store_spec.rb +56 -0
- data/spec/lib/spree/core/importer/order_spec.rb +227 -124
- data/spec/lib/spree/core/number_generator_spec.rb +175 -0
- data/spec/lib/spree/core_spec.rb +23 -0
- data/spec/lib/spree/localized_number_spec.rb +11 -1
- data/spec/lib/spree/money_spec.rb +6 -6
- data/spec/mailers/order_mailer_spec.rb +11 -13
- data/spec/mailers/reimbursement_mailer_spec.rb +2 -2
- data/spec/mailers/shipment_mailer_spec.rb +26 -8
- data/spec/mailers/test_mailer_spec.rb +16 -2
- data/spec/models/option_type_prototype_spec.rb +9 -0
- data/spec/models/spree/ability_spec.rb +20 -15
- data/spec/models/spree/address_spec.rb +144 -33
- data/spec/models/spree/adjustable/adjuster/base_spec.rb +10 -0
- data/spec/models/spree/adjustable/adjuster/promotion_spec.rb +211 -0
- data/spec/models/spree/adjustable/adjuster/tax_spec.rb +86 -0
- data/spec/models/spree/adjustable/adjustments_updater_spec.rb +2 -262
- data/spec/models/spree/adjustment_spec.rb +28 -2
- data/spec/models/spree/app_configuration_spec.rb +6 -3
- data/spec/models/spree/asset_spec.rb +9 -6
- data/spec/models/spree/calculator/default_tax_spec.rb +39 -14
- 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 +4 -8
- 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 -6
- data/spec/models/spree/calculator/shipping/per_item_spec.rb +2 -2
- data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +1 -1
- data/spec/models/spree/calculator/tiered_percent_spec.rb +1 -1
- data/spec/models/spree/calculator_spec.rb +3 -3
- data/spec/models/spree/classification_spec.rb +1 -1
- data/spec/models/spree/concerns/user_methods_spec.rb +82 -0
- data/spec/models/spree/concerns/vat_price_calculation_spec.rb +66 -0
- data/spec/models/spree/country_spec.rb +45 -8
- data/spec/models/spree/credit_card_spec.rb +13 -9
- data/spec/models/spree/customer_return_spec.rb +4 -26
- data/spec/models/spree/exchange_spec.rb +1 -1
- data/spec/models/spree/gateway/bogus_simple.rb +1 -1
- data/spec/models/spree/gateway/bogus_spec.rb +1 -1
- data/spec/models/spree/gateway_spec.rb +8 -1
- data/spec/models/spree/image_spec.rb +4 -1
- data/spec/models/spree/inventory_unit_spec.rb +35 -21
- data/spec/models/spree/line_item_spec.rb +100 -21
- data/spec/models/spree/option_type_spec.rb +3 -3
- data/spec/models/spree/option_value_spec.rb +8 -3
- data/spec/models/spree/order/address_spec.rb +1 -1
- data/spec/models/spree/order/adjustments_spec.rb +1 -1
- data/spec/models/spree/order/callbacks_spec.rb +3 -3
- data/spec/models/spree/order/checkout_spec.rb +99 -93
- data/spec/models/spree/order/currency_updater_spec.rb +4 -4
- data/spec/models/spree/order/finalizing_spec.rb +5 -8
- data/spec/models/spree/order/helpers_spec.rb +1 -1
- data/spec/models/spree/order/payment_spec.rb +21 -21
- data/spec/models/spree/order/risk_assessment_spec.rb +1 -1
- data/spec/models/spree/order/state_machine_spec.rb +4 -8
- data/spec/models/spree/order/store_credit_spec.rb +426 -0
- data/spec/models/spree/order/tax_spec.rb +13 -13
- data/spec/models/spree/order/totals_spec.rb +2 -2
- data/spec/models/spree/order/updating_spec.rb +4 -4
- data/spec/models/spree/order/validations_spec.rb +2 -2
- data/spec/models/spree/order_contents_spec.rb +45 -4
- data/spec/models/spree/order_inventory_spec.rb +28 -17
- data/spec/models/spree/order_merger_spec.rb +3 -1
- data/spec/models/spree/order_spec.rb +188 -96
- data/spec/models/spree/order_updater_spec.rb +43 -32
- data/spec/models/spree/payment/gateway_options_spec.rb +10 -2
- data/spec/models/spree/payment/store_credit_spec.rb +60 -0
- data/spec/models/spree/payment_method/store_credit_spec.rb +291 -0
- data/spec/models/spree/payment_method_spec.rb +22 -14
- data/spec/models/spree/payment_spec.rb +75 -82
- data/spec/models/spree/preference_spec.rb +1 -1
- data/spec/models/spree/preferences/configuration_spec.rb +2 -2
- data/spec/models/spree/preferences/preferable_spec.rb +15 -19
- data/spec/models/spree/preferences/scoped_store_spec.rb +1 -1
- data/spec/models/spree/preferences/store_spec.rb +3 -3
- data/spec/models/spree/price_spec.rb +87 -1
- data/spec/models/spree/product/scopes_spec.rb +39 -4
- data/spec/models/spree/product_duplicator_spec.rb +2 -2
- data/spec/models/spree/product_filter_spec.rb +2 -2
- data/spec/models/spree/product_option_type_spec.rb +6 -2
- data/spec/models/spree/product_promotion_rule_spec.rb +9 -0
- data/spec/models/spree/product_property_spec.rb +16 -1
- data/spec/models/spree/product_spec.rb +196 -41
- data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +63 -0
- data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +6 -6
- data/spec/models/spree/promotion/actions/free_shipping_spec.rb +1 -1
- data/spec/models/spree/promotion/rules/country_spec.rb +36 -0
- data/spec/models/spree/promotion/rules/first_order_spec.rb +11 -11
- data/spec/models/spree/promotion/rules/item_total_spec.rb +1 -1
- 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 +1 -1
- data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +3 -3
- data/spec/models/spree/promotion/rules/user_spec.rb +15 -7
- data/spec/models/spree/promotion_action_spec.rb +2 -2
- data/spec/models/spree/promotion_category_spec.rb +1 -1
- 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 -6
- data/spec/models/spree/promotion_rule_spec.rb +2 -2
- data/spec/models/spree/promotion_rule_taxon_spec.rb +9 -0
- data/spec/models/spree/promotion_rule_user_spec.rb +9 -0
- data/spec/models/spree/promotion_spec.rb +141 -65
- data/spec/models/spree/property_prototype_spec.rb +9 -0
- data/spec/models/spree/property_spec.rb +1 -1
- data/spec/models/spree/prototype_spec.rb +1 -1
- data/spec/models/spree/prototype_taxon_spec.rb +9 -0
- data/spec/models/spree/refund_reason_spec.rb +20 -0
- data/spec/models/spree/refund_spec.rb +1 -1
- data/spec/models/spree/reimbursement/credit_spec.rb +1 -1
- data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +1 -1
- data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +1 -1
- data/spec/models/spree/reimbursement_performer_spec.rb +1 -1
- data/spec/models/spree/reimbursement_spec.rb +3 -30
- data/spec/models/spree/reimbursement_tax_calculator_spec.rb +18 -6
- data/spec/models/spree/reimbursement_type/credit_spec.rb +1 -1
- data/spec/models/spree/reimbursement_type/exchange_spec.rb +1 -1
- data/spec/models/spree/reimbursement_type/original_payment_spec.rb +1 -1
- data/spec/models/spree/reimbursement_type/store_credit_spec.rb +101 -0
- data/spec/models/spree/return_authorization_reason_spec.rb +7 -0
- data/spec/models/spree/return_authorization_spec.rb +3 -23
- data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +1 -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 -1
- data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +1 -1
- data/spec/models/spree/return_item_spec.rb +51 -2
- data/spec/models/spree/returns_calculator_spec.rb +2 -2
- data/spec/models/spree/role_spec.rb +7 -0
- data/spec/models/spree/shipment_spec.rb +24 -22
- data/spec/models/spree/shipping_calculator_spec.rb +5 -5
- data/spec/models/spree/shipping_category_spec.rb +15 -1
- data/spec/models/spree/shipping_method_spec.rb +11 -4
- data/spec/models/spree/shipping_rate_spec.rb +40 -41
- data/spec/models/spree/state_spec.rb +13 -2
- data/spec/models/spree/stock/availability_validator_spec.rb +1 -1
- data/spec/models/spree/stock/content_item_spec.rb +9 -0
- data/spec/models/spree/stock/coordinator_spec.rb +13 -3
- data/spec/models/spree/stock/differentiator_spec.rb +1 -1
- data/spec/models/spree/stock/estimator_spec.rb +60 -12
- data/spec/models/spree/stock/inventory_unit_builder_spec.rb +1 -1
- data/spec/models/spree/stock/package_spec.rb +6 -18
- data/spec/models/spree/stock/packer_spec.rb +1 -1
- data/spec/models/spree/stock/prioritizer_spec.rb +7 -7
- data/spec/models/spree/stock/quantifier_spec.rb +61 -32
- data/spec/models/spree/stock/splitter/backordered_spec.rb +1 -1
- data/spec/models/spree/stock/splitter/base_spec.rb +1 -1
- data/spec/models/spree/stock/splitter/shipping_category_spec.rb +3 -3
- data/spec/models/spree/stock_item_spec.rb +30 -8
- data/spec/models/spree/stock_location_spec.rb +5 -5
- data/spec/models/spree/stock_movement_spec.rb +101 -37
- data/spec/models/spree/stock_transfer_spec.rb +1 -1
- data/spec/models/spree/store_credit_event_spec.rb +101 -0
- data/spec/models/spree/store_credit_spec.rb +786 -0
- data/spec/models/spree/store_spec.rb +40 -12
- data/spec/models/spree/tax_category_spec.rb +7 -2
- data/spec/models/spree/tax_rate_spec.rb +288 -109
- data/spec/models/spree/taxon_spec.rb +15 -4
- data/spec/models/spree/taxonomy_spec.rb +2 -2
- data/spec/models/spree/tracker_spec.rb +1 -1
- data/spec/models/spree/user_spec.rb +114 -41
- data/spec/models/spree/variant_spec.rb +310 -15
- data/spec/models/spree/zone_member_spec.rb +38 -0
- data/spec/models/spree/zone_spec.rb +38 -10
- data/spec/spec_helper.rb +5 -0
- data/spec/support/concerns/{adjustment_source_spec.rb → adjustment_source.rb} +0 -0
- data/spec/support/concerns/{default_price_spec.rb → default_price.rb} +9 -0
- data/spree_core.gemspec +12 -13
- data/vendor/assets/javascripts/jquery.payment.js +239 -84
- metadata +136 -65
- data/CHANGELOG.md +0 -4
- data/app/models/concerns/spree/number_generator.rb +0 -39
- data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -24
|
@@ -1,37 +1,37 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
require 'spree/testing_support/order_walkthrough'
|
|
3
3
|
|
|
4
|
-
describe Spree::Order, :
|
|
4
|
+
describe Spree::Order, type: :model do
|
|
5
5
|
let(:order) { Spree::Order.new }
|
|
6
6
|
|
|
7
7
|
before { create(:store) }
|
|
8
8
|
|
|
9
9
|
def assert_state_changed(order, from, to)
|
|
10
|
-
state_change_exists = order.state_changes.where(:
|
|
10
|
+
state_change_exists = order.state_changes.where(previous_state: from, next_state: to).exists?
|
|
11
11
|
assert state_change_exists, "Expected order to transition from #{from} to #{to}, but didn't."
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
context "with default state machine" do
|
|
15
15
|
let(:transitions) do
|
|
16
16
|
[
|
|
17
|
-
{ :
|
|
18
|
-
{ :
|
|
19
|
-
{ :
|
|
20
|
-
{ :
|
|
21
|
-
{ :
|
|
22
|
-
{ :
|
|
17
|
+
{ address: :delivery },
|
|
18
|
+
{ delivery: :payment },
|
|
19
|
+
{ payment: :confirm },
|
|
20
|
+
{ confirm: :complete },
|
|
21
|
+
{ payment: :complete },
|
|
22
|
+
{ delivery: :complete }
|
|
23
23
|
]
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
it "has the following transitions" do
|
|
27
27
|
transitions.each do |transition|
|
|
28
|
-
transition = Spree::Order.find_transition(:
|
|
28
|
+
transition = Spree::Order.find_transition(from: transition.keys.first, to: transition.values.first)
|
|
29
29
|
expect(transition).not_to be_nil
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
it "does not have a transition from delivery to confirm" do
|
|
34
|
-
transition = Spree::Order.find_transition(:
|
|
34
|
+
transition = Spree::Order.find_transition(from: :delivery, to: :confirm)
|
|
35
35
|
expect(transition).to be_nil
|
|
36
36
|
end
|
|
37
37
|
|
|
@@ -40,7 +40,7 @@ describe Spree::Order, :type => :model do
|
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
it '.remove_transition' do
|
|
43
|
-
options = {:
|
|
43
|
+
options = {from: transitions.first.keys.first, to: transitions.first.values.first}
|
|
44
44
|
expect(Spree::Order).to receive_messages(
|
|
45
45
|
removed_transitions: [],
|
|
46
46
|
next_event_transitions: transitions.dup
|
|
@@ -60,7 +60,7 @@ describe Spree::Order, :type => :model do
|
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
it "passes delivery state when transitioning from address over delivery to payment" do
|
|
63
|
-
allow(order).to receive_messages
|
|
63
|
+
allow(order).to receive_messages payment_required?: true
|
|
64
64
|
order.state = "address"
|
|
65
65
|
expect(order.passed_checkout_step?("delivery")).to be false
|
|
66
66
|
order.state = "delivery"
|
|
@@ -72,8 +72,8 @@ describe Spree::Order, :type => :model do
|
|
|
72
72
|
context "#checkout_steps" do
|
|
73
73
|
context "when confirmation not required" do
|
|
74
74
|
before do
|
|
75
|
-
allow(order).to receive_messages
|
|
76
|
-
allow(order).to receive_messages
|
|
75
|
+
allow(order).to receive_messages confirmation_required?: false
|
|
76
|
+
allow(order).to receive_messages payment_required?: true
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
specify do
|
|
@@ -83,8 +83,8 @@ describe Spree::Order, :type => :model do
|
|
|
83
83
|
|
|
84
84
|
context "when confirmation required" do
|
|
85
85
|
before do
|
|
86
|
-
allow(order).to receive_messages
|
|
87
|
-
allow(order).to receive_messages
|
|
86
|
+
allow(order).to receive_messages confirmation_required?: true
|
|
87
|
+
allow(order).to receive_messages payment_required?: true
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
specify do
|
|
@@ -93,14 +93,14 @@ describe Spree::Order, :type => :model do
|
|
|
93
93
|
end
|
|
94
94
|
|
|
95
95
|
context "when payment not required" do
|
|
96
|
-
before { allow(order).to receive_messages
|
|
96
|
+
before { allow(order).to receive_messages payment_required?: false }
|
|
97
97
|
specify do
|
|
98
98
|
expect(order.checkout_steps).to eq(%w(address delivery complete))
|
|
99
99
|
end
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
context "when payment required" do
|
|
103
|
-
before { allow(order).to receive_messages
|
|
103
|
+
before { allow(order).to receive_messages payment_required?: true }
|
|
104
104
|
specify do
|
|
105
105
|
expect(order.checkout_steps).to eq(%w(address delivery payment complete))
|
|
106
106
|
end
|
|
@@ -171,18 +171,19 @@ describe Spree::Order, :type => :model do
|
|
|
171
171
|
before do
|
|
172
172
|
order.state = 'address'
|
|
173
173
|
allow(order).to receive(:has_available_payment)
|
|
174
|
-
shipment = FactoryGirl.create(:shipment, :
|
|
174
|
+
shipment = FactoryGirl.create(:shipment, order: order)
|
|
175
175
|
order.email = "user@example.com"
|
|
176
176
|
order.save!
|
|
177
177
|
end
|
|
178
178
|
|
|
179
179
|
it "updates totals" do
|
|
180
|
-
allow(order).to receive_messages(:
|
|
181
|
-
line_item = FactoryGirl.create(:line_item, :
|
|
180
|
+
allow(order).to receive_messages(ensure_available_shipping_rates: true)
|
|
181
|
+
line_item = FactoryGirl.create(:line_item, price: 10, adjustment_total: 10)
|
|
182
|
+
line_item.variant.update_attributes!(price: 10)
|
|
182
183
|
order.line_items << line_item
|
|
183
|
-
tax_rate = create(:tax_rate, :
|
|
184
|
-
allow(Spree::TaxRate).to receive_messages :
|
|
185
|
-
FactoryGirl.create(:tax_adjustment, :
|
|
184
|
+
tax_rate = create(:tax_rate, tax_category: line_item.tax_category, amount: 0.05)
|
|
185
|
+
allow(Spree::TaxRate).to receive_messages match: [tax_rate]
|
|
186
|
+
FactoryGirl.create(:tax_adjustment, adjustable: line_item, source: tax_rate, order: order)
|
|
186
187
|
order.email = "user@example.com"
|
|
187
188
|
order.next!
|
|
188
189
|
expect(order.adjustment_total).to eq(0.5)
|
|
@@ -191,8 +192,30 @@ describe Spree::Order, :type => :model do
|
|
|
191
192
|
expect(order.total).to eq(10.5)
|
|
192
193
|
end
|
|
193
194
|
|
|
195
|
+
it 'updates prices' do
|
|
196
|
+
allow(order).to receive_messages(ensure_available_shipping_rates: true)
|
|
197
|
+
line_item = FactoryGirl.create(:line_item, price: 10, adjustment_total: 10)
|
|
198
|
+
line_item.variant.update_attributes!(price: 20)
|
|
199
|
+
order.line_items << line_item
|
|
200
|
+
tax_rate = create :tax_rate,
|
|
201
|
+
included_in_price: true,
|
|
202
|
+
tax_category: line_item.tax_category,
|
|
203
|
+
amount: 0.05
|
|
204
|
+
allow(Spree::TaxRate).to receive_messages(match: [tax_rate])
|
|
205
|
+
FactoryGirl.create :tax_adjustment,
|
|
206
|
+
adjustable: line_item,
|
|
207
|
+
source: tax_rate,
|
|
208
|
+
order: order
|
|
209
|
+
order.email = "user@example.com"
|
|
210
|
+
order.next!
|
|
211
|
+
expect(order.adjustment_total).to eq(0)
|
|
212
|
+
expect(order.additional_tax_total).to eq(0)
|
|
213
|
+
expect(order.included_tax_total).to eq(0.95)
|
|
214
|
+
expect(order.total).to eq(20)
|
|
215
|
+
end
|
|
216
|
+
|
|
194
217
|
it "transitions to delivery" do
|
|
195
|
-
allow(order).to receive_messages(:
|
|
218
|
+
allow(order).to receive_messages(ensure_available_shipping_rates: true)
|
|
196
219
|
order.next!
|
|
197
220
|
assert_state_changed(order, 'address', 'delivery')
|
|
198
221
|
expect(order.state).to eq("delivery")
|
|
@@ -200,7 +223,7 @@ describe Spree::Order, :type => :model do
|
|
|
200
223
|
|
|
201
224
|
it "does not call persist_order_address if there is no address on the order" do
|
|
202
225
|
# otherwise, it will crash
|
|
203
|
-
allow(order).to receive_messages(:
|
|
226
|
+
allow(order).to receive_messages(ensure_available_shipping_rates: true)
|
|
204
227
|
|
|
205
228
|
order.user = FactoryGirl.create(:user)
|
|
206
229
|
order.save!
|
|
@@ -210,7 +233,7 @@ describe Spree::Order, :type => :model do
|
|
|
210
233
|
end
|
|
211
234
|
|
|
212
235
|
it "calls persist_order_address on the order's user" do
|
|
213
|
-
allow(order).to receive_messages(:
|
|
236
|
+
allow(order).to receive_messages(ensure_available_shipping_rates: true)
|
|
214
237
|
|
|
215
238
|
order.user = FactoryGirl.create(:user)
|
|
216
239
|
order.ship_address = FactoryGirl.create(:address)
|
|
@@ -222,7 +245,7 @@ describe Spree::Order, :type => :model do
|
|
|
222
245
|
end
|
|
223
246
|
|
|
224
247
|
it "does not call persist_order_address on the order's user for a temporary address" do
|
|
225
|
-
allow(order).to receive_messages(:
|
|
248
|
+
allow(order).to receive_messages(ensure_available_shipping_rates: true)
|
|
226
249
|
|
|
227
250
|
order.user = FactoryGirl.create(:user)
|
|
228
251
|
order.temporary_address = true
|
|
@@ -235,7 +258,7 @@ describe Spree::Order, :type => :model do
|
|
|
235
258
|
context "cannot transition to delivery" do
|
|
236
259
|
context "with an existing shipment" do
|
|
237
260
|
before do
|
|
238
|
-
line_item = FactoryGirl.create(:line_item, :
|
|
261
|
+
line_item = FactoryGirl.create(:line_item, price: 10)
|
|
239
262
|
order.line_items << line_item
|
|
240
263
|
end
|
|
241
264
|
|
|
@@ -297,7 +320,7 @@ describe Spree::Order, :type => :model do
|
|
|
297
320
|
|
|
298
321
|
context "with payment required" do
|
|
299
322
|
before do
|
|
300
|
-
allow(order).to receive_messages
|
|
323
|
+
allow(order).to receive_messages payment_required?: true
|
|
301
324
|
end
|
|
302
325
|
|
|
303
326
|
it "transitions to payment" do
|
|
@@ -310,7 +333,7 @@ describe Spree::Order, :type => :model do
|
|
|
310
333
|
|
|
311
334
|
context "without payment required" do
|
|
312
335
|
before do
|
|
313
|
-
allow(order).to receive_messages
|
|
336
|
+
allow(order).to receive_messages payment_required?: false
|
|
314
337
|
end
|
|
315
338
|
|
|
316
339
|
it "transitions to complete" do
|
|
@@ -357,37 +380,6 @@ describe Spree::Order, :type => :model do
|
|
|
357
380
|
end
|
|
358
381
|
end
|
|
359
382
|
|
|
360
|
-
context "to payment" do
|
|
361
|
-
before do
|
|
362
|
-
@default_credit_card = FactoryGirl.create(:credit_card)
|
|
363
|
-
order.user = mock_model(Spree::LegacyUser, default_credit_card: @default_credit_card, email: 'spree@example.org')
|
|
364
|
-
|
|
365
|
-
allow(order).to receive_messages(payment_required?: true)
|
|
366
|
-
allow(order).to receive_messages(total: 20.00)
|
|
367
|
-
order.state = 'delivery'
|
|
368
|
-
order.save!
|
|
369
|
-
end
|
|
370
|
-
|
|
371
|
-
it "assigns the user's default credit card" do
|
|
372
|
-
order.next!
|
|
373
|
-
order.reload
|
|
374
|
-
|
|
375
|
-
expect(order.state).to eq 'payment'
|
|
376
|
-
expect(order.payments.count).to eq 1
|
|
377
|
-
expect(order.payments.first.amount).to eq 20.00
|
|
378
|
-
expect(order.payments.first.source).to eq @default_credit_card
|
|
379
|
-
end
|
|
380
|
-
|
|
381
|
-
it "only generates payment if payment required" do
|
|
382
|
-
allow(order).to receive_messages(payment_required?: false)
|
|
383
|
-
order.next!
|
|
384
|
-
order.reload
|
|
385
|
-
|
|
386
|
-
expect(order.state).to eq 'complete'
|
|
387
|
-
expect(order.payments.count).to eq 0
|
|
388
|
-
end
|
|
389
|
-
end
|
|
390
|
-
|
|
391
383
|
context "from payment" do
|
|
392
384
|
before do
|
|
393
385
|
order.state = 'payment'
|
|
@@ -395,7 +387,7 @@ describe Spree::Order, :type => :model do
|
|
|
395
387
|
|
|
396
388
|
context "with confirmation required" do
|
|
397
389
|
before do
|
|
398
|
-
allow(order).to receive_messages
|
|
390
|
+
allow(order).to receive_messages confirmation_required?: true
|
|
399
391
|
end
|
|
400
392
|
|
|
401
393
|
it "transitions to confirm" do
|
|
@@ -408,22 +400,40 @@ describe Spree::Order, :type => :model do
|
|
|
408
400
|
context "without confirmation required" do
|
|
409
401
|
before do
|
|
410
402
|
order.email = "spree@example.com"
|
|
411
|
-
allow(order).to receive_messages
|
|
412
|
-
allow(order).to receive_messages
|
|
403
|
+
allow(order).to receive_messages confirmation_required?: false
|
|
404
|
+
allow(order).to receive_messages payment_required?: true
|
|
413
405
|
order.payments << FactoryGirl.create(:payment, state: payment_state, order: order)
|
|
414
406
|
end
|
|
415
407
|
|
|
416
408
|
context 'when there is at least one valid payment' do
|
|
417
409
|
let(:payment_state) { 'checkout' }
|
|
418
410
|
|
|
419
|
-
|
|
420
|
-
|
|
411
|
+
context 'line_items are in stock' do
|
|
412
|
+
before do
|
|
413
|
+
expect(order).to receive(:process_payments!).once { true }
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
it "transitions to complete" do
|
|
417
|
+
order.next!
|
|
418
|
+
assert_state_changed(order, 'payment', 'complete')
|
|
419
|
+
expect(order.state).to eq('complete')
|
|
420
|
+
end
|
|
421
421
|
end
|
|
422
422
|
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
423
|
+
context 'line_items are not in stock' do
|
|
424
|
+
before do
|
|
425
|
+
expect(order).to receive(:ensure_line_items_are_in_stock).once { false }
|
|
426
|
+
end
|
|
427
|
+
|
|
428
|
+
it 'should not receive process_payments!' do
|
|
429
|
+
expect(order).not_to receive(:process_payments!)
|
|
430
|
+
order.next
|
|
431
|
+
end
|
|
432
|
+
|
|
433
|
+
it 'does not transition to complete' do
|
|
434
|
+
order.next
|
|
435
|
+
expect(order.state).to eq('payment')
|
|
436
|
+
end
|
|
427
437
|
end
|
|
428
438
|
end
|
|
429
439
|
|
|
@@ -443,7 +453,7 @@ describe Spree::Order, :type => :model do
|
|
|
443
453
|
# Regression test for #2028
|
|
444
454
|
context "when payment is not required" do
|
|
445
455
|
before do
|
|
446
|
-
allow(order).to receive_messages
|
|
456
|
+
allow(order).to receive_messages payment_required?: false
|
|
447
457
|
end
|
|
448
458
|
|
|
449
459
|
it "does not call process payments" do
|
|
@@ -502,7 +512,7 @@ describe Spree::Order, :type => :model do
|
|
|
502
512
|
|
|
503
513
|
skip "should only call default transitions once when checkout_flow is redefined" do
|
|
504
514
|
order = SubclassedOrder.new
|
|
505
|
-
allow(order).to receive_messages
|
|
515
|
+
allow(order).to receive_messages payment_required?: true
|
|
506
516
|
expect(order).to receive(:process_payments!).once
|
|
507
517
|
order.state = "payment"
|
|
508
518
|
order.next!
|
|
@@ -527,7 +537,7 @@ describe Spree::Order, :type => :model do
|
|
|
527
537
|
end
|
|
528
538
|
|
|
529
539
|
it "should not keep old event transitions when checkout_flow is redefined" do
|
|
530
|
-
expect(Spree::Order.next_event_transitions).to eq([{:
|
|
540
|
+
expect(Spree::Order.next_event_transitions).to eq([{cart: :payment}, {payment: :complete}])
|
|
531
541
|
end
|
|
532
542
|
|
|
533
543
|
it "should not keep old events when checkout_flow is redefined" do
|
|
@@ -558,7 +568,7 @@ describe Spree::Order, :type => :model do
|
|
|
558
568
|
it "does not attempt to process payments" do
|
|
559
569
|
allow(order).to receive_message_chain(:line_items, :present?) { true }
|
|
560
570
|
allow(order).to receive(:ensure_line_items_are_in_stock) { true }
|
|
561
|
-
allow(order).to receive(:
|
|
571
|
+
allow(order).to receive(:ensure_line_item_variants_are_not_discontinued) { true }
|
|
562
572
|
expect(order).not_to receive(:payment_required?)
|
|
563
573
|
expect(order).not_to receive(:process_payments!)
|
|
564
574
|
order.next!
|
|
@@ -580,7 +590,7 @@ describe Spree::Order, :type => :model do
|
|
|
580
590
|
end
|
|
581
591
|
|
|
582
592
|
it "should maintain removed transitions" do
|
|
583
|
-
transition = Spree::Order.find_transition(:
|
|
593
|
+
transition = Spree::Order.find_transition(from: :delivery, to: :confirm)
|
|
584
594
|
expect(transition).to be_nil
|
|
585
595
|
end
|
|
586
596
|
|
|
@@ -595,6 +605,10 @@ describe Spree::Order, :type => :model do
|
|
|
595
605
|
order = Spree::Order.new
|
|
596
606
|
expect(order.checkout_steps).to eq(%w(new_step before_address address delivery complete))
|
|
597
607
|
end
|
|
608
|
+
|
|
609
|
+
it 'goes through checkout without raising error' do
|
|
610
|
+
expect{ OrderWalkthrough.up_to(:complete) }.to_not raise_error
|
|
611
|
+
end
|
|
598
612
|
end
|
|
599
613
|
|
|
600
614
|
context "after" do
|
|
@@ -608,6 +622,10 @@ describe Spree::Order, :type => :model do
|
|
|
608
622
|
order = Spree::Order.new
|
|
609
623
|
expect(order.checkout_steps).to eq(%w(new_step address after_address delivery complete))
|
|
610
624
|
end
|
|
625
|
+
|
|
626
|
+
it 'goes through checkout without raising error' do
|
|
627
|
+
expect{ OrderWalkthrough.up_to(:complete) }.to_not raise_error
|
|
628
|
+
end
|
|
611
629
|
end
|
|
612
630
|
end
|
|
613
631
|
|
|
@@ -624,7 +642,7 @@ describe Spree::Order, :type => :model do
|
|
|
624
642
|
end
|
|
625
643
|
|
|
626
644
|
it "should maintain removed transitions" do
|
|
627
|
-
transition = Spree::Order.find_transition(:
|
|
645
|
+
transition = Spree::Order.find_transition(from: :delivery, to: :confirm)
|
|
628
646
|
expect(transition).to be_nil
|
|
629
647
|
end
|
|
630
648
|
|
|
@@ -689,10 +707,8 @@ describe Spree::Order, :type => :model do
|
|
|
689
707
|
it "sets request_env on payment" do
|
|
690
708
|
request_env = { "USER_AGENT" => "Firefox" }
|
|
691
709
|
|
|
692
|
-
expected_hash = { "payments_attributes" => [hash_including("request_env" => request_env)] }
|
|
693
|
-
expect(order).to receive(:update_attributes).with expected_hash
|
|
694
|
-
|
|
695
710
|
order.update_from_params(params, permitted_params, request_env)
|
|
711
|
+
expect(order.payments[0].request_env).to eq request_env
|
|
696
712
|
end
|
|
697
713
|
|
|
698
714
|
it "dont let users mess with others users cards" do
|
|
@@ -700,7 +716,7 @@ describe Spree::Order, :type => :model do
|
|
|
700
716
|
|
|
701
717
|
expect {
|
|
702
718
|
order.update_from_params(params, permitted_params)
|
|
703
|
-
}.to raise_error
|
|
719
|
+
}.to raise_error(Spree.t(:invalid_credit_card))
|
|
704
720
|
end
|
|
705
721
|
end
|
|
706
722
|
|
|
@@ -709,7 +725,7 @@ describe Spree::Order, :type => :model do
|
|
|
709
725
|
let(:params) { ActionController::Parameters.new(order: { bad_param: 'okay' } ) }
|
|
710
726
|
|
|
711
727
|
it 'does not let through unpermitted attributes' do
|
|
712
|
-
expect(order).to receive(:update_attributes).with(
|
|
728
|
+
expect(order).to receive(:update_attributes).with(ActionController::Parameters.new.permit!)
|
|
713
729
|
order.update_from_params(params, permitted_params)
|
|
714
730
|
end
|
|
715
731
|
|
|
@@ -745,17 +761,7 @@ describe Spree::Order, :type => :model do
|
|
|
745
761
|
let(:params) { ActionController::Parameters.new(order: { good_param: 'okay' } ) }
|
|
746
762
|
|
|
747
763
|
it 'accepts permitted attributes' do
|
|
748
|
-
expect(order).to receive(:
|
|
749
|
-
order.update_from_params(params, permitted_params)
|
|
750
|
-
end
|
|
751
|
-
end
|
|
752
|
-
|
|
753
|
-
context 'callbacks halt' do
|
|
754
|
-
before do
|
|
755
|
-
expect(order).to receive(:update_params_payment_source).and_return false
|
|
756
|
-
end
|
|
757
|
-
it 'does not let through unpermitted attributes' do
|
|
758
|
-
expect(order).not_to receive(:update_attributes).with({})
|
|
764
|
+
expect(order).to receive(:assign_attributes).with(ActionController::Parameters.new("good_param" => 'okay').permit!)
|
|
759
765
|
order.update_from_params(params, permitted_params)
|
|
760
766
|
end
|
|
761
767
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
|
-
describe Spree::Order, :
|
|
3
|
+
describe Spree::Order, type: :model do
|
|
4
4
|
context 'CurrencyUpdater' do
|
|
5
5
|
context "when changing order currency" do
|
|
6
6
|
let!(:line_item) { create(:line_item) }
|
|
@@ -8,8 +8,8 @@ describe Spree::Order, :type => :model do
|
|
|
8
8
|
|
|
9
9
|
context "#homogenize_line_item_currencies" do
|
|
10
10
|
it "succeeds without error" do
|
|
11
|
-
expect { line_item.order.update_attributes!(currency: 'EUR') }.
|
|
12
|
-
end
|
|
11
|
+
expect { line_item.order.update_attributes!(currency: 'EUR') }.not_to raise_error
|
|
12
|
+
end
|
|
13
13
|
|
|
14
14
|
it "changes the line_item currencies" do
|
|
15
15
|
expect { line_item.order.update_attributes!(currency: 'EUR') }.to change{ line_item.reload.currency }.from('USD').to('EUR')
|
|
@@ -20,7 +20,7 @@ describe Spree::Order, :type => :model do
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
it "fails to change the order currency when no prices are available in that currency" do
|
|
23
|
-
expect { line_item.order.update_attributes!(currency: 'GBP') }.to raise_error
|
|
23
|
+
expect { line_item.order.update_attributes!(currency: 'GBP') }.to raise_error("no GBP price found for #{line_item.product.name} (#{line_item.variant.sku})")
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
it "calculates the item total in the order.currency" do
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
|
-
describe Spree::Order, :
|
|
3
|
+
describe Spree::Order, type: :model do
|
|
4
4
|
let(:order) { stub_model("Spree::Order") }
|
|
5
5
|
|
|
6
6
|
before { create(:store) }
|
|
@@ -63,15 +63,12 @@ describe Spree::Order, :type => :model do
|
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
it "should not send duplicate confirmation emails" do
|
|
66
|
-
allow(order).to receive_messages(
|
|
66
|
+
allow(order).to receive_messages(confirmation_delivered?: true)
|
|
67
67
|
expect(Spree::OrderMailer).not_to receive(:confirm_email)
|
|
68
68
|
order.finalize!
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
it "should freeze all adjustments" do
|
|
72
|
-
# Stub this method as it's called due to a callback
|
|
73
|
-
# and it's irrelevant to this test
|
|
74
|
-
allow(order).to receive :has_available_shipment
|
|
75
72
|
allow(Spree::OrderMailer).to receive_message_chain :confirm_email, :deliver_later
|
|
76
73
|
adjustments = [double]
|
|
77
74
|
expect(order).to receive(:all_adjustments).and_return(adjustments)
|
|
@@ -83,7 +80,7 @@ describe Spree::Order, :type => :model do
|
|
|
83
80
|
|
|
84
81
|
context "order is considered risky" do
|
|
85
82
|
before do
|
|
86
|
-
allow(order).to receive_messages
|
|
83
|
+
allow(order).to receive_messages is_risky?: true
|
|
87
84
|
end
|
|
88
85
|
|
|
89
86
|
it "should change state to risky" do
|
|
@@ -93,7 +90,7 @@ describe Spree::Order, :type => :model do
|
|
|
93
90
|
|
|
94
91
|
context "and order is approved" do
|
|
95
92
|
before do
|
|
96
|
-
allow(order).to receive_messages
|
|
93
|
+
allow(order).to receive_messages approved?: true
|
|
97
94
|
end
|
|
98
95
|
|
|
99
96
|
it "should leave order in complete state" do
|
|
@@ -105,7 +102,7 @@ describe Spree::Order, :type => :model do
|
|
|
105
102
|
|
|
106
103
|
context "order is not considered risky" do
|
|
107
104
|
before do
|
|
108
|
-
allow(order).to receive_messages
|
|
105
|
+
allow(order).to receive_messages is_risky?: false
|
|
109
106
|
end
|
|
110
107
|
|
|
111
108
|
it "should set completed_at" do
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
module Spree
|
|
4
|
-
describe Spree::Order, :
|
|
4
|
+
describe Spree::Order, type: :model do
|
|
5
5
|
let(:order) { stub_model(Spree::Order) }
|
|
6
6
|
let(:updater) { Spree::OrderUpdater.new(order) }
|
|
7
7
|
|
|
@@ -11,12 +11,12 @@ module Spree
|
|
|
11
11
|
Spree::Config[:auto_capture] = true
|
|
12
12
|
|
|
13
13
|
allow(order).to receive_message_chain(:line_items, :empty?).and_return(false)
|
|
14
|
-
allow(order).to receive_messages :
|
|
14
|
+
allow(order).to receive_messages total: 100
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
it 'processes all checkout payments' do
|
|
18
|
-
payment_1 = create(:payment, :
|
|
19
|
-
payment_2 = create(:payment, :
|
|
18
|
+
payment_1 = create(:payment, amount: 50)
|
|
19
|
+
payment_2 = create(:payment, amount: 50)
|
|
20
20
|
allow(order).to receive(:unprocessed_payments).and_return([payment_1, payment_2])
|
|
21
21
|
|
|
22
22
|
order.process_payments!
|
|
@@ -28,9 +28,9 @@ module Spree
|
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
it 'does not go over total for order' do
|
|
31
|
-
payment_1 = create(:payment, :
|
|
32
|
-
payment_2 = create(:payment, :
|
|
33
|
-
payment_3 = create(:payment, :
|
|
31
|
+
payment_1 = create(:payment, amount: 50)
|
|
32
|
+
payment_2 = create(:payment, amount: 50)
|
|
33
|
+
payment_3 = create(:payment, amount: 50)
|
|
34
34
|
allow(order).to receive(:unprocessed_payments).and_return([payment_1, payment_2, payment_3])
|
|
35
35
|
|
|
36
36
|
order.process_payments!
|
|
@@ -43,8 +43,8 @@ module Spree
|
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
it "does not use failed payments" do
|
|
46
|
-
payment_1 = create(:payment, :
|
|
47
|
-
payment_2 = create(:payment, :
|
|
46
|
+
payment_1 = create(:payment, amount: 50)
|
|
47
|
+
payment_2 = create(:payment, amount: 50, state: 'failed')
|
|
48
48
|
allow(order).to receive(:pending_payments).and_return([payment_1])
|
|
49
49
|
|
|
50
50
|
expect(payment_2).not_to receive(:process!)
|
|
@@ -63,14 +63,14 @@ module Spree
|
|
|
63
63
|
persisted_order = Spree::Order.create
|
|
64
64
|
credit_card_payment_method = create(:credit_card_payment_method)
|
|
65
65
|
attributes = {
|
|
66
|
-
:
|
|
66
|
+
payments_attributes: [
|
|
67
67
|
{
|
|
68
|
-
:
|
|
69
|
-
:
|
|
70
|
-
:
|
|
71
|
-
:
|
|
72
|
-
:
|
|
73
|
-
:
|
|
68
|
+
payment_method_id: credit_card_payment_method.id,
|
|
69
|
+
source_attributes: {
|
|
70
|
+
name: "Ryan Bigg",
|
|
71
|
+
number: "41111111111111111111",
|
|
72
|
+
expiry: "01 / 15",
|
|
73
|
+
verification_value: "123"
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
]
|
|
@@ -113,12 +113,12 @@ module Spree
|
|
|
113
113
|
before { expect(payment).to receive(:process!).and_raise(Spree::Core::GatewayError) }
|
|
114
114
|
|
|
115
115
|
it "should return true when configured to allow checkout on gateway failures" do
|
|
116
|
-
Spree::Config.set :
|
|
116
|
+
Spree::Config.set allow_checkout_on_gateway_error: true
|
|
117
117
|
expect(order.process_payments!).to be true
|
|
118
118
|
end
|
|
119
119
|
|
|
120
120
|
it "should return false when not configured to allow checkout on gateway failures" do
|
|
121
|
-
Spree::Config.set :
|
|
121
|
+
Spree::Config.set allow_checkout_on_gateway_error: false
|
|
122
122
|
expect(order.process_payments!).to be false
|
|
123
123
|
end
|
|
124
124
|
end
|
|
@@ -126,7 +126,7 @@ module Spree
|
|
|
126
126
|
|
|
127
127
|
context "#authorize_payments!" do
|
|
128
128
|
let(:payment) { stub_model(Spree::Payment) }
|
|
129
|
-
before { allow(order).to receive_messages :
|
|
129
|
+
before { allow(order).to receive_messages unprocessed_payments: [payment], total: 10 }
|
|
130
130
|
subject { order.authorize_payments! }
|
|
131
131
|
|
|
132
132
|
it "processes payments with attempt_authorization!" do
|
|
@@ -139,7 +139,7 @@ module Spree
|
|
|
139
139
|
|
|
140
140
|
context "#capture_payments!" do
|
|
141
141
|
let(:payment) { stub_model(Spree::Payment) }
|
|
142
|
-
before { allow(order).to receive_messages :
|
|
142
|
+
before { allow(order).to receive_messages unprocessed_payments: [payment], total: 10 }
|
|
143
143
|
subject { order.capture_payments! }
|
|
144
144
|
|
|
145
145
|
it "processes payments with attempt_authorization!" do
|
|
@@ -172,7 +172,7 @@ module Spree
|
|
|
172
172
|
reimbursement: reimbursement
|
|
173
173
|
order = reimbursement.order.reload
|
|
174
174
|
# Update the order totals so payment_total goes to 0 reflecting the refund..
|
|
175
|
-
order.
|
|
175
|
+
order.update_with_updater!
|
|
176
176
|
# Order Total - (Payment Total + Reimbursed)
|
|
177
177
|
# 10 - (0 + 10) = 0
|
|
178
178
|
expect(order.outstanding_balance).to eq 0
|