solidus_core 2.10.3 → 2.11.4
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.
Potentially problematic release.
This version of solidus_core might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/assets/javascripts/spree.js.erb +31 -2
- data/app/controllers/spree/base_controller.rb +1 -0
- data/app/mailers/spree/base_mailer.rb +4 -0
- data/app/mailers/spree/order_mailer.rb +1 -1
- data/app/models/concerns/spree/active_storage_adapter.rb +116 -0
- data/app/models/concerns/spree/active_storage_adapter/attachment.rb +69 -0
- data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
- data/app/models/concerns/spree/default_price.rb +1 -1
- data/app/models/concerns/spree/soft_deletable.rb +18 -0
- data/app/models/concerns/spree/user_address_book.rb +86 -32
- data/app/models/concerns/spree/user_methods.rb +3 -2
- data/app/models/spree/ability.rb +34 -10
- data/app/models/spree/address.rb +94 -17
- data/app/models/spree/address/name.rb +49 -0
- data/app/models/spree/address/state_validator.rb +71 -0
- data/app/models/spree/adjustment.rb +1 -1
- data/app/models/spree/base.rb +2 -2
- data/app/models/spree/calculator.rb +4 -4
- data/app/models/spree/calculator/default_tax.rb +1 -1
- data/app/models/spree/calculator/free_shipping.rb +1 -0
- data/app/models/spree/calculator/percent_per_item.rb +6 -4
- data/app/models/spree/calculator/price_sack.rb +2 -1
- data/app/models/spree/credit_card.rb +2 -2
- data/app/models/spree/customer_return.rb +4 -2
- data/app/models/spree/exchange.rb +1 -1
- data/app/models/spree/image/active_storage_attachment.rb +21 -0
- data/app/models/spree/inventory_unit.rb +1 -1
- data/app/models/spree/line_item.rb +13 -4
- data/app/models/spree/option_type.rb +1 -1
- data/app/models/spree/option_value.rb +2 -2
- data/app/models/spree/order.rb +91 -20
- data/app/models/spree/order/checkout.rb +1 -0
- data/app/models/spree/order/payments.rb +2 -2
- data/app/models/spree/order_inventory.rb +16 -4
- data/app/models/spree/order_merger.rb +6 -4
- data/app/models/spree/order_promotion.rb +1 -1
- data/app/models/spree/order_updater.rb +11 -10
- data/app/models/spree/payment.rb +3 -3
- data/app/models/spree/payment/cancellation.rb +3 -22
- data/app/models/spree/payment/processing.rb +54 -30
- data/app/models/spree/payment_method.rb +8 -9
- data/app/models/spree/payment_source.rb +2 -2
- data/app/models/spree/preference.rb +1 -1
- data/app/models/spree/price.rb +2 -8
- data/app/models/spree/product.rb +19 -14
- data/app/models/spree/product/scopes.rb +9 -5
- data/app/models/spree/promotion.rb +18 -7
- data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
- data/app/models/spree/promotion_action.rb +1 -7
- data/app/models/spree/promotion_code.rb +6 -1
- data/app/models/spree/promotion_code_batch.rb +1 -1
- data/app/models/spree/promotion_handler/coupon.rb +2 -2
- data/app/models/spree/promotion_rule.rb +1 -1
- data/app/models/spree/promotion_rule_role.rb +1 -1
- data/app/models/spree/refund.rb +60 -12
- data/app/models/spree/reimbursement.rb +27 -0
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +10 -3
- data/app/models/spree/return_authorization.rb +1 -1
- data/app/models/spree/return_item.rb +21 -10
- data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
- data/app/models/spree/role.rb +1 -1
- data/app/models/spree/shipment.rb +2 -2
- data/app/models/spree/shipping_calculator.rb +1 -1
- data/app/models/spree/shipping_manifest.rb +2 -2
- data/app/models/spree/shipping_method.rb +2 -9
- data/app/models/spree/shipping_rate.rb +1 -1
- data/app/models/spree/shipping_rate_tax.rb +1 -1
- data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
- data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
- data/app/models/spree/stock/package.rb +1 -1
- data/app/models/spree/stock/simple_coordinator.rb +1 -3
- data/app/models/spree/stock_item.rb +2 -8
- data/app/models/spree/stock_movement.rb +2 -0
- data/app/models/spree/store.rb +1 -1
- data/app/models/spree/store_credit.rb +1 -7
- data/app/models/spree/store_credit_category.rb +30 -3
- data/app/models/spree/store_credit_event.rb +1 -7
- data/app/models/spree/store_credit_reason.rb +0 -4
- data/app/models/spree/tax/tax_helpers.rb +1 -1
- data/app/models/spree/tax_category.rb +2 -8
- data/app/models/spree/tax_rate.rb +7 -7
- data/app/models/spree/taxon.rb +1 -1
- data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
- data/app/models/spree/user_address.rb +8 -2
- data/app/models/spree/variant.rb +7 -13
- data/app/models/spree/variant_property_rule.rb +5 -1
- data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +8 -3
- data/app/models/spree/zone.rb +1 -1
- data/config/locales/en.yml +44 -5
- data/db/default/spree/countries.rb +1 -1
- data/db/default/spree/states.rb +12 -4
- data/db/default/spree/store_credit.rb +2 -2
- data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
- data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
- data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
- data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
- data/lib/generators/solidus/install/install_generator.rb +253 -0
- data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +36 -5
- data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
- data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
- data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
- data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
- data/lib/generators/spree/dummy/templates/rails/test.rb +1 -1
- data/lib/generators/spree/install/install_generator.rb +7 -189
- data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
- data/lib/spree/app_configuration.rb +117 -51
- data/lib/spree/awesome_nested_set_override.rb +44 -0
- data/lib/spree/core.rb +6 -11
- data/lib/spree/core/controller_helpers/auth.rb +17 -4
- data/lib/spree/core/controller_helpers/current_host.rb +17 -0
- data/lib/spree/core/controller_helpers/order.rb +8 -7
- data/lib/spree/core/engine.rb +39 -2
- data/lib/spree/core/importer/order.rb +24 -10
- data/lib/spree/core/permalinks.rb +1 -3
- data/lib/spree/core/product_filters.rb +6 -5
- data/lib/spree/core/state_machines.rb +20 -1
- data/lib/spree/core/state_machines/order.rb +249 -0
- data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/encryptor.rb +25 -0
- data/lib/spree/event.rb +40 -7
- data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
- data/lib/spree/event/configuration.rb +11 -6
- data/lib/spree/event/subscriber.rb +38 -18
- data/lib/spree/event/subscriber_registry.rb +92 -0
- data/lib/spree/i18n.rb +1 -1
- data/lib/spree/mailer_previews/carton_preview.rb +2 -1
- data/lib/spree/paranoia_deprecations.rb +32 -12
- data/lib/spree/permission_sets/configuration_display.rb +14 -14
- data/lib/spree/permission_sets/default_customer.rb +16 -16
- data/lib/spree/permission_sets/order_display.rb +11 -11
- data/lib/spree/permission_sets/order_management.rb +1 -1
- data/lib/spree/permission_sets/product_display.rb +9 -9
- data/lib/spree/permission_sets/promotion_display.rb +5 -5
- data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
- data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
- data/lib/spree/permission_sets/stock_display.rb +2 -2
- data/lib/spree/permission_sets/stock_management.rb +1 -1
- data/lib/spree/permission_sets/user_display.rb +3 -3
- data/lib/spree/permission_sets/user_management.rb +4 -3
- data/lib/spree/permitted_attributes.rb +9 -8
- data/lib/spree/preferences/preferable.rb +4 -3
- data/lib/spree/preferences/preferable_class_methods.rb +22 -3
- data/lib/spree/testing_support.rb +40 -0
- data/lib/spree/testing_support/ability_helpers.rb +9 -9
- data/lib/spree/testing_support/authorization_helpers.rb +1 -0
- data/lib/spree/testing_support/blacklist_urls.rb +23 -0
- data/lib/spree/testing_support/capybara_ext.rb +3 -0
- data/lib/spree/testing_support/common_rake.rb +3 -3
- data/lib/spree/testing_support/dummy_app.rb +44 -23
- data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
- data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
- data/lib/spree/testing_support/factories.rb +2 -4
- data/lib/spree/testing_support/factories/address_factory.rb +3 -4
- data/lib/spree/testing_support/factories/adjustment_factory.rb +2 -5
- data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +3 -0
- data/lib/spree/testing_support/factories/calculator_factory.rb +3 -0
- data/lib/spree/testing_support/factories/carton_factory.rb +2 -2
- data/lib/spree/testing_support/factories/country_factory.rb +3 -0
- data/lib/spree/testing_support/factories/credit_card_factory.rb +3 -0
- data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -3
- data/lib/spree/testing_support/factories/image_factory.rb +4 -1
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +2 -4
- data/lib/spree/testing_support/factories/line_item_factory.rb +2 -2
- data/lib/spree/testing_support/factories/option_type_factory.rb +3 -0
- data/lib/spree/testing_support/factories/option_value_factory.rb +3 -0
- data/lib/spree/testing_support/factories/order_factory.rb +2 -6
- data/lib/spree/testing_support/factories/order_promotion_factory.rb +2 -2
- data/lib/spree/testing_support/factories/payment_factory.rb +2 -4
- data/lib/spree/testing_support/factories/payment_method_factory.rb +3 -0
- data/lib/spree/testing_support/factories/price_factory.rb +2 -1
- data/lib/spree/testing_support/factories/product_factory.rb +2 -5
- data/lib/spree/testing_support/factories/product_option_type_factory.rb +2 -2
- data/lib/spree/testing_support/factories/product_property_factory.rb +2 -2
- data/lib/spree/testing_support/factories/promotion_category_factory.rb +3 -0
- data/lib/spree/testing_support/factories/promotion_code_factory.rb +2 -2
- data/lib/spree/testing_support/factories/promotion_factory.rb +8 -2
- data/lib/spree/testing_support/factories/property_factory.rb +3 -0
- data/lib/spree/testing_support/factories/refund_factory.rb +3 -2
- data/lib/spree/testing_support/factories/refund_reason_factory.rb +3 -0
- data/lib/spree/testing_support/factories/reimbursement_factory.rb +3 -2
- data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +3 -0
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +2 -3
- data/lib/spree/testing_support/factories/return_item_factory.rb +2 -4
- data/lib/spree/testing_support/factories/return_reason_factory.rb +3 -0
- data/lib/spree/testing_support/factories/role_factory.rb +3 -0
- data/lib/spree/testing_support/factories/shipment_factory.rb +2 -3
- data/lib/spree/testing_support/factories/shipping_category_factory.rb +3 -0
- data/lib/spree/testing_support/factories/shipping_method_factory.rb +2 -3
- data/lib/spree/testing_support/factories/shipping_rate_factory.rb +2 -2
- data/lib/spree/testing_support/factories/state_factory.rb +2 -1
- data/lib/spree/testing_support/factories/stock_item_factory.rb +2 -2
- data/lib/spree/testing_support/factories/stock_location_factory.rb +2 -3
- data/lib/spree/testing_support/factories/stock_movement_factory.rb +2 -1
- data/lib/spree/testing_support/factories/stock_package_factory.rb +2 -2
- data/lib/spree/testing_support/factories/store_credit_category_factory.rb +11 -0
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +3 -2
- data/lib/spree/testing_support/factories/store_credit_factory.rb +2 -3
- data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +6 -1
- data/lib/spree/testing_support/factories/store_credit_type_factory.rb +3 -0
- data/lib/spree/testing_support/factories/store_factory.rb +4 -1
- data/lib/spree/testing_support/factories/tax_category_factory.rb +2 -1
- data/lib/spree/testing_support/factories/tax_rate_factory.rb +2 -3
- data/lib/spree/testing_support/factories/taxon_factory.rb +6 -1
- data/lib/spree/testing_support/factories/taxonomy_factory.rb +3 -0
- data/lib/spree/testing_support/factories/user_factory.rb +2 -3
- data/lib/spree/testing_support/factories/variant_factory.rb +2 -4
- data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +2 -2
- data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +2 -3
- data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +2 -2
- data/lib/spree/testing_support/factories/zone_factory.rb +3 -3
- data/lib/spree/testing_support/fixtures/blank.jpg +0 -0
- data/lib/spree/testing_support/job_helpers.rb +24 -0
- data/lib/spree/testing_support/order_walkthrough.rb +1 -1
- data/lib/spree/testing_support/precompiled_assets.rb +15 -0
- data/lib/spree/testing_support/preferences.rb +3 -1
- data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
- data/lib/spree/testing_support/translations.rb +25 -0
- data/{app/models → lib}/spree/user_class_handle.rb +0 -0
- data/lib/tasks/email.rake +3 -2
- data/solidus_core.gemspec +8 -5
- metadata +97 -374
- data/script/rails +0 -10
- data/spec/fixtures/thinking-cat.jpg +0 -0
- data/spec/helpers/base_helper_spec.rb +0 -168
- data/spec/helpers/products_helper_spec.rb +0 -202
- data/spec/helpers/taxons_helper_spec.rb +0 -43
- data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
- data/spec/lib/calculated_adjustments_spec.rb +0 -133
- data/spec/lib/i18n_spec.rb +0 -97
- data/spec/lib/search/base_spec.rb +0 -91
- data/spec/lib/search/variant_spec.rb +0 -115
- data/spec/lib/spree/app_configuration_spec.rb +0 -140
- data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
- data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
- data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
- data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
- data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
- data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
- data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
- data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -48
- data/spec/lib/spree/core/current_store_spec.rb +0 -33
- data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
- data/spec/lib/spree/core/importer/order_spec.rb +0 -484
- data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
- data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
- data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
- data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
- data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
- data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
- data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
- data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
- data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
- data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
- data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
- data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
- data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
- data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
- data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
- data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
- data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
- data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
- data/spec/lib/spree/core/validators/email_spec.rb +0 -53
- data/spec/lib/spree/core/version_spec.rb +0 -19
- data/spec/lib/spree/event/subscriber_spec.rb +0 -85
- data/spec/lib/spree/event_spec.rb +0 -130
- data/spec/lib/spree/localized_number_spec.rb +0 -45
- data/spec/lib/spree/migrations_spec.rb +0 -32
- data/spec/lib/spree/money_spec.rb +0 -298
- data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
- data/spec/lib/spree/permitted_attributes_spec.rb +0 -41
- data/spec/lib/spree/promo/environment_spec.rb +0 -53
- data/spec/lib/tasks/dummy_task.rake +0 -12
- data/spec/lib/tasks/dummy_task_spec.rb +0 -30
- data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
- data/spec/mailers/carton_mailer_spec.rb +0 -44
- data/spec/mailers/order_mailer_spec.rb +0 -117
- data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
- data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
- data/spec/mailers/test_mailer_spec.rb +0 -13
- data/spec/models/spree/ability_spec.rb +0 -279
- data/spec/models/spree/address_spec.rb +0 -399
- data/spec/models/spree/adjustment_reason_spec.rb +0 -11
- data/spec/models/spree/adjustment_spec.rb +0 -339
- data/spec/models/spree/asset_spec.rb +0 -25
- data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
- data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
- data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
- data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
- data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
- data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
- data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
- data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
- data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
- data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
- data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
- data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
- data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
- data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
- data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
- data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
- data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
- data/spec/models/spree/calculator_spec.rb +0 -43
- data/spec/models/spree/carton_spec.rb +0 -145
- data/spec/models/spree/classification_spec.rb +0 -126
- data/spec/models/spree/concerns/display_money_spec.rb +0 -44
- data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
- data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
- data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
- data/spec/models/spree/country_spec.rb +0 -154
- data/spec/models/spree/credit_card_spec.rb +0 -373
- data/spec/models/spree/customer_return_spec.rb +0 -294
- data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
- data/spec/models/spree/exchange_spec.rb +0 -76
- data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
- data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
- data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
- data/spec/models/spree/gateway/bogus_simple.rb +0 -14
- data/spec/models/spree/gateway/bogus_spec.rb +0 -14
- data/spec/models/spree/gateway_spec.rb +0 -14
- data/spec/models/spree/image_spec.rb +0 -25
- data/spec/models/spree/inventory_unit_spec.rb +0 -309
- data/spec/models/spree/line_item_spec.rb +0 -240
- data/spec/models/spree/option_type_spec.rb +0 -16
- data/spec/models/spree/option_value_spec.rb +0 -52
- data/spec/models/spree/order/address_spec.rb +0 -52
- data/spec/models/spree/order/adjustments_spec.rb +0 -29
- data/spec/models/spree/order/callbacks_spec.rb +0 -44
- data/spec/models/spree/order/checkout_spec.rb +0 -740
- data/spec/models/spree/order/finalizing_spec.rb +0 -92
- data/spec/models/spree/order/number_generator_spec.rb +0 -47
- data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
- data/spec/models/spree/order/payment_spec.rb +0 -280
- data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
- data/spec/models/spree/order/state_machine_spec.rb +0 -122
- data/spec/models/spree/order/totals_spec.rb +0 -26
- data/spec/models/spree/order/validations_spec.rb +0 -17
- data/spec/models/spree/order_cancellations_spec.rb +0 -233
- data/spec/models/spree/order_capturing_spec.rb +0 -16
- data/spec/models/spree/order_contents_spec.rb +0 -362
- data/spec/models/spree/order_inventory_spec.rb +0 -285
- data/spec/models/spree/order_merger_spec.rb +0 -162
- data/spec/models/spree/order_mutex_spec.rb +0 -89
- data/spec/models/spree/order_promotion_spec.rb +0 -33
- data/spec/models/spree/order_shipping_spec.rb +0 -247
- data/spec/models/spree/order_spec.rb +0 -1687
- data/spec/models/spree/order_taxation_spec.rb +0 -128
- data/spec/models/spree/order_update_attributes_spec.rb +0 -49
- data/spec/models/spree/order_updater_spec.rb +0 -556
- data/spec/models/spree/payment/cancellation_spec.rb +0 -84
- data/spec/models/spree/payment_create_spec.rb +0 -195
- data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
- data/spec/models/spree/payment_method/check_spec.rb +0 -80
- data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
- data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
- data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
- data/spec/models/spree/payment_method_spec.rb +0 -408
- data/spec/models/spree/payment_spec.rb +0 -1270
- data/spec/models/spree/permission_sets/base_spec.rb +0 -14
- data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
- data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
- data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
- data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
- data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
- data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
- data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
- data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
- data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
- data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
- data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
- data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
- data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
- data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
- data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
- data/spec/models/spree/preference_spec.rb +0 -79
- data/spec/models/spree/preferences/configuration_spec.rb +0 -27
- data/spec/models/spree/preferences/preferable_spec.rb +0 -334
- data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
- data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
- data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
- data/spec/models/spree/preferences/store_spec.rb +0 -40
- data/spec/models/spree/price_spec.rb +0 -150
- data/spec/models/spree/product/scopes_spec.rb +0 -164
- data/spec/models/spree/product_duplicator_spec.rb +0 -92
- data/spec/models/spree/product_filter_spec.rb +0 -28
- data/spec/models/spree/product_property_spec.rb +0 -20
- data/spec/models/spree/product_spec.rb +0 -584
- data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
- data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
- data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
- data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
- data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
- data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
- data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
- data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
- data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
- data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
- data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
- data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
- data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -227
- data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
- data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
- data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
- data/spec/models/spree/promotion_action_spec.rb +0 -44
- data/spec/models/spree/promotion_category_spec.rb +0 -19
- data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
- data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
- data/spec/models/spree/promotion_code_spec.rb +0 -206
- data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
- data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
- data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
- data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
- data/spec/models/spree/promotion_rule_spec.rb +0 -34
- data/spec/models/spree/promotion_spec.rb +0 -945
- data/spec/models/spree/refund_spec.rb +0 -200
- data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
- data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
- data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
- data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
- data/spec/models/spree/reimbursement_spec.rb +0 -278
- data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
- data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
- data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
- data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
- data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
- data/spec/models/spree/return_authorization_spec.rb +0 -226
- data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
- data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
- data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
- data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
- data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
- data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
- data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
- data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
- data/spec/models/spree/return_item_spec.rb +0 -785
- data/spec/models/spree/returns_calculator_spec.rb +0 -16
- data/spec/models/spree/shipment_spec.rb +0 -914
- data/spec/models/spree/shipping_calculator_spec.rb +0 -45
- data/spec/models/spree/shipping_manifest_spec.rb +0 -110
- data/spec/models/spree/shipping_method_spec.rb +0 -292
- data/spec/models/spree/shipping_rate_spec.rb +0 -154
- data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
- data/spec/models/spree/state_spec.rb +0 -43
- data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
- data/spec/models/spree/stock/availability_spec.rb +0 -143
- data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
- data/spec/models/spree/stock/content_item_spec.rb +0 -70
- data/spec/models/spree/stock/differentiator_spec.rb +0 -41
- data/spec/models/spree/stock/estimator_spec.rb +0 -241
- data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
- data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
- data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
- data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
- data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
- data/spec/models/spree/stock/package_spec.rb +0 -182
- data/spec/models/spree/stock/quantifier_spec.rb +0 -113
- data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
- data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
- data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
- data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
- data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
- data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
- data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
- data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
- data/spec/models/spree/stock_item_spec.rb +0 -348
- data/spec/models/spree/stock_location_spec.rb +0 -288
- data/spec/models/spree/stock_movement_spec.rb +0 -58
- data/spec/models/spree/stock_quantities_spec.rb +0 -249
- data/spec/models/spree/store_credit_category_spec.rb +0 -19
- data/spec/models/spree/store_credit_event_spec.rb +0 -328
- data/spec/models/spree/store_credit_spec.rb +0 -900
- data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
- data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
- data/spec/models/spree/store_spec.rb +0 -156
- data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
- data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
- data/spec/models/spree/tax/tax_location_spec.rb +0 -79
- data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
- data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
- data/spec/models/spree/tax_category_spec.rb +0 -50
- data/spec/models/spree/tax_rate_spec.rb +0 -317
- data/spec/models/spree/taxon_spec.rb +0 -197
- data/spec/models/spree/taxonomy_spec.rb +0 -15
- data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
- data/spec/models/spree/unit_cancel_spec.rb +0 -126
- data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
- data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
- data/spec/models/spree/user_spec.rb +0 -247
- data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
- data/spec/models/spree/variant/price_selector_spec.rb +0 -90
- data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
- data/spec/models/spree/variant/scopes_spec.rb +0 -94
- data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
- data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
- data/spec/models/spree/variant_property_rule_spec.rb +0 -85
- data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
- data/spec/models/spree/variant_spec.rb +0 -862
- data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
- data/spec/models/spree/wallet_spec.rb +0 -155
- data/spec/models/spree/zone_spec.rb +0 -248
- data/spec/rails_helper.rb +0 -46
- data/spec/shared_examples/calculator_shared_examples.rb +0 -10
- data/spec/spec_helper.rb +0 -36
- data/spec/support/big_decimal.rb +0 -7
- data/spec/support/concerns/default_price.rb +0 -44
- data/spec/support/concerns/payment_source.rb +0 -66
- data/spec/support/concerns/working_factories.rb +0 -15
- data/spec/support/dummy_ability.rb +0 -7
@@ -19,8 +19,8 @@ module Spree
|
|
19
19
|
|
20
20
|
included do
|
21
21
|
state_machine :reception_status, initial: :awaiting do
|
22
|
-
after_transition to: ::Spree::ReturnItem::COMPLETED_RECEPTION_STATUSES,
|
23
|
-
after_transition to: ::Spree::ReturnItem::COMPLETED_RECEPTION_STATUSES,
|
22
|
+
after_transition to: ::Spree::ReturnItem::COMPLETED_RECEPTION_STATUSES, do: :attempt_accept, if: :can_attempt_accept?
|
23
|
+
after_transition to: ::Spree::ReturnItem::COMPLETED_RECEPTION_STATUSES, do: :check_unexchange
|
24
24
|
after_transition to: :received, do: :process_inventory_unit!
|
25
25
|
|
26
26
|
event(:cancel) { transition to: :cancelled, from: :awaiting }
|
data/lib/spree/core/version.rb
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
# Spree::Encryptor is a thin wrapper around ActiveSupport::MessageEncryptor.
|
5
|
+
class Encryptor
|
6
|
+
# @param key [String] the 256 bits signature key
|
7
|
+
def initialize(key)
|
8
|
+
@crypt = ActiveSupport::MessageEncryptor.new(key)
|
9
|
+
end
|
10
|
+
|
11
|
+
# Encrypt a value
|
12
|
+
# @param value [String] the value to encrypt
|
13
|
+
# @return [String] the encrypted value
|
14
|
+
def encrypt(value)
|
15
|
+
@crypt.encrypt_and_sign(value)
|
16
|
+
end
|
17
|
+
|
18
|
+
# Decrypt an encrypted value
|
19
|
+
# @param encrypted_value [String] the value to decrypt
|
20
|
+
# @return [String] the decrypted value
|
21
|
+
def decrypt(encrypted_value)
|
22
|
+
@crypt.decrypt_and_verify(encrypted_value)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/spree/event.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'event/adapters/active_support_notifications'
|
4
|
+
require_relative 'event/subscriber_registry'
|
4
5
|
require_relative 'event/configuration'
|
5
6
|
require_relative 'event/subscriber'
|
6
7
|
|
@@ -8,6 +9,8 @@ module Spree
|
|
8
9
|
module Event
|
9
10
|
extend self
|
10
11
|
|
12
|
+
delegate :activate_autoloadable_subscribers, :activate_all_subscribers, :deactivate_all_subscribers, to: :subscriber_registry
|
13
|
+
|
11
14
|
# Allows to trigger events that can be subscribed using #subscribe. An
|
12
15
|
# optional block can be passed that will be executed immediately. The
|
13
16
|
# actual code implementation is delegated to the adapter.
|
@@ -21,16 +24,37 @@ module Spree
|
|
21
24
|
# @order.finalize!
|
22
25
|
# end
|
23
26
|
def fire(event_name, opts = {})
|
24
|
-
adapter.fire
|
27
|
+
adapter.fire normalize_name(event_name), opts do
|
25
28
|
yield opts if block_given?
|
26
29
|
end
|
27
30
|
end
|
28
31
|
|
32
|
+
# @deprecated Loads all Solidus' core and application's event subscribers files.
|
33
|
+
# The latter are loaded automatically only when the preference
|
34
|
+
# Spree::Config.events.autoload_subscribers is set to a truthy value.
|
35
|
+
#
|
36
|
+
# Files must be placed under the directory `app/subscribers` and their
|
37
|
+
# name must end with `_subscriber.rb`.
|
38
|
+
#
|
39
|
+
# Loading the files has the side effect of adding their module to the
|
40
|
+
# list in Spree::Event.subscribers.
|
41
|
+
def require_subscriber_files
|
42
|
+
Spree::Deprecation.warn("#{self}.require_subscriber_files is deprecated and will be removed in Solidus 3.0.", caller)
|
43
|
+
subscriber_registry.send(:require_subscriber_files)
|
44
|
+
end
|
45
|
+
|
29
46
|
# Subscribe to an event with the given name. The provided block is executed
|
30
47
|
# every time the subscribed event is fired.
|
31
48
|
#
|
32
|
-
# @param [String] event_name the name of the event.
|
33
|
-
# will be added automatically if not present
|
49
|
+
# @param [String, Regexp] event_name the name of the event.
|
50
|
+
# When String, the suffix ".spree" will be added automatically if not present,
|
51
|
+
# when using the default adapter for ActiveSupportNotifications.
|
52
|
+
# When Regexp, due to the unpredictability of all possible regexp combinations,
|
53
|
+
# adding the suffix is developer's responsibility (if you don't, you will
|
54
|
+
# subscribe to all notifications, including internal Rails notifications
|
55
|
+
# as well).
|
56
|
+
#
|
57
|
+
# @see Spree::Event::Adapters::ActiveSupportNotifications#normalize_name
|
34
58
|
#
|
35
59
|
# @return a subscription object that can be used as reference in order
|
36
60
|
# to remove the subscription
|
@@ -43,7 +67,7 @@ module Spree
|
|
43
67
|
#
|
44
68
|
# @see Spree::Event#unsubscribe
|
45
69
|
def subscribe(event_name, &block)
|
46
|
-
name =
|
70
|
+
name = normalize_name(event_name)
|
47
71
|
listener_names << name
|
48
72
|
adapter.subscribe(name, &block)
|
49
73
|
end
|
@@ -61,7 +85,7 @@ module Spree
|
|
61
85
|
# @example Unsubscribe an event by name with explicit prefix
|
62
86
|
# Spree::Event.unsubscribe('order_finalized.spree')
|
63
87
|
def unsubscribe(subscriber)
|
64
|
-
name_or_subscriber = subscriber.is_a?(String) ?
|
88
|
+
name_or_subscriber = subscriber.is_a?(String) ? normalize_name(subscriber) : subscriber
|
65
89
|
adapter.unsubscribe(name_or_subscriber)
|
66
90
|
end
|
67
91
|
|
@@ -95,19 +119,28 @@ module Spree
|
|
95
119
|
#
|
96
120
|
# @see Spree::Event::Configuration#suffix
|
97
121
|
def suffix
|
122
|
+
Spree::Deprecation.warn "This method is deprecated and will be removed. Please use Event::Adapters::ActiveSupportNotifications#suffix"
|
98
123
|
Spree::Config.events.suffix
|
99
124
|
end
|
100
125
|
|
126
|
+
# @deprecated
|
101
127
|
# @!attribute [r] subscribers
|
102
128
|
# @return [Array<Spree::Event::Subscriber>] A list of subscribers used to support class reloading for Spree::Event::Subscriber instances
|
103
129
|
def subscribers
|
130
|
+
Spree::Deprecation.warn("`#{self}.subscribers` is deprecated. Please use `#{self}.subscriber_registry` instead.", caller)
|
104
131
|
Spree::Config.events.subscribers
|
105
132
|
end
|
106
133
|
|
134
|
+
# @!attribute [r] subscribers
|
135
|
+
# @return <Spree::Event::SubscriberRegistry> The registry for supporting class reloading for Spree::Event::Subscriber instances
|
136
|
+
def subscriber_registry
|
137
|
+
Spree::Config.events.subscriber_registry
|
138
|
+
end
|
139
|
+
|
107
140
|
private
|
108
141
|
|
109
|
-
def
|
110
|
-
|
142
|
+
def normalize_name(name)
|
143
|
+
adapter.normalize_name(name)
|
111
144
|
end
|
112
145
|
|
113
146
|
def listener_names
|
@@ -4,6 +4,8 @@ module Spree
|
|
4
4
|
module Event
|
5
5
|
module Adapters
|
6
6
|
module ActiveSupportNotifications
|
7
|
+
class InvalidEventNameType < StandardError; end
|
8
|
+
|
7
9
|
extend self
|
8
10
|
|
9
11
|
def fire(event_name, opts)
|
@@ -29,6 +31,36 @@ module Spree
|
|
29
31
|
memo[name] = listeners if listeners.present?
|
30
32
|
end
|
31
33
|
end
|
34
|
+
|
35
|
+
# Normalizes the event name according to this specific adapter rules.
|
36
|
+
# When the event name is a string or a symbol, if the suffix is missing, then
|
37
|
+
# it is added automatically.
|
38
|
+
# When the event name is a regexp, due to the huge variability of regexps, adding
|
39
|
+
# or not the suffix is developer's responsibility (if you don't, you will subscribe
|
40
|
+
# to all internal rails events as well).
|
41
|
+
# When the event type is not supported, an error is raised.
|
42
|
+
#
|
43
|
+
# @param [String, Symbol, Regexp] event_name the event name, with or without the
|
44
|
+
# suffix (Spree::Config.events.suffix defaults to `.spree`).
|
45
|
+
def normalize_name(event_name)
|
46
|
+
case event_name
|
47
|
+
when Regexp
|
48
|
+
event_name
|
49
|
+
when String, Symbol
|
50
|
+
name = event_name.to_s
|
51
|
+
name.end_with?(suffix) ? name : [name, suffix].join
|
52
|
+
else
|
53
|
+
raise InvalidEventNameType, "Invalid event name type: #{event_name.class}"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# The suffix used for namespacing event names, defaults to
|
58
|
+
# `.spree`
|
59
|
+
#
|
60
|
+
# @see Spree::Event::Configuration#suffix
|
61
|
+
def suffix
|
62
|
+
Spree::Config.events.suffix
|
63
|
+
end
|
32
64
|
end
|
33
65
|
end
|
34
66
|
end
|
@@ -1,17 +1,22 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'spree/core/class_constantizer'
|
4
|
-
|
5
3
|
module Spree
|
6
4
|
module Event
|
7
5
|
class Configuration
|
6
|
+
def subscriber_registry
|
7
|
+
@subscriber_registry ||= Spree::Event::SubscriberRegistry.new
|
8
|
+
end
|
9
|
+
|
8
10
|
def subscribers
|
9
|
-
|
10
|
-
|
11
|
-
end
|
11
|
+
Spree::Deprecation.warn("`Spree::Config.events.subscribers` is deprecated. Please use `Spree::Config.events.subscriber_registry`.", caller)
|
12
|
+
subscriber_registry.send(:registry).keys.map { |module_name| module_name.constantize }
|
12
13
|
end
|
13
14
|
|
14
|
-
attr_writer :adapter, :suffix
|
15
|
+
attr_writer :adapter, :suffix, :autoload_subscribers
|
16
|
+
|
17
|
+
def autoload_subscribers
|
18
|
+
@autoload_subscribers.nil? ? true : !!@autoload_subscribers
|
19
|
+
end
|
15
20
|
|
16
21
|
def adapter
|
17
22
|
@adapter ||= Spree::Event::Adapters::ActiveSupportNotifications
|
@@ -19,13 +19,20 @@ module Spree
|
|
19
19
|
# end
|
20
20
|
# end
|
21
21
|
#
|
22
|
-
#
|
22
|
+
# # Optional, required only when the subscriber needs to be loaded manually.
|
23
|
+
# #
|
24
|
+
# # If Spree::Config.events.autoload_subscribers is set to `true` and the module
|
25
|
+
# # file matches the pattern `app/subscribers/**/*_subscriber.rb` then it will
|
26
|
+
# # be loaded automatically at boot and this line can be removed:
|
27
|
+
# EmailSender.activate
|
23
28
|
module Subscriber
|
24
29
|
def self.included(base)
|
25
30
|
base.extend base
|
26
31
|
|
27
32
|
base.mattr_accessor :event_actions
|
28
33
|
base.event_actions = {}
|
34
|
+
|
35
|
+
Spree::Event.subscriber_registry.register(base)
|
29
36
|
end
|
30
37
|
|
31
38
|
# Declares a method name in the including module that can be subscribed/unsubscribed
|
@@ -52,32 +59,45 @@ module Spree
|
|
52
59
|
# end
|
53
60
|
# end
|
54
61
|
def event_action(method_name, event_name: nil)
|
55
|
-
|
62
|
+
mattr_writer "#{method_name}_handler"
|
63
|
+
|
64
|
+
define_method "#{method_name}_handler" do
|
65
|
+
Spree::Deprecation.warn("#{name}.#{method_name}_handler and #{name}.#{method_name}_handler= from the old events mapping interface are deprecated. Please use the new mapping stored in Spree::Event.subscribers.", caller)
|
66
|
+
|
67
|
+
class_variable_get("@@#{method_name}_handler")
|
68
|
+
end
|
69
|
+
|
56
70
|
event_actions[method_name] = (event_name || method_name).to_s
|
57
71
|
end
|
58
72
|
|
59
|
-
#
|
73
|
+
# Activates all declared event actions to their events. Only actions that are activated
|
60
74
|
# will be called when their event fires.
|
61
75
|
#
|
62
|
-
# @example
|
63
|
-
# EmailSender.
|
76
|
+
# @example activate all event actions for module 'EmailSender'
|
77
|
+
# EmailSender.activate
|
78
|
+
def activate
|
79
|
+
Spree::Event.subscriber_registry.activate_subscriber(self)
|
80
|
+
end
|
81
|
+
|
82
|
+
# Deactivates all declared event actions (or a single specific one) from their events.
|
83
|
+
# This means that when an event fires then none of its unsubscribed event actions will
|
84
|
+
# be called.
|
85
|
+
# @example deactivate all event actions for module 'EmailSender'
|
86
|
+
# EmailSender.deactivate
|
87
|
+
# @example deactivate only order_finalized for module 'EmailSender'
|
88
|
+
# EmailSender.deactivate(:order_finalized)
|
89
|
+
def deactivate(event_action_name = nil)
|
90
|
+
Spree::Event.subscriber_registry.deactivate_subscriber(self, event_action_name)
|
91
|
+
end
|
92
|
+
|
64
93
|
def subscribe!
|
65
|
-
|
66
|
-
|
67
|
-
send "#{event_action}_handler=", Spree::Event.subscribe(event_name) { |event|
|
68
|
-
send event_action, event
|
69
|
-
}
|
70
|
-
end
|
94
|
+
Spree::Deprecation.warn("#{self}.subscribe! is deprecated. Please use `#{self}.activate`.", caller)
|
95
|
+
activate
|
71
96
|
end
|
72
97
|
|
73
|
-
# Unsubscribes all declared event actions from their events. This means that when an event
|
74
|
-
# fires then none of its unsubscribed event actions will be called.
|
75
|
-
# @example unsubscribe all event actions for module 'EmailSender'
|
76
|
-
# EmailSender.unsubscribe!
|
77
98
|
def unsubscribe!
|
78
|
-
|
79
|
-
|
80
|
-
end
|
99
|
+
Spree::Deprecation.warn("#{self}.unsubscribe! is deprecated. Please use `#{self}.deactivate`.", caller)
|
100
|
+
deactivate
|
81
101
|
end
|
82
102
|
end
|
83
103
|
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module Event
|
5
|
+
class SubscriberRegistry
|
6
|
+
def initialize
|
7
|
+
@registry = {}
|
8
|
+
@semaphore = Mutex.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def register(subscriber)
|
12
|
+
registry[subscriber.name] ||= {}
|
13
|
+
end
|
14
|
+
|
15
|
+
def activate_autoloadable_subscribers
|
16
|
+
require_subscriber_files
|
17
|
+
activate_all_subscribers
|
18
|
+
end
|
19
|
+
|
20
|
+
def activate_all_subscribers
|
21
|
+
registry.each_key { |subscriber_name| activate_subscriber(subscriber_name.constantize) }
|
22
|
+
end
|
23
|
+
|
24
|
+
def deactivate_all_subscribers
|
25
|
+
registry.each_key { |subscriber_name| deactivate_subscriber(subscriber_name.constantize) }
|
26
|
+
end
|
27
|
+
|
28
|
+
def activate_subscriber(subscriber)
|
29
|
+
return unless registry[subscriber.name]
|
30
|
+
|
31
|
+
subscriber.event_actions.each do |event_action, event_name|
|
32
|
+
@semaphore.synchronize do
|
33
|
+
unsafe_deactivate_subscriber(subscriber, event_action)
|
34
|
+
|
35
|
+
subscription = Spree::Event.subscribe(event_name) { |event| subscriber.send(event_action, event) }
|
36
|
+
|
37
|
+
# deprecated mappings, to be removed when Solidus 2.10 is not supported anymore:
|
38
|
+
subscriber.send("#{event_action}_handler=", subscription)
|
39
|
+
|
40
|
+
registry[subscriber.name][event_action] = subscription
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def deactivate_subscriber(subscriber, event_action_name = nil)
|
46
|
+
@semaphore.synchronize do
|
47
|
+
unsafe_deactivate_subscriber(subscriber, event_action_name)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
attr_reader :registry
|
54
|
+
|
55
|
+
# Loads all Solidus' core and application's event subscribers files.
|
56
|
+
# The latter are loaded automatically only when the preference
|
57
|
+
# Spree::Config.events.autoload_subscribers is set to a truthy value.
|
58
|
+
#
|
59
|
+
# Files must be placed under the directory `app/subscribers` and their
|
60
|
+
# name must end with `_subscriber.rb`.
|
61
|
+
#
|
62
|
+
# Loading the files has the side effect of adding their module to the
|
63
|
+
# list in Spree::Event.subscribers.
|
64
|
+
def require_subscriber_files
|
65
|
+
pattern = "app/subscribers/**/*_subscriber.rb"
|
66
|
+
|
67
|
+
# Load Solidus subscribers
|
68
|
+
# rubocop:disable Rails/DynamicFindBy
|
69
|
+
solidus_core_dir = Gem::Specification.find_by_name('solidus_core').gem_dir
|
70
|
+
# rubocop:enable Rails/DynamicFindBy
|
71
|
+
Dir.glob(File.join(solidus_core_dir, pattern)) { |c| require_dependency(c.to_s) }
|
72
|
+
|
73
|
+
# Load application subscribers, only when the flag is set to true:
|
74
|
+
if Spree::Config.events.autoload_subscribers
|
75
|
+
Rails.root.glob(pattern) { |c| require_dependency(c.to_s) }
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def unsafe_deactivate_subscriber(subscriber, event_action_name = nil)
|
80
|
+
to_unsubscribe = Array.wrap(event_action_name || subscriber.event_actions.keys)
|
81
|
+
|
82
|
+
to_unsubscribe.each do |event_action|
|
83
|
+
if (subscription = registry.dig(subscriber.name, event_action))
|
84
|
+
Spree::Event.unsubscribe(subscription)
|
85
|
+
|
86
|
+
registry[subscriber.name].delete(event_action)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
data/lib/spree/i18n.rb
CHANGED
@@ -31,7 +31,7 @@ module Spree
|
|
31
31
|
Instead use I18n.t('spree.your_translation_key')
|
32
32
|
WARN
|
33
33
|
options[:scope] = [:spree, *options[:scope]]
|
34
|
-
TranslationHelperWrapper.new.translate(key, options)
|
34
|
+
TranslationHelperWrapper.new.translate(key, **options)
|
35
35
|
end
|
36
36
|
|
37
37
|
alias_method :t, :translate
|
@@ -5,7 +5,8 @@ module Spree
|
|
5
5
|
class CartonPreview < ActionMailer::Preview
|
6
6
|
def shipped
|
7
7
|
carton = Carton.joins(:orders).last
|
8
|
-
raise "Your database needs at one shipped order with a carton to render this preview" unless carton
|
8
|
+
raise "Your database needs at least one shipped order with a carton to render this preview" unless carton
|
9
|
+
|
9
10
|
Spree::Config.carton_shipped_email_class.shipped_email(order: carton.orders.first, carton: carton)
|
10
11
|
end
|
11
12
|
end
|
@@ -2,20 +2,40 @@
|
|
2
2
|
|
3
3
|
module Spree
|
4
4
|
module ParanoiaDeprecations
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
module InstanceMethods
|
6
|
+
def paranoia_destroy
|
7
|
+
Spree::Deprecation.warn <<~WARN, caller
|
8
|
+
Calling #destroy (or #paranoia_destroy) on a #{self.class} currently performs a soft-destroy using the paranoia gem.
|
9
|
+
In Solidus 3.0, paranoia will be removed, and this will perform a HARD destroy instead. To continue soft-deleting, use #discard instead.
|
10
|
+
WARN
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def paranoia_delete
|
15
|
+
Spree::Deprecation.warn <<~WARN, caller
|
16
|
+
Calling #delete (or #paranoia_delete) on a #{self.class} currently performs a soft-destroy using the paranoia gem.
|
17
|
+
In Solidus 3.0, paranoia will be removed, and this will perform a HARD destroy instead. To continue soft-deleting, use #discard instead.
|
18
|
+
WARN
|
19
|
+
super
|
20
|
+
end
|
11
21
|
end
|
12
22
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
23
|
+
module ClassMethods
|
24
|
+
def with_deleted
|
25
|
+
Spree::Deprecation.warn <<~WARN, caller
|
26
|
+
#{self}.with_deleted has been deprecated. Use #{self}.with_discarded instead.
|
27
|
+
In Solidus 3.0, paranoia will be removed, and this method will be replaced by #{self}.with_discarded.
|
28
|
+
WARN
|
29
|
+
super
|
30
|
+
end
|
31
|
+
|
32
|
+
def only_deleted
|
33
|
+
Spree::Deprecation.warn <<~WARN, caller
|
34
|
+
#{self}.only_deleted has been deprecated. Use #{self}.discarded instead.
|
35
|
+
In Solidus 3.0, paranoia will be removed, and this method will be replaced by #{self}.discarded.
|
36
|
+
WARN
|
37
|
+
super
|
38
|
+
end
|
19
39
|
end
|
20
40
|
end
|
21
41
|
end
|