solidus_core 4.6.1 → 4.7.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/Rakefile +13 -13
- data/app/controllers/spree/base_controller.rb +2 -2
- data/app/helpers/spree/base_helper.rb +24 -24
- data/app/helpers/spree/checkout_helper.rb +7 -7
- data/app/helpers/spree/core/controller_helpers/auth.rb +1 -1
- data/app/helpers/spree/core/controller_helpers/common.rb +3 -2
- data/app/helpers/spree/core/controller_helpers/order.rb +3 -5
- data/app/helpers/spree/core/controller_helpers/payment_parameters.rb +1 -2
- data/app/helpers/spree/core/controller_helpers/strong_parameters.rb +10 -10
- data/app/helpers/spree/products_helper.rb +5 -5
- data/app/helpers/spree/store_helper.rb +1 -1
- data/app/mailers/spree/carton_mailer.rb +3 -3
- data/app/mailers/spree/order_mailer.rb +4 -4
- data/app/mailers/spree/reimbursement_mailer.rb +2 -2
- data/app/models/concerns/spree/active_storage_adapter/attachment.rb +5 -5
- data/app/models/concerns/spree/active_storage_adapter/normalization.rb +5 -5
- data/app/models/concerns/spree/active_storage_adapter.rb +2 -2
- data/app/models/concerns/spree/adjustment_source.rb +4 -4
- data/app/models/concerns/spree/display_money.rb +2 -2
- data/app/models/concerns/spree/named_type.rb +1 -1
- data/app/models/concerns/spree/ordered_property_value_list.rb +2 -2
- data/app/models/concerns/spree/preferences/persistable.rb +1 -1
- data/app/models/concerns/spree/ransackable_attributes.rb +1 -0
- data/app/models/concerns/spree/soft_deletable.rb +2 -1
- data/app/models/concerns/spree/state_change_tracking.rb +11 -7
- data/app/models/concerns/spree/user_address_book.rb +12 -12
- data/app/models/concerns/spree/user_methods.rb +9 -9
- data/app/models/concerns/spree/user_reporting.rb +1 -0
- data/app/models/spree/ability.rb +1 -1
- data/app/models/spree/address/name.rb +1 -1
- data/app/models/spree/address.rb +7 -7
- data/app/models/spree/adjustment.rb +11 -10
- data/app/models/spree/adjustment_reason.rb +2 -2
- data/app/models/spree/billing_integration.rb +2 -2
- data/app/models/spree/calculator/default_tax.rb +2 -2
- data/app/models/spree/calculator/flat_fee.rb +1 -1
- data/app/models/spree/calculator/flat_rate.rb +2 -2
- data/app/models/spree/calculator/returns/default_refund_amount.rb +3 -3
- data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +2 -2
- data/app/models/spree/calculator/shipping/flat_rate.rb +3 -3
- data/app/models/spree/calculator/shipping/flexi_rate.rb +8 -8
- data/app/models/spree/calculator/shipping/per_item.rb +3 -3
- data/app/models/spree/calculator/shipping/price_sack.rb +3 -3
- data/app/models/spree/calculator.rb +31 -6
- data/app/models/spree/carton.rb +4 -4
- data/app/models/spree/classification.rb +2 -2
- data/app/models/spree/core/state_machines/order/class_methods.rb +3 -3
- data/app/models/spree/core/state_machines/return_item/acceptance_status.rb +1 -1
- data/app/models/spree/country.rb +1 -1
- data/app/models/spree/credit_card.rb +27 -27
- data/app/models/spree/customer_return.rb +5 -4
- data/app/models/spree/distributed_amounts_handler.rb +1 -1
- data/app/models/spree/fulfilment_changer.rb +22 -22
- data/app/models/spree/image/active_storage_attachment.rb +2 -2
- data/app/models/spree/image/paperclip_attachment.rb +8 -8
- data/app/models/spree/in_memory_order_updater.rb +262 -0
- data/app/models/spree/inventory_unit.rb +11 -11
- data/app/models/spree/item_total.rb +1 -1
- data/app/models/spree/legacy_user.rb +2 -2
- data/app/models/spree/line_item.rb +21 -11
- data/app/models/spree/log_entry.rb +3 -3
- data/app/models/spree/mergeable_orders_finder.rb +44 -0
- data/app/models/spree/money.rb +2 -1
- data/app/models/spree/null_promotion_adjuster.rb +1 -1
- data/app/models/spree/option_type.rb +1 -1
- data/app/models/spree/option_value.rb +2 -2
- data/app/models/spree/order/number_generator.rb +1 -1
- data/app/models/spree/order.rb +66 -64
- data/app/models/spree/order_cancellations.rb +1 -3
- data/app/models/spree/order_inventory.rb +5 -8
- data/app/models/spree/order_mutex.rb +1 -1
- data/app/models/spree/order_shipping.rb +1 -1
- data/app/models/spree/order_updater.rb +59 -37
- data/app/models/spree/payment/cancellation.rb +2 -2
- data/app/models/spree/payment/processing.rb +22 -22
- data/app/models/spree/payment.rb +26 -26
- data/app/models/spree/payment_capture_event.rb +2 -2
- data/app/models/spree/payment_create.rb +1 -1
- data/app/models/spree/payment_method/bogus_credit_card.rb +18 -18
- data/app/models/spree/payment_method/check.rb +3 -3
- data/app/models/spree/payment_method/credit_card.rb +1 -1
- data/app/models/spree/payment_method/simple_bogus_credit_card.rb +3 -3
- data/app/models/spree/payment_method/store_credit.rb +13 -13
- data/app/models/spree/payment_method.rb +12 -11
- data/app/models/spree/payment_source.rb +2 -2
- data/app/models/spree/permission_sets/dashboard_display.rb +3 -3
- data/app/models/spree/permission_sets/default_customer.rb +1 -1
- data/app/models/spree/preference.rb +1 -1
- data/app/models/spree/price.rb +7 -6
- data/app/models/spree/product/scopes.rb +23 -23
- data/app/models/spree/product.rb +37 -41
- data/app/models/spree/product_option_type.rb +2 -2
- data/app/models/spree/product_property.rb +3 -3
- data/app/models/spree/refund.rb +10 -10
- data/app/models/spree/refund_reason.rb +2 -2
- data/app/models/spree/reimbursement/credit.rb +1 -1
- data/app/models/spree/reimbursement.rb +8 -8
- data/app/models/spree/reimbursement_tax_calculator.rb +1 -1
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +1 -1
- data/app/models/spree/reimbursement_type.rb +2 -2
- data/app/models/spree/return_authorization.rb +7 -6
- data/app/models/spree/return_item/eligibility_validator/base_validator.rb +2 -2
- data/app/models/spree/return_item/eligibility_validator/default.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/inventory_shipped.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/order_completed.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/rma_required.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +1 -1
- data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +6 -6
- data/app/models/spree/return_item.rb +31 -30
- data/app/models/spree/return_reason.rb +1 -1
- data/app/models/spree/role.rb +1 -1
- data/app/models/spree/role_user.rb +1 -1
- data/app/models/spree/shipment.rb +37 -29
- data/app/models/spree/shipping_method.rb +9 -9
- data/app/models/spree/shipping_method_category.rb +2 -2
- data/app/models/spree/shipping_rate.rb +12 -10
- data/app/models/spree/shipping_rate_tax.rb +5 -4
- data/app/models/spree/simple_order_contents.rb +2 -2
- data/app/models/spree/state.rb +1 -1
- data/app/models/spree/state_change_tracker.rb +31 -0
- data/app/models/spree/stock/availability.rb +9 -9
- data/app/models/spree/stock/availability_validator.rb +3 -3
- data/app/models/spree/stock/differentiator.rb +2 -2
- data/app/models/spree/stock/estimator.rb +4 -4
- data/app/models/spree/stock/inventory_validator.rb +1 -1
- data/app/models/spree/stock/package.rb +3 -3
- data/app/models/spree/stock_item.rb +5 -5
- data/app/models/spree/stock_location.rb +6 -6
- data/app/models/spree/stock_movement.rb +2 -2
- data/app/models/spree/stock_quantities.rb +2 -2
- data/app/models/spree/store.rb +3 -3
- data/app/models/spree/store_credit.rb +30 -29
- data/app/models/spree/store_credit_category.rb +2 -2
- data/app/models/spree/store_credit_event.rb +6 -6
- data/app/models/spree/store_credit_reason.rb +1 -1
- data/app/models/spree/store_credit_type.rb +3 -3
- data/app/models/spree/store_selector/by_server_name.rb +1 -1
- data/app/models/spree/store_selector/legacy.rb +1 -1
- data/app/models/spree/tax/item_tax.rb +1 -0
- data/app/models/spree/tax/order_tax.rb +1 -0
- data/app/models/spree/tax_category.rb +3 -3
- data/app/models/spree/tax_rate.rb +5 -5
- data/app/models/spree/tax_rate_tax_category.rb +2 -2
- data/app/models/spree/taxon/active_storage_attachment.rb +2 -2
- data/app/models/spree/taxon/paperclip_attachment.rb +4 -4
- data/app/models/spree/taxon.rb +16 -17
- data/app/models/spree/taxon_brand_selector.rb +3 -3
- data/app/models/spree/unauthorized_redirect_handler.rb +1 -1
- data/app/models/spree/unit_cancel.rb +4 -4
- data/app/models/spree/user_address.rb +3 -3
- data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +6 -8
- data/app/models/spree/user_last_url_storer.rb +1 -1
- data/app/models/spree/variant/price_selector.rb +1 -1
- data/app/models/spree/variant/scopes.rb +9 -9
- data/app/models/spree/variant.rb +25 -25
- data/app/models/spree/variant_property_rule.rb +2 -2
- data/app/models/spree/variant_property_rule_condition.rb +1 -1
- data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +4 -4
- data/app/models/spree/wallet/default_payment_builder.rb +1 -1
- data/app/models/spree/wallet_payment_source.rb +2 -2
- data/app/models/spree/zone.rb +18 -18
- data/app/models/spree/zone_member.rb +1 -1
- data/app/subscribers/spree/carton_shipped_mailer_subscriber.rb +2 -2
- data/app/subscribers/spree/order_cancel_mailer_subscriber.rb +2 -2
- data/app/subscribers/spree/order_confirmation_mailer_subscriber.rb +2 -2
- data/app/subscribers/spree/order_inventory_cancellation_mailer_subscriber.rb +2 -2
- data/app/subscribers/spree/reimbursement_mailer_subscriber.rb +2 -2
- data/config/initializers/assets.rb +1 -1
- data/config/initializers/db_query_matchers.rb +9 -0
- data/config/initializers/friendly_id.rb +2 -2
- data/config/initializers/inflections.rb +1 -1
- data/config/initializers/money.rb +1 -1
- data/config/locales/en.yml +1 -0
- data/db/default/spree/countries.rb +7 -7
- data/db/default/spree/return_reasons.rb +11 -11
- data/db/default/spree/stock_locations.rb +1 -1
- data/db/default/spree/store_credit.rb +3 -4
- data/db/default/spree/stores.rb +1 -1
- data/db/default/spree/zones.rb +5 -5
- data/db/migrate/20160101010000_solidus_one_four.rb +16 -16
- data/db/migrate/20160420044191_create_spree_wallet_payment_sources.rb +3 -3
- data/db/migrate/20160420181916_migrate_credit_cards_to_wallet_payment_sources.rb +7 -6
- data/db/migrate/20161014221052_add_available_to_columns_and_remove_display_on_from_payment_methods.rb +10 -10
- data/db/migrate/20161123154034_add_available_to_users_and_remove_display_on_from_shipping_methods.rb +6 -6
- data/db/migrate/20161129035810_add_index_to_spree_payments_number.rb +1 -1
- data/db/migrate/20170319191942_remove_order_id_from_inventory_units.rb +4 -4
- data/db/migrate/20180322142651_add_amount_remaining_to_store_credit_events.rb +9 -16
- data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +1 -0
- data/db/migrate/20210815004823_add_unique_index_to_option_values_variants.rb +3 -3
- data/db/migrate/20250207104016_add_primary_taxon_to_products.rb +1 -1
- data/db/migrate/20250214094207_add_reverse_charge_status_to_store.rb +1 -1
- data/db/migrate/20250225051308_add_vat_id_email_and_reverse_charge_status_to_addresses.rb +1 -1
- data/db/migrate/20250605105424_add_shipping_category_foreign_keys.rb +3 -3
- data/db/seeds.rb +3 -3
- data/lib/generators/solidus/install/app_templates/authentication/custom.rb +2 -2
- data/lib/generators/solidus/install/app_templates/authentication/devise.rb +3 -3
- data/lib/generators/solidus/install/app_templates/authentication/existing.rb +3 -1
- data/lib/generators/solidus/install/app_templates/frontend/starter.rb +1 -1
- data/lib/generators/solidus/install/app_templates/payment_method/braintree.rb +1 -1
- data/lib/generators/solidus/install/app_templates/payment_method/paypal.rb +1 -1
- data/lib/generators/solidus/install/app_templates/payment_method/stripe.rb +2 -2
- data/lib/generators/solidus/install/install_generator.rb +51 -51
- data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +3 -0
- data/lib/generators/solidus/update/update_generator.rb +29 -29
- data/lib/generators/spree/custom_user/custom_user_generator.rb +6 -6
- data/lib/generators/spree/dummy/dummy_generator.rb +22 -24
- data/lib/generators/spree/dummy/templates/rails/boot.rb +3 -3
- data/lib/generators/spree/dummy/templates/rails/test.rb +4 -4
- data/lib/solidus_core.rb +1 -1
- data/lib/spree/app_configuration.rb +66 -47
- data/lib/spree/bus.rb +1 -1
- data/lib/spree/config.rb +1 -1
- data/lib/spree/core/active_merchant_dependencies.rb +8 -8
- data/lib/spree/core/class_constantizer.rb +1 -1
- data/lib/spree/core/engine.rb +15 -15
- data/lib/spree/core/environment.rb +1 -1
- data/lib/spree/core/environment_extension.rb +2 -2
- data/lib/spree/core/importer/order.rb +15 -15
- data/lib/spree/core/importer/product.rb +4 -4
- data/lib/spree/core/importer.rb +2 -2
- data/lib/spree/core/null_promotion_configuration.rb +7 -7
- data/lib/spree/core/permalinks.rb +1 -1
- data/lib/spree/core/product_filters.rb +94 -93
- data/lib/spree/core/role_configuration.rb +3 -3
- data/lib/spree/core/search/base.rb +5 -6
- data/lib/spree/core/search/variant.rb +3 -3
- data/lib/spree/core/stock_configuration.rb +10 -49
- data/lib/spree/core/validators/email.rb +1 -1
- data/lib/spree/core/version.rb +3 -3
- data/lib/spree/core/versioned_value.rb +4 -6
- data/lib/spree/core.rb +49 -49
- data/lib/spree/deprecated_instance_variable_proxy.rb +1 -1
- data/lib/spree/deprecation.rb +1 -1
- data/lib/spree/deprecator.rb +2 -2
- data/lib/spree/i18n.rb +2 -2
- data/lib/spree/localized_number.rb +3 -3
- data/lib/spree/manipulative_query_monitor.rb +19 -0
- data/lib/spree/migrations.rb +2 -2
- data/lib/spree/permitted_attributes.rb +10 -10
- data/lib/spree/preferences/configuration.rb +5 -5
- data/lib/spree/preferences/preferable.rb +8 -10
- data/lib/spree/preferences/preferable_class_methods.rb +16 -16
- data/lib/spree/preferences/preference_differentiator.rb +1 -1
- data/lib/spree/preferences/scoped_store.rb +2 -2
- data/lib/spree/preferences/static_model_preferences.rb +2 -2
- data/lib/spree/preferences/store.rb +6 -6
- data/lib/spree/testing_support/ability_helpers.rb +30 -30
- data/lib/spree/testing_support/authorization_helpers.rb +6 -5
- data/lib/spree/testing_support/blacklist_urls.rb +1 -1
- data/lib/spree/testing_support/bus_helpers.rb +1 -1
- data/lib/spree/testing_support/capybara_driver.rb +1 -1
- data/lib/spree/testing_support/capybara_ext.rb +12 -12
- data/lib/spree/testing_support/common_rake.rb +17 -16
- data/lib/spree/testing_support/dummy_ability.rb +1 -1
- data/lib/spree/testing_support/dummy_app/migrations.rb +1 -1
- data/lib/spree/testing_support/dummy_app/rake_tasks.rb +5 -5
- data/lib/spree/testing_support/dummy_app/routes.rb +1 -1
- data/lib/spree/testing_support/dummy_app.rb +34 -34
- data/lib/spree/testing_support/extension_rake.rb +2 -2
- data/lib/spree/testing_support/factories/address_factory.rb +12 -12
- data/lib/spree/testing_support/factories/adjustment_factory.rb +7 -7
- data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +1 -1
- data/lib/spree/testing_support/factories/calculator_factory.rb +6 -6
- data/lib/spree/testing_support/factories/carton_factory.rb +1 -1
- data/lib/spree/testing_support/factories/country_factory.rb +3 -3
- data/lib/spree/testing_support/factories/credit_card_factory.rb +3 -3
- data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -2
- data/lib/spree/testing_support/factories/image_factory.rb +2 -2
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +4 -4
- data/lib/spree/testing_support/factories/line_item_factory.rb +2 -2
- data/lib/spree/testing_support/factories/option_type_factory.rb +2 -2
- data/lib/spree/testing_support/factories/option_value_factory.rb +2 -2
- data/lib/spree/testing_support/factories/order_factory.rb +16 -16
- data/lib/spree/testing_support/factories/payment_factory.rb +9 -9
- data/lib/spree/testing_support/factories/payment_method_factory.rb +10 -10
- data/lib/spree/testing_support/factories/price_factory.rb +2 -2
- data/lib/spree/testing_support/factories/product_factory.rb +2 -2
- data/lib/spree/testing_support/factories/product_option_type_factory.rb +1 -1
- data/lib/spree/testing_support/factories/product_property_factory.rb +1 -1
- data/lib/spree/testing_support/factories/property_factory.rb +3 -3
- data/lib/spree/testing_support/factories/refund_factory.rb +2 -2
- data/lib/spree/testing_support/factories/refund_reason_factory.rb +1 -1
- data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
- data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +1 -1
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +3 -3
- data/lib/spree/testing_support/factories/return_item_factory.rb +1 -1
- data/lib/spree/testing_support/factories/return_reason_factory.rb +1 -1
- data/lib/spree/testing_support/factories/role_factory.rb +2 -2
- data/lib/spree/testing_support/factories/shipment_factory.rb +3 -3
- data/lib/spree/testing_support/factories/shipping_category_factory.rb +1 -1
- data/lib/spree/testing_support/factories/shipping_method_factory.rb +7 -7
- data/lib/spree/testing_support/factories/shipping_rate_factory.rb +1 -1
- data/lib/spree/testing_support/factories/state_factory.rb +4 -4
- data/lib/spree/testing_support/factories/stock_item_factory.rb +1 -1
- data/lib/spree/testing_support/factories/stock_location_factory.rb +7 -7
- data/lib/spree/testing_support/factories/stock_movement_factory.rb +3 -3
- data/lib/spree/testing_support/factories/stock_package_factory.rb +3 -3
- data/lib/spree/testing_support/factories/store_credit_category_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +8 -8
- data/lib/spree/testing_support/factories/store_credit_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_credit_type_factory.rb +6 -6
- data/lib/spree/testing_support/factories/store_factory.rb +2 -2
- data/lib/spree/testing_support/factories/tax_category_factory.rb +1 -1
- data/lib/spree/testing_support/factories/tax_rate_factory.rb +1 -1
- data/lib/spree/testing_support/factories/taxon_factory.rb +3 -3
- data/lib/spree/testing_support/factories/taxonomy_factory.rb +1 -1
- data/lib/spree/testing_support/factories/user_factory.rb +2 -2
- data/lib/spree/testing_support/factories/variant_factory.rb +2 -2
- data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +1 -1
- data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +1 -1
- data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +1 -1
- data/lib/spree/testing_support/factories/zone_factory.rb +3 -3
- data/lib/spree/testing_support/factory_bot.rb +1 -1
- data/lib/spree/testing_support/flaky.rb +3 -2
- data/lib/spree/testing_support/flash.rb +2 -2
- data/lib/spree/testing_support/order_walkthrough.rb +7 -7
- data/lib/spree/testing_support/preferences.rb +1 -1
- data/lib/spree/testing_support/rake.rb +1 -1
- data/lib/spree/testing_support/shared_examples/calculator.rb +1 -1
- data/lib/spree/testing_support/shared_examples/gallery.rb +7 -7
- data/lib/spree/testing_support/shared_examples/order_factory.rb +9 -9
- data/lib/spree/testing_support/shared_examples/state_change_tracking.rb +25 -0
- data/lib/spree/testing_support/shared_examples/working_factory.rb +1 -1
- data/lib/spree/testing_support/translations.rb +1 -1
- data/lib/spree_core.rb +1 -1
- data/lib/tasks/payment_method.rake +2 -2
- data/solidus_core.gemspec +49 -49
- metadata +62 -54
data/lib/spree/core.rb
CHANGED
|
@@ -9,27 +9,27 @@ require "active_record/railtie"
|
|
|
9
9
|
require "active_storage/engine"
|
|
10
10
|
require "sprockets/railtie"
|
|
11
11
|
|
|
12
|
-
require
|
|
13
|
-
require
|
|
14
|
-
require
|
|
15
|
-
require
|
|
16
|
-
require
|
|
17
|
-
require
|
|
18
|
-
require
|
|
19
|
-
require
|
|
20
|
-
require
|
|
21
|
-
require
|
|
22
|
-
require
|
|
23
|
-
require
|
|
12
|
+
require "active_support/deprecation"
|
|
13
|
+
require "spree/deprecated_instance_variable_proxy"
|
|
14
|
+
require "spree/deprecator"
|
|
15
|
+
require "acts_as_list"
|
|
16
|
+
require "awesome_nested_set"
|
|
17
|
+
require "cancan"
|
|
18
|
+
require "friendly_id"
|
|
19
|
+
require "kaminari/activerecord"
|
|
20
|
+
require "monetize"
|
|
21
|
+
require "paperclip"
|
|
22
|
+
require "ransack"
|
|
23
|
+
require "state_machines-activerecord"
|
|
24
24
|
|
|
25
25
|
# This is required because ActiveModel::Validations#invalid? conflicts with the
|
|
26
26
|
# invalid state of a Payment. In the future this should be removed.
|
|
27
27
|
StateMachines::Machine.ignore_method_conflicts = true
|
|
28
28
|
|
|
29
29
|
module Spree
|
|
30
|
-
autoload :Deprecation,
|
|
30
|
+
autoload :Deprecation, "spree/deprecation"
|
|
31
31
|
|
|
32
|
-
mattr_accessor :user_class, default:
|
|
32
|
+
mattr_accessor :user_class, default: "Spree::LegacyUser"
|
|
33
33
|
|
|
34
34
|
def self.user_class
|
|
35
35
|
if @@user_class.is_a?(Class)
|
|
@@ -69,18 +69,18 @@ module Spree
|
|
|
69
69
|
|
|
70
70
|
module Core
|
|
71
71
|
# @api private
|
|
72
|
-
def self.has_install_generator_been_run?(rails_paths: Rails.application.paths, initializer_name:
|
|
72
|
+
def self.has_install_generator_been_run?(rails_paths: Rails.application.paths, initializer_name: "spree.rb", dummy_app_name: "DummyApp::Application")
|
|
73
73
|
does_spree_initializer_exist?(rails_paths, initializer_name) ||
|
|
74
74
|
running_solidus_test_suite_with_dummy_app?(dummy_app_name)
|
|
75
75
|
end
|
|
76
76
|
|
|
77
77
|
def self.running_solidus_test_suite_with_dummy_app?(dummy_app_name)
|
|
78
|
-
Rails.env.test? && Rails.application.class.name == dummy_app_name
|
|
78
|
+
Rails.env.test? && Rails.application.class.name == dummy_app_name # standard:disable Style/ClassEqualityComparison
|
|
79
79
|
end
|
|
80
80
|
private_class_method :running_solidus_test_suite_with_dummy_app?
|
|
81
81
|
|
|
82
82
|
def self.does_spree_initializer_exist?(rails_paths, initializer_name)
|
|
83
|
-
rails_paths[
|
|
83
|
+
rails_paths["config/initializers"].any? do |path|
|
|
84
84
|
File.exist?(Pathname.new(path).join(initializer_name))
|
|
85
85
|
end
|
|
86
86
|
end
|
|
@@ -90,35 +90,35 @@ module Spree
|
|
|
90
90
|
end
|
|
91
91
|
end
|
|
92
92
|
|
|
93
|
-
require
|
|
94
|
-
|
|
95
|
-
require
|
|
96
|
-
require
|
|
97
|
-
require
|
|
98
|
-
require
|
|
99
|
-
require
|
|
100
|
-
require
|
|
101
|
-
require
|
|
102
|
-
require
|
|
103
|
-
require
|
|
104
|
-
require
|
|
105
|
-
require
|
|
106
|
-
require
|
|
107
|
-
|
|
108
|
-
require
|
|
109
|
-
require
|
|
110
|
-
require
|
|
111
|
-
|
|
112
|
-
require
|
|
113
|
-
require
|
|
114
|
-
require
|
|
115
|
-
require
|
|
116
|
-
require
|
|
117
|
-
require
|
|
118
|
-
require
|
|
119
|
-
require
|
|
120
|
-
require
|
|
121
|
-
|
|
122
|
-
require
|
|
123
|
-
require
|
|
124
|
-
require
|
|
93
|
+
require "spree/core/version"
|
|
94
|
+
|
|
95
|
+
require "spree/core/active_merchant_dependencies"
|
|
96
|
+
require "spree/core/class_constantizer"
|
|
97
|
+
require "spree/core/environment_extension"
|
|
98
|
+
require "spree/core/environment/calculators"
|
|
99
|
+
require "spree/core/environment/promotions"
|
|
100
|
+
require "spree/core/environment"
|
|
101
|
+
require "spree/migrations"
|
|
102
|
+
require "spree/migration_helpers"
|
|
103
|
+
require "spree/bus"
|
|
104
|
+
require "spree/config"
|
|
105
|
+
require "spree/core/engine"
|
|
106
|
+
require "spree/zero"
|
|
107
|
+
|
|
108
|
+
require "spree/i18n"
|
|
109
|
+
require "spree/localized_number"
|
|
110
|
+
require "spree/permitted_attributes"
|
|
111
|
+
|
|
112
|
+
require "spree/core/importer"
|
|
113
|
+
require "spree/core/permalinks"
|
|
114
|
+
require "spree/core/product_duplicator"
|
|
115
|
+
require "spree/core/role_configuration"
|
|
116
|
+
require "spree/core/state_machines"
|
|
117
|
+
require "spree/core/stock_configuration"
|
|
118
|
+
require "spree/core/null_promotion_configuration"
|
|
119
|
+
require "spree/core/validators/email"
|
|
120
|
+
require "spree/user_class_handle"
|
|
121
|
+
|
|
122
|
+
require "spree/preferences/store"
|
|
123
|
+
require "spree/preferences/static_model_preferences"
|
|
124
|
+
require "spree/preferences/scoped_store"
|
data/lib/spree/deprecation.rb
CHANGED
data/lib/spree/deprecator.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
3
|
+
require "active_support/deprecation"
|
|
4
4
|
|
|
5
5
|
module Spree
|
|
6
6
|
def self.deprecator
|
|
7
|
-
@deprecator ||= ActiveSupport::Deprecation.new(
|
|
7
|
+
@deprecator ||= ActiveSupport::Deprecation.new("5.0", "Solidus")
|
|
8
8
|
end
|
|
9
9
|
end
|
data/lib/spree/i18n.rb
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
3
|
+
require "i18n"
|
|
4
4
|
|
|
5
5
|
module Spree
|
|
6
6
|
def self.i18n_available_locales
|
|
7
7
|
I18n.available_locales.select do |locale|
|
|
8
|
-
I18n.t(
|
|
8
|
+
I18n.t("spree.i18n.this_file_language", locale:, fallback: false, default: nil)
|
|
9
9
|
end
|
|
10
10
|
end
|
|
11
11
|
|
|
@@ -14,14 +14,14 @@ module Spree
|
|
|
14
14
|
|
|
15
15
|
# I18n.t('number.currency.format.delimiter') could be useful here, but is
|
|
16
16
|
# unnecessary as it is stripped by the non_number_characters gsub.
|
|
17
|
-
separator = I18n.t(:
|
|
17
|
+
separator = I18n.t(:"number.currency.format.separator")
|
|
18
18
|
non_number_characters = /[^0-9\-#{separator}]/
|
|
19
19
|
|
|
20
20
|
# strip everything else first
|
|
21
|
-
number = number.gsub(non_number_characters,
|
|
21
|
+
number = number.gsub(non_number_characters, "")
|
|
22
22
|
|
|
23
23
|
# then replace the locale-specific decimal separator with the standard separator if necessary
|
|
24
|
-
number = number.gsub(separator,
|
|
24
|
+
number = number.gsub(separator, ".") unless separator == "."
|
|
25
25
|
|
|
26
26
|
# Handle empty string for ruby 2.4 compatibility
|
|
27
27
|
BigDecimal(number.presence || 0)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
class ManipulativeQueryMonitor
|
|
5
|
+
def self.call(&block)
|
|
6
|
+
counter = ::DBQueryMatchers::QueryCounter.new({matches: [/^\ *(INSERT|UPDATE|DELETE\ FROM)/]})
|
|
7
|
+
ActiveSupport::Notifications.subscribed(counter.to_proc,
|
|
8
|
+
"sql.active_record",
|
|
9
|
+
&block)
|
|
10
|
+
if counter.count > 0
|
|
11
|
+
message = "Detected #{counter.count} manipulative queries. #{counter.log.join(", ")}\n"
|
|
12
|
+
|
|
13
|
+
message += caller.select { |line| line.include?(Rails.root.to_s) || line.include?("solidus") }.join("\n")
|
|
14
|
+
|
|
15
|
+
Rails.logger.warn(message)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
data/lib/spree/migrations.rb
CHANGED
|
@@ -25,12 +25,12 @@ module Spree
|
|
|
25
25
|
def check
|
|
26
26
|
return unless File.directory?(app_dir)
|
|
27
27
|
return if missing_migrations.empty?
|
|
28
|
-
return if ENV[
|
|
28
|
+
return if ENV["SOLIDUS_SKIP_MIGRATIONS_CHECK"]
|
|
29
29
|
|
|
30
30
|
prefix = "[WARNING #{engine_name.capitalize}]"
|
|
31
31
|
warn <<~WARN
|
|
32
32
|
#{prefix} Missing migrations.
|
|
33
|
-
#{missing_migrations.map {|m| "#{prefix} - #{m}"}.join("\n")}
|
|
33
|
+
#{missing_migrations.map { |m| "#{prefix} - #{m}" }.join("\n")}
|
|
34
34
|
#{prefix}
|
|
35
35
|
#{prefix} Run `bin/rails railties:install:migrations` to get them.
|
|
36
36
|
#{prefix} You can silence this warning by setting the `SOLIDUS_SKIP_MIGRATIONS_CHECK` environment variable.
|
|
@@ -89,13 +89,13 @@ module Spree
|
|
|
89
89
|
@@property_attributes = [:name, :presentation]
|
|
90
90
|
|
|
91
91
|
@@return_authorization_attributes = [:memo, :stock_location_id, :return_reason_id,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
92
|
+
customer_metadata: {},
|
|
93
|
+
return_items_attributes: [
|
|
94
|
+
:inventory_unit_id,
|
|
95
|
+
:exchange_variant_id,
|
|
96
|
+
:return_reason_id,
|
|
97
|
+
:preferred_reimbursement_type_id
|
|
98
|
+
]]
|
|
99
99
|
|
|
100
100
|
@@shipment_attributes = [
|
|
101
101
|
:special_instructions, :stock_location_id, :id, :tracking,
|
|
@@ -123,9 +123,9 @@ module Spree
|
|
|
123
123
|
]
|
|
124
124
|
|
|
125
125
|
@@store_attributes = [:name, :url, :seo_title, :meta_keywords,
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
126
|
+
:meta_description, :default_currency,
|
|
127
|
+
:mail_from_address, :cart_tax_country_iso,
|
|
128
|
+
:bcc_email, :reverse_charge_status]
|
|
129
129
|
|
|
130
130
|
@@taxonomy_attributes = [:name]
|
|
131
131
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
3
|
+
require "spree/core/versioned_value"
|
|
4
|
+
require "spree/preferences/preferable"
|
|
5
5
|
|
|
6
6
|
module Spree::Preferences
|
|
7
7
|
# This takes the preferrable methods and adds some
|
|
@@ -107,10 +107,10 @@ module Spree::Preferences
|
|
|
107
107
|
set(default_preferences)
|
|
108
108
|
end
|
|
109
109
|
|
|
110
|
-
|
|
111
|
-
|
|
110
|
+
alias_method :[], :get_preference
|
|
111
|
+
alias_method :[]=, :set_preference
|
|
112
112
|
|
|
113
|
-
|
|
113
|
+
alias_method :get, :get_preference
|
|
114
114
|
|
|
115
115
|
# @param preferences [Hash] a hash of preferences to set
|
|
116
116
|
def set(preferences)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
3
|
+
require "spree/preferences/preferable_class_methods"
|
|
4
|
+
require "active_support/concern"
|
|
5
|
+
require "active_support/core_ext/hash/keys"
|
|
6
6
|
|
|
7
7
|
module Spree
|
|
8
8
|
module Preferences
|
|
@@ -117,11 +117,9 @@ module Spree
|
|
|
117
117
|
# This may raise an infinite loop error if any of the defaults are
|
|
118
118
|
# dependent on other preferences defaults.
|
|
119
119
|
def default_preferences
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
end
|
|
124
|
-
]
|
|
120
|
+
defined_preferences.map do |preference|
|
|
121
|
+
[preference, preference_default(preference)]
|
|
122
|
+
end.to_h
|
|
125
123
|
end
|
|
126
124
|
|
|
127
125
|
# Preference names representable as form fields in Solidus backend
|
|
@@ -165,8 +163,8 @@ module Spree
|
|
|
165
163
|
value.to_i
|
|
166
164
|
when :boolean
|
|
167
165
|
if !value ||
|
|
168
|
-
|
|
169
|
-
|
|
166
|
+
value.to_s =~ /\A(f|false|0|^)\Z/i ||
|
|
167
|
+
(value.respond_to?(:empty?) && value.empty?)
|
|
170
168
|
false
|
|
171
169
|
else
|
|
172
170
|
true
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
3
|
+
require "spree/encryptor"
|
|
4
4
|
|
|
5
5
|
module Spree::Preferences
|
|
6
6
|
module PreferableClassMethods
|
|
7
|
-
DEFAULT_ADMIN_FORM_PREFERENCE_TYPES = %i
|
|
7
|
+
DEFAULT_ADMIN_FORM_PREFERENCE_TYPES = %i[
|
|
8
8
|
boolean
|
|
9
9
|
decimal
|
|
10
10
|
integer
|
|
@@ -12,7 +12,7 @@ module Spree::Preferences
|
|
|
12
12
|
string
|
|
13
13
|
text
|
|
14
14
|
encrypted_string
|
|
15
|
-
|
|
15
|
+
]
|
|
16
16
|
|
|
17
17
|
def defined_preferences
|
|
18
18
|
[]
|
|
@@ -27,13 +27,13 @@ module Spree::Preferences
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
default = begin
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
given = options[:default]
|
|
31
|
+
if given.is_a?(Proc)
|
|
32
|
+
given
|
|
33
|
+
else
|
|
34
|
+
proc { given }
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
37
|
|
|
38
38
|
# The defined preferences on a class are all those defined directly on
|
|
39
39
|
# that class as well as those defined on ancestors.
|
|
@@ -76,25 +76,25 @@ module Spree::Preferences
|
|
|
76
76
|
end
|
|
77
77
|
|
|
78
78
|
def preference_getter_method(name)
|
|
79
|
-
"preferred_#{name}"
|
|
79
|
+
:"preferred_#{name}"
|
|
80
80
|
end
|
|
81
81
|
|
|
82
82
|
def preference_setter_method(name)
|
|
83
|
-
|
|
83
|
+
:"preferred_#{name}="
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
def preference_default_getter_method(name)
|
|
87
|
-
"preferred_#{name}_default"
|
|
87
|
+
:"preferred_#{name}_default"
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
def preference_type_getter_method(name)
|
|
91
|
-
"preferred_#{name}_type"
|
|
91
|
+
:"preferred_#{name}_type"
|
|
92
92
|
end
|
|
93
93
|
|
|
94
94
|
def preference_encryptor(options)
|
|
95
95
|
key = options[:encryption_key] ||
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
ENV["SOLIDUS_PREFERENCES_MASTER_KEY"] ||
|
|
97
|
+
Rails.application.credentials.secret_key_base
|
|
98
98
|
|
|
99
99
|
Spree::Encryptor.new(key)
|
|
100
100
|
end
|
|
@@ -26,11 +26,11 @@ module Spree::Preferences
|
|
|
26
26
|
private
|
|
27
27
|
|
|
28
28
|
def key_for(key)
|
|
29
|
-
[rails_cache_id, @prefix, key, @suffix].compact.join(
|
|
29
|
+
[rails_cache_id, @prefix, key, @suffix].compact.join("/")
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def rails_cache_id
|
|
33
|
-
ENV[
|
|
33
|
+
ENV["RAILS_CACHE_ID"]
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
end
|
|
@@ -55,8 +55,8 @@ module Spree
|
|
|
55
55
|
next if extra_keys.empty?
|
|
56
56
|
|
|
57
57
|
raise \
|
|
58
|
-
"Unexpected keys found for #{klass} under #{name}: #{extra_keys.sort.join(
|
|
59
|
-
"(expected keys: #{klass_keys.sort.join(
|
|
58
|
+
"Unexpected keys found for #{klass} under #{name}: #{extra_keys.sort.join(", ")} " \
|
|
59
|
+
"(expected keys: #{klass_keys.sort.join(", ")})"
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
end
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# Use singleton class Spree::Preferences::Store.instance to access
|
|
4
4
|
#
|
|
5
5
|
|
|
6
|
-
require
|
|
6
|
+
require "singleton"
|
|
7
7
|
|
|
8
8
|
module Spree::Preferences
|
|
9
9
|
class StoreInstance
|
|
@@ -35,19 +35,19 @@ module Spree::Preferences
|
|
|
35
35
|
# has been cleared from the cache
|
|
36
36
|
|
|
37
37
|
# does it exist in the database?
|
|
38
|
-
if preference = Spree::Preference.find_by(key:)
|
|
38
|
+
val = if (preference = Spree::Preference.find_by(key:))
|
|
39
39
|
# it does exist
|
|
40
|
-
|
|
40
|
+
preference.value
|
|
41
41
|
else
|
|
42
42
|
# use the fallback value
|
|
43
|
-
|
|
43
|
+
yield
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
# Cache either the value from the db or the fallback value.
|
|
47
47
|
# This avoids hitting the db with subsequent queries.
|
|
48
48
|
@cache.write(key, val)
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
val
|
|
51
51
|
else
|
|
52
52
|
yield
|
|
53
53
|
end
|
|
@@ -77,7 +77,7 @@ module Spree::Preferences
|
|
|
77
77
|
return unless should_persist?
|
|
78
78
|
|
|
79
79
|
preference = Spree::Preference.find_by(key: cache_key)
|
|
80
|
-
preference
|
|
80
|
+
preference&.destroy
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
def should_persist?
|
|
@@ -1,107 +1,107 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
RSpec.shared_examples_for
|
|
4
|
-
it
|
|
3
|
+
RSpec.shared_examples_for "access granted" do
|
|
4
|
+
it "should allow show" do
|
|
5
5
|
expect(ability).to be_able_to(:show, resource, token) if token
|
|
6
6
|
expect(ability).to be_able_to(:show, resource) unless token
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
-
it
|
|
9
|
+
it "should allow create" do
|
|
10
10
|
expect(ability).to be_able_to(:create, resource, token) if token
|
|
11
11
|
expect(ability).to be_able_to(:create, resource) unless token
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
it
|
|
14
|
+
it "should allow update" do
|
|
15
15
|
expect(ability).to be_able_to(:update, resource, token) if token
|
|
16
16
|
expect(ability).to be_able_to(:update, resource) unless token
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
RSpec.shared_examples_for
|
|
21
|
-
it
|
|
20
|
+
RSpec.shared_examples_for "access denied" do
|
|
21
|
+
it "should not allow show" do
|
|
22
22
|
expect(ability).to_not be_able_to(:show, resource)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
it
|
|
25
|
+
it "should not allow create" do
|
|
26
26
|
expect(ability).to_not be_able_to(:create, resource)
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
it
|
|
29
|
+
it "should not allow update" do
|
|
30
30
|
expect(ability).to_not be_able_to(:update, resource)
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
RSpec.shared_examples_for
|
|
35
|
-
it
|
|
34
|
+
RSpec.shared_examples_for "admin granted" do
|
|
35
|
+
it "should allow admin" do
|
|
36
36
|
expect(ability).to be_able_to(:admin, resource, token) if token
|
|
37
37
|
expect(ability).to be_able_to(:admin, resource) unless token
|
|
38
38
|
end
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
-
RSpec.shared_examples_for
|
|
42
|
-
it
|
|
41
|
+
RSpec.shared_examples_for "admin denied" do
|
|
42
|
+
it "should not allow admin" do
|
|
43
43
|
expect(ability).to_not be_able_to(:admin, resource)
|
|
44
44
|
end
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
RSpec.shared_examples_for
|
|
48
|
-
it
|
|
47
|
+
RSpec.shared_examples_for "index allowed" do
|
|
48
|
+
it "should allow index" do
|
|
49
49
|
expect(ability).to be_able_to(:index, resource)
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
52
|
|
|
53
|
-
RSpec.shared_examples_for
|
|
54
|
-
it
|
|
53
|
+
RSpec.shared_examples_for "no index allowed" do
|
|
54
|
+
it "should not allow index" do
|
|
55
55
|
expect(ability).to_not be_able_to(:index, resource)
|
|
56
56
|
end
|
|
57
57
|
end
|
|
58
58
|
|
|
59
|
-
RSpec.shared_examples_for
|
|
60
|
-
it
|
|
59
|
+
RSpec.shared_examples_for "create only" do
|
|
60
|
+
it "should allow create" do
|
|
61
61
|
expect(ability).to be_able_to(:create, resource)
|
|
62
62
|
end
|
|
63
63
|
|
|
64
|
-
it
|
|
64
|
+
it "should not allow show" do
|
|
65
65
|
expect(ability).to_not be_able_to(:show, resource)
|
|
66
66
|
end
|
|
67
67
|
|
|
68
|
-
it
|
|
68
|
+
it "should not allow update" do
|
|
69
69
|
expect(ability).to_not be_able_to(:update, resource)
|
|
70
70
|
end
|
|
71
71
|
|
|
72
|
-
it
|
|
72
|
+
it "should not allow index" do
|
|
73
73
|
expect(ability).to_not be_able_to(:index, resource)
|
|
74
74
|
end
|
|
75
75
|
end
|
|
76
76
|
|
|
77
|
-
RSpec.shared_examples_for
|
|
78
|
-
it
|
|
77
|
+
RSpec.shared_examples_for "read only" do
|
|
78
|
+
it "should not allow create" do
|
|
79
79
|
expect(ability).to_not be_able_to(:create, resource)
|
|
80
80
|
end
|
|
81
81
|
|
|
82
|
-
it
|
|
82
|
+
it "should not allow update" do
|
|
83
83
|
expect(ability).to_not be_able_to(:update, resource)
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
-
it
|
|
86
|
+
it "should allow index" do
|
|
87
87
|
expect(ability).to be_able_to(:index, resource)
|
|
88
88
|
end
|
|
89
89
|
end
|
|
90
90
|
|
|
91
|
-
RSpec.shared_examples_for
|
|
92
|
-
it
|
|
91
|
+
RSpec.shared_examples_for "update only" do
|
|
92
|
+
it "should not allow create" do
|
|
93
93
|
expect(ability).to_not be_able_to(:create, resource)
|
|
94
94
|
end
|
|
95
95
|
|
|
96
|
-
it
|
|
96
|
+
it "should not allow show" do
|
|
97
97
|
expect(ability).to_not be_able_to(:show, resource)
|
|
98
98
|
end
|
|
99
99
|
|
|
100
|
-
it
|
|
100
|
+
it "should allow update" do
|
|
101
101
|
expect(ability).to be_able_to(:update, resource)
|
|
102
102
|
end
|
|
103
103
|
|
|
104
|
-
it
|
|
104
|
+
it "should not allow index" do
|
|
105
105
|
expect(ability).to_not be_able_to(:index, resource)
|
|
106
106
|
end
|
|
107
107
|
end
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
3
|
+
require "cancan"
|
|
4
4
|
|
|
5
5
|
module Spree
|
|
6
6
|
module TestingSupport
|
|
7
7
|
module AuthorizationHelpers
|
|
8
8
|
module CustomAbility
|
|
9
9
|
def build_ability(&block)
|
|
10
|
-
block ||= proc{ |_u| can :manage, :all }
|
|
10
|
+
block ||= proc { |_u| can :manage, :all }
|
|
11
11
|
Class.new do
|
|
12
12
|
include CanCan::Ability
|
|
13
|
+
|
|
13
14
|
define_method(:initialize, block)
|
|
14
15
|
end
|
|
15
16
|
end
|
|
@@ -41,9 +42,9 @@ module Spree
|
|
|
41
42
|
end
|
|
42
43
|
|
|
43
44
|
before do
|
|
44
|
-
allow(Spree.user_class).to receive(:find_by)
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
allow(Spree.user_class).to receive(:find_by)
|
|
46
|
+
.with(hash_including(:spree_api_key))
|
|
47
|
+
.and_return(Spree.user_class.new)
|
|
47
48
|
end
|
|
48
49
|
end
|
|
49
50
|
|