solidus_core 3.0.0 → 4.5.1
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/README.md +1 -2
- data/Rakefile +7 -2
- data/app/assets/images/logo/solidus.svg +18 -1
- data/app/assets/images/logo/solidus_logo.png +0 -0
- data/app/controllers/spree/base_controller.rb +1 -3
- data/app/helpers/spree/base_helper.rb +3 -3
- data/app/helpers/spree/core/controller_helpers/auth.rb +66 -0
- data/app/helpers/spree/core/controller_helpers/common.rb +82 -0
- data/app/helpers/spree/core/controller_helpers/order.rb +86 -0
- data/app/helpers/spree/core/controller_helpers/payment_parameters.rb +165 -0
- data/{lib/spree/core/controller_helpers/current_host.rb → app/helpers/spree/core/controller_helpers/pricing.rb} +6 -4
- data/app/helpers/spree/core/controller_helpers/search.rb +16 -0
- data/app/helpers/spree/core/controller_helpers/store.rb +19 -0
- data/app/helpers/spree/core/controller_helpers/strong_parameters.rb +74 -0
- data/app/helpers/spree/products_helper.rb +2 -2
- data/app/mailers/spree/base_mailer.rb +1 -1
- data/app/mailers/spree/carton_mailer.rb +1 -1
- data/app/mailers/spree/order_mailer.rb +3 -3
- data/app/mailers/spree/reimbursement_mailer.rb +1 -1
- data/app/models/concerns/spree/active_storage_adapter/attachment.rb +30 -11
- data/app/models/concerns/spree/active_storage_adapter/normalization.rb +1 -1
- data/app/models/concerns/spree/active_storage_adapter.rb +1 -18
- data/app/models/concerns/spree/default_price.rb +30 -10
- data/app/models/concerns/spree/display_money.rb +1 -1
- data/app/models/concerns/spree/metadata.rb +64 -0
- data/app/models/concerns/spree/named_type.rb +2 -0
- data/app/models/concerns/spree/ordered_property_value_list.rb +2 -2
- data/app/models/concerns/spree/ransackable_attributes.rb +9 -5
- data/app/models/concerns/spree/user_address_book.rb +19 -10
- data/app/models/concerns/spree/user_methods.rb +40 -6
- data/app/models/spree/address.rb +11 -9
- data/app/models/spree/adjustment.rb +15 -76
- data/app/models/spree/adjustment_reason.rb +2 -0
- data/app/models/spree/calculator/flat_fee.rb +21 -0
- data/app/models/spree/calculator/returns/default_refund_amount.rb +1 -1
- data/app/models/spree/carton.rb +3 -3
- data/app/models/spree/core/state_machines/inventory_unit.rb +42 -0
- data/app/models/spree/core/state_machines/order/class_methods.rb +217 -0
- data/app/models/spree/core/state_machines/order.rb +42 -0
- data/app/models/spree/core/state_machines/payment.rb +61 -0
- data/app/models/spree/core/state_machines/reimbursement.rb +33 -0
- data/app/models/spree/core/state_machines/return_authorization.rb +32 -0
- data/app/models/spree/core/state_machines/return_item/acceptance_status.rb +51 -0
- data/app/models/spree/core/state_machines/return_item/reception_status.rb +42 -0
- data/app/models/spree/core/state_machines/shipment.rb +58 -0
- data/app/models/spree/country.rb +1 -1
- data/app/models/spree/credit_card.rb +13 -10
- data/app/models/spree/customer_return.rb +6 -3
- data/app/models/spree/deprecated_configurable_class.rb +40 -0
- data/app/models/spree/fulfilment_changer.rb +56 -29
- data/app/models/spree/image/active_storage_attachment.rb +2 -7
- data/app/models/spree/image/paperclip_attachment.rb +2 -2
- data/app/models/spree/inventory_unit.rb +2 -2
- data/app/models/spree/item_total.rb +28 -0
- data/app/models/spree/legacy_user.rb +1 -0
- data/app/models/spree/line_item.rb +26 -8
- data/app/models/spree/log_entry.rb +98 -1
- data/app/models/spree/money.rb +120 -0
- data/app/models/spree/null_promotion_adjuster.rb +13 -0
- data/app/models/spree/null_promotion_advertiser.rb +9 -0
- data/app/models/spree/null_promotion_finder.rb +9 -0
- data/app/models/spree/null_promotion_handler.rb +44 -0
- data/app/models/spree/option_type.rb +1 -1
- data/app/models/spree/option_value.rb +4 -3
- data/app/models/spree/order/number_generator.rb +7 -1
- data/app/models/spree/order.rb +143 -96
- data/app/models/spree/order_cancellations.rb +8 -8
- data/app/models/spree/order_inventory.rb +7 -5
- data/app/models/spree/order_merger.rb +5 -7
- data/app/models/spree/order_mutex.rb +2 -2
- data/app/models/spree/order_shipping.rb +15 -19
- data/app/models/spree/order_taxation.rb +7 -4
- data/app/models/spree/order_update_attributes.rb +3 -1
- data/app/models/spree/order_updater.rb +25 -63
- data/app/models/spree/payment/processing.rb +60 -57
- data/app/models/spree/payment.rb +14 -27
- data/app/models/spree/payment_create.rb +1 -1
- data/app/models/spree/payment_method/bogus_credit_card.rb +18 -14
- data/app/models/spree/payment_method/credit_card.rb +0 -4
- data/app/models/spree/payment_method/simple_bogus_credit_card.rb +18 -4
- data/app/models/spree/payment_method/store_credit.rb +1 -1
- data/app/models/spree/payment_method.rb +29 -10
- data/app/models/spree/payment_source.rb +5 -1
- data/app/models/spree/permission_set.rb +11 -0
- data/app/models/spree/permission_sets/base.rb +45 -0
- data/app/models/spree/permission_sets/configuration_display.rb +53 -0
- data/app/models/spree/permission_sets/configuration_management.rb +52 -0
- data/app/models/spree/permission_sets/dashboard_display.rb +28 -0
- data/app/models/spree/permission_sets/default_customer.rb +83 -0
- data/app/models/spree/permission_sets/order_display.rb +50 -0
- data/app/models/spree/permission_sets/order_management.rb +50 -0
- data/app/models/spree/permission_sets/product_display.rb +43 -0
- data/app/models/spree/permission_sets/product_management.rb +47 -0
- data/app/models/spree/permission_sets/restricted_stock_display.rb +33 -0
- data/app/models/spree/permission_sets/restricted_stock_management.rb +33 -0
- data/app/models/spree/permission_sets/stock_display.rb +26 -0
- data/app/models/spree/permission_sets/stock_management.rb +26 -0
- data/app/models/spree/permission_sets/super_user.rb +26 -0
- data/app/models/spree/permission_sets/user_display.rb +27 -0
- data/app/models/spree/permission_sets/user_management.rb +44 -0
- data/app/models/spree/preference.rb +1 -1
- data/app/models/spree/price.rb +3 -3
- data/app/models/spree/product/scopes.rb +23 -10
- data/app/models/spree/product.rb +30 -23
- data/app/models/spree/product_property.rb +1 -1
- data/app/models/spree/property.rb +1 -1
- data/app/models/spree/refund.rb +13 -3
- data/app/models/spree/refund_reason.rb +6 -1
- data/app/models/spree/reimbursement.rb +6 -6
- data/app/models/spree/reimbursement_performer.rb +3 -3
- data/app/models/spree/reimbursement_tax_calculator.rb +3 -3
- data/app/models/spree/reimbursement_type/credit.rb +1 -1
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +6 -6
- data/app/models/spree/reimbursement_type/store_credit.rb +1 -1
- data/app/models/spree/reimbursement_type.rb +6 -1
- data/app/models/spree/return_authorization.rb +3 -1
- data/app/models/spree/return_item.rb +13 -15
- data/app/models/spree/return_reason.rb +6 -1
- data/app/models/spree/role.rb +3 -1
- data/app/models/spree/role_permission.rb +8 -0
- data/app/models/spree/shipment.rb +12 -10
- data/app/models/spree/shipping_category.rb +2 -0
- data/app/models/spree/shipping_rate.rb +2 -3
- data/app/models/spree/shipping_rate_tax.rb +1 -1
- data/app/models/spree/{order_contents.rb → simple_order_contents.rb} +10 -13
- data/app/models/spree/state.rb +1 -1
- data/app/models/spree/stock/allocator/on_hand_first.rb +2 -2
- data/app/models/spree/stock/availability.rb +11 -3
- data/app/models/spree/stock/estimator.rb +1 -1
- data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
- data/app/models/spree/stock/package.rb +2 -2
- data/app/models/spree/stock/quantifier.rb +12 -8
- data/app/models/spree/stock/simple_coordinator.rb +38 -28
- data/app/models/spree/stock/splitter/shipping_category.rb +1 -1
- data/app/models/spree/stock_item.rb +2 -1
- data/app/models/spree/stock_location.rb +7 -7
- data/app/models/spree/stock_movement.rb +2 -2
- data/app/models/spree/store.rb +3 -1
- data/app/models/spree/store_credit.rb +31 -16
- data/app/models/spree/store_credit_event.rb +4 -3
- data/app/models/spree/store_credit_prioritizer.rb +17 -0
- data/app/models/spree/store_credit_reason.rb +6 -1
- data/app/models/spree/store_selector/by_server_name.rb +1 -1
- data/app/models/spree/tax/item_tax.rb +3 -2
- data/app/models/spree/tax/order_tax.rb +3 -1
- data/app/models/spree/tax/tax_helpers.rb +14 -3
- data/app/models/spree/tax/tax_location.rb +4 -7
- data/app/models/spree/tax_calculator/default.rb +32 -1
- data/app/models/spree/tax_calculator/shipping_rate.rb +2 -2
- data/app/models/spree/tax_category.rb +3 -1
- data/app/models/spree/tax_rate.rb +14 -1
- 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 +25 -3
- data/app/models/spree/taxon_brand_selector.rb +22 -0
- data/app/models/spree/taxonomy.rb +4 -3
- data/app/models/spree/unauthorized_redirect_handler.rb +24 -0
- data/app/models/spree/unit_cancel.rb +1 -2
- data/app/models/spree/user_address.rb +9 -3
- data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +1 -1
- data/app/models/spree/variant/price_selector.rb +25 -8
- data/app/models/spree/variant/scopes.rb +4 -0
- data/app/models/spree/variant/vat_price_generator.rb +1 -1
- data/app/models/spree/variant.rb +64 -37
- data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +4 -4
- data/app/models/spree/wallet.rb +2 -2
- data/app/models/spree/zone.rb +1 -1
- data/app/subscribers/spree/order_mailer_subscriber.rb +35 -0
- data/app/views/layouts/spree/base_mailer.html.erb +2 -2
- data/app/views/spree/order_mailer/cancel_email.html.erb +1 -1
- data/app/views/spree/order_mailer/cancel_email.text.erb +1 -1
- data/app/views/spree/order_mailer/confirm_email.html.erb +5 -5
- data/app/views/spree/order_mailer/confirm_email.text.erb +5 -5
- data/app/views/spree/order_mailer/inventory_cancellation_email.html.erb +0 -1
- data/config/i18n-tasks.yml +134 -0
- data/config/locales/en.yml +439 -338
- data/db/default/spree/permission_sets.rb +10 -0
- data/db/default/spree/return_reasons.rb +3 -1
- data/db/default/spree/states.rb +2 -2
- data/db/migrate/20160101010000_solidus_one_four.rb +0 -127
- data/db/migrate/20180710170104_create_spree_store_credit_reasons_table.rb +2 -2
- data/db/migrate/20201127212108_add_type_before_removal_to_spree_payment_methods.rb +7 -0
- data/db/migrate/20210312061050_change_column_null_on_prices.rb +7 -0
- data/db/migrate/20210815004823_add_unique_index_to_option_values_variants.rb +16 -0
- data/db/migrate/20220419170826_remove_archived_user_addresses.rb +12 -0
- data/db/migrate/20220805202442_add_level_to_spree_tax_rates.rb +5 -0
- data/db/migrate/20221123152807_add_shipping_category_to_spree_variants.rb +5 -0
- data/db/migrate/20230321161854_change_column_null_option_values_option_type_id.rb +5 -0
- data/db/migrate/20230425103509_remove_taxon_position.rb +5 -0
- data/db/migrate/20230427095534_drop_deprecated_address_id_from_shipments.rb +11 -0
- data/db/migrate/20240821173254_create_spree_permission_sets_in_core.rb +9 -0
- data/db/migrate/20240821173341_create_spree_roles_permissions_in_core.rb +9 -0
- data/db/migrate/20240821173641_add_description_to_spree_roles.rb +5 -0
- data/db/migrate/20240904152041_add_privilege_and_category_to_spree_permission_sets.rb +6 -0
- data/db/migrate/20250129061658_add_metadata_to_spree_resources.rb +28 -0
- data/db/migrate/20250201172950_add_gtin_and_condition_to_spree_variant.rb +6 -0
- data/db/migrate/20250207104016_add_primary_taxon_to_products.rb +7 -0
- data/db/migrate/20250221152004_add_metadata_to_users.rb +13 -0
- data/db/seeds.rb +5 -1
- data/lib/generators/solidus/install/app_templates/authentication/custom.rb +16 -0
- data/lib/generators/solidus/install/app_templates/authentication/devise.rb +16 -0
- data/lib/generators/solidus/install/app_templates/authentication/existing.rb +10 -0
- data/lib/generators/solidus/install/app_templates/authentication/none.rb +1 -0
- data/lib/generators/solidus/install/app_templates/frontend/none.rb +1 -0
- data/lib/generators/solidus/install/app_templates/frontend/starter.rb +1 -0
- data/lib/generators/solidus/install/app_templates/payment_method/braintree.rb +5 -0
- data/lib/generators/solidus/install/app_templates/payment_method/none.rb +1 -0
- data/lib/generators/solidus/install/app_templates/payment_method/paypal.rb +5 -0
- data/lib/generators/solidus/install/app_templates/payment_method/stripe.rb +5 -0
- data/lib/generators/solidus/install/install_generator.rb +210 -156
- data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +27 -33
- data/lib/generators/solidus/install/templates/vendor/assets/javascripts/spree/backend/all.js +2 -2
- data/lib/generators/solidus/update/templates/config/initializers/new_solidus_defaults.rb.tt +30 -0
- data/lib/generators/solidus/update/update_generator.rb +124 -0
- data/lib/generators/spree/custom_user/custom_user_generator.rb +6 -4
- data/lib/generators/spree/custom_user/templates/authentication_helpers.rb.tt +2 -6
- data/lib/generators/spree/custom_user/templates/migration.rb.tt +7 -3
- data/lib/generators/spree/dummy/dummy_generator.rb +12 -9
- data/lib/generators/spree/dummy/templates/rails/application.rb.tt +1 -2
- data/lib/generators/spree/dummy/templates/rails/database.yml +48 -63
- data/lib/generators/spree/dummy/templates/rails/manifest.js +3 -0
- data/lib/generators/spree/dummy/templates/rails/test.rb +7 -2
- data/lib/spree/app_configuration.rb +220 -71
- data/lib/spree/bus.rb +11 -0
- data/lib/spree/core/class_constantizer.rb +2 -2
- data/lib/spree/core/controller_helpers/auth.rb +5 -69
- data/lib/spree/core/controller_helpers/common.rb +5 -80
- data/lib/spree/core/controller_helpers/order.rb +5 -86
- data/lib/spree/core/controller_helpers/payment_parameters.rb +5 -165
- data/lib/spree/core/controller_helpers/pricing.rb +5 -17
- data/lib/spree/core/controller_helpers/search.rb +5 -14
- data/lib/spree/core/controller_helpers/store.rb +5 -17
- data/lib/spree/core/controller_helpers/strong_parameters.rb +5 -71
- data/lib/spree/core/engine.rb +49 -16
- data/lib/spree/core/environment/calculators.rb +35 -3
- data/lib/spree/core/environment/promotions.rb +25 -4
- data/lib/spree/core/environment_extension.rb +16 -2
- data/lib/spree/core/importer/order.rb +6 -6
- data/lib/spree/core/importer/product.rb +3 -3
- data/lib/spree/core/nested_class_set.rb +28 -0
- data/lib/spree/core/null_promotion_configuration.rb +84 -0
- data/lib/spree/core/product_duplicator.rb +1 -1
- data/lib/spree/core/product_filters.rb +2 -2
- data/lib/spree/core/search/base.rb +18 -9
- data/lib/spree/core/search/variant.rb +2 -2
- data/lib/spree/core/state_machines/inventory_unit.rb +5 -40
- data/lib/spree/core/state_machines/order.rb +5 -247
- data/lib/spree/core/state_machines/payment.rb +5 -59
- data/lib/spree/core/state_machines/reimbursement.rb +5 -31
- data/lib/spree/core/state_machines/return_authorization.rb +5 -30
- data/lib/spree/core/state_machines/return_item/acceptance_status.rb +5 -49
- data/lib/spree/core/state_machines/return_item/reception_status.rb +5 -40
- data/lib/spree/core/state_machines/shipment.rb +5 -56
- data/lib/spree/core/state_machines.rb +48 -81
- data/lib/spree/core/stock_configuration.rb +18 -0
- data/lib/spree/core/validators/email.rb +2 -4
- data/lib/spree/core/version.rb +5 -1
- data/lib/spree/core/versioned_value.rb +75 -0
- data/lib/spree/core.rb +40 -16
- data/lib/spree/deprecated_instance_variable_proxy.rb +57 -0
- data/lib/spree/deprecation.rb +3 -51
- data/lib/spree/deprecator.rb +9 -0
- data/lib/spree/i18n.rb +1 -1
- data/lib/spree/mailer_previews/carton_preview.rb +1 -1
- data/lib/spree/migration_helpers.rb +3 -3
- data/lib/spree/migrations.rb +13 -11
- data/lib/spree/money.rb +5 -118
- data/lib/spree/permission_sets/base.rb +5 -30
- data/lib/spree/permission_sets/configuration_display.rb +5 -23
- data/lib/spree/permission_sets/configuration_management.rb +5 -23
- data/lib/spree/permission_sets/dashboard_display.rb +5 -9
- data/lib/spree/permission_sets/default_customer.rb +5 -35
- data/lib/spree/permission_sets/order_display.rb +5 -19
- data/lib/spree/permission_sets/order_management.rb +5 -20
- data/lib/spree/permission_sets/product_display.rb +5 -17
- data/lib/spree/permission_sets/product_management.rb +5 -19
- data/lib/spree/permission_sets/restricted_stock_display.rb +5 -16
- data/lib/spree/permission_sets/restricted_stock_management.rb +5 -16
- data/lib/spree/permission_sets/stock_display.rb +5 -10
- data/lib/spree/permission_sets/stock_management.rb +5 -10
- data/lib/spree/permission_sets/super_user.rb +5 -9
- data/lib/spree/permission_sets/user_display.rb +5 -11
- data/lib/spree/permission_sets/user_management.rb +5 -23
- data/lib/spree/permission_sets.rb +5 -18
- data/lib/spree/permitted_attributes.rb +35 -14
- data/lib/spree/preferences/configuration.rb +88 -0
- data/lib/spree/preferences/persistable.rb +7 -1
- data/lib/spree/preferences/preferable.rb +13 -0
- data/lib/spree/preferences/preferable_class_methods.rb +12 -4
- data/lib/spree/preferences/preference_differentiator.rb +29 -0
- data/lib/spree/preferences/static_model_preferences.rb +25 -10
- data/lib/spree/preferences/store.rb +2 -2
- data/lib/spree/testing_support/blacklist_urls.rb +1 -1
- data/lib/spree/testing_support/bus_helpers.rb +101 -0
- data/lib/spree/testing_support/capybara_ext.rb +11 -1
- data/lib/spree/testing_support/common_rake.rb +76 -23
- data/lib/spree/testing_support/dummy_ability.rb +7 -0
- data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/backend/all.js +1 -1
- data/lib/spree/testing_support/dummy_app/assets/stylesheets/solidus_admin/tailwind.css +1 -0
- data/lib/spree/testing_support/dummy_app/database.yml +39 -28
- data/lib/spree/testing_support/dummy_app/migrations.rb +8 -15
- data/lib/spree/testing_support/dummy_app/rake_tasks.rb +3 -10
- data/lib/spree/testing_support/dummy_app.rb +71 -42
- data/lib/spree/testing_support/extension_rake.rb +2 -2
- data/lib/spree/testing_support/factories/address_factory.rb +9 -13
- data/lib/spree/testing_support/factories/adjustment_factory.rb +1 -13
- data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/calculator_factory.rb +4 -10
- data/lib/spree/testing_support/factories/carton_factory.rb +2 -10
- data/lib/spree/testing_support/factories/country_factory.rb +1 -7
- data/lib/spree/testing_support/factories/credit_card_factory.rb +0 -5
- data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -11
- data/lib/spree/testing_support/factories/image_factory.rb +0 -5
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +4 -14
- data/lib/spree/testing_support/factories/line_item_factory.rb +0 -8
- data/lib/spree/testing_support/factories/option_type_factory.rb +0 -8
- data/lib/spree/testing_support/factories/option_value_factory.rb +0 -5
- data/lib/spree/testing_support/factories/order_factory.rb +19 -38
- data/lib/spree/testing_support/factories/payment_factory.rb +0 -10
- data/lib/spree/testing_support/factories/payment_method_factory.rb +0 -5
- data/lib/spree/testing_support/factories/price_factory.rb +0 -7
- data/lib/spree/testing_support/factories/product_factory.rb +5 -13
- data/lib/spree/testing_support/factories/product_option_type_factory.rb +0 -8
- data/lib/spree/testing_support/factories/product_property_factory.rb +0 -8
- data/lib/spree/testing_support/factories/property_factory.rb +0 -5
- data/lib/spree/testing_support/factories/refund_factory.rb +0 -8
- data/lib/spree/testing_support/factories/refund_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/reimbursement_factory.rb +0 -7
- data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +0 -5
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +0 -9
- data/lib/spree/testing_support/factories/return_item_factory.rb +0 -9
- data/lib/spree/testing_support/factories/return_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/role_factory.rb +0 -5
- data/lib/spree/testing_support/factories/shipment_factory.rb +1 -11
- data/lib/spree/testing_support/factories/shipping_category_factory.rb +0 -5
- data/lib/spree/testing_support/factories/shipping_method_factory.rb +0 -9
- data/lib/spree/testing_support/factories/shipping_rate_factory.rb +0 -8
- data/lib/spree/testing_support/factories/state_factory.rb +8 -10
- data/lib/spree/testing_support/factories/stock_item_factory.rb +5 -9
- data/lib/spree/testing_support/factories/stock_location_factory.rb +0 -9
- data/lib/spree/testing_support/factories/stock_movement_factory.rb +0 -7
- data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -9
- data/lib/spree/testing_support/factories/store_credit_category_factory.rb +0 -5
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +0 -8
- data/lib/spree/testing_support/factories/store_credit_factory.rb +4 -13
- data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/store_credit_type_factory.rb +0 -5
- data/lib/spree/testing_support/factories/store_factory.rb +0 -5
- data/lib/spree/testing_support/factories/tax_category_factory.rb +0 -8
- data/lib/spree/testing_support/factories/tax_rate_factory.rb +0 -9
- data/lib/spree/testing_support/factories/taxon_factory.rb +5 -10
- data/lib/spree/testing_support/factories/taxonomy_factory.rb +3 -6
- data/lib/spree/testing_support/factories/user_factory.rb +6 -9
- data/lib/spree/testing_support/factories/variant_factory.rb +0 -10
- data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +0 -8
- data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +0 -9
- data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +0 -8
- data/lib/spree/testing_support/factories/zone_factory.rb +1 -9
- data/lib/spree/testing_support/factory_bot.rb +6 -29
- data/lib/spree/testing_support/flaky.rb +22 -0
- data/lib/spree/testing_support/order_walkthrough.rb +7 -6
- data/lib/spree/testing_support/sequences.rb +0 -5
- data/lib/spree/testing_support/shared_examples/calculator.rb +10 -0
- data/lib/spree/testing_support/shared_examples/order_factory.rb +141 -0
- data/lib/spree/testing_support/shared_examples/working_factory.rb +15 -0
- data/lib/spree/testing_support/silence_deprecations.rb +9 -0
- data/lib/spree/user_class_handle.rb +2 -2
- data/lib/tasks/colorado_delivery_fee.rake +28 -0
- data/lib/tasks/payment_method.rake +29 -0
- data/lib/tasks/solidus/delete_prices_with_nil_amount.rake +8 -0
- data/solidus_core.gemspec +18 -8
- metadata +233 -117
- data/app/jobs/spree/promotion_code_batch_job.rb +0 -26
- data/app/mailers/spree/promotion_code_batch_mailer.rb +0 -15
- data/app/models/spree/calculator/distributed_amount.rb +0 -33
- data/app/models/spree/calculator/flat_percent_item_total.rb +0 -23
- data/app/models/spree/calculator/flexi_rate.rb +0 -22
- data/app/models/spree/calculator/percent_on_line_item.rb +0 -13
- data/app/models/spree/calculator/tiered_flat_rate.rb +0 -52
- data/app/models/spree/calculator/tiered_percent.rb +0 -62
- data/app/models/spree/line_item_action.rb +0 -8
- data/app/models/spree/order_promotion.rb +0 -27
- data/app/models/spree/promotion/actions/create_adjustment.rb +0 -77
- data/app/models/spree/promotion/actions/create_item_adjustments.rb +0 -99
- data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +0 -139
- data/app/models/spree/promotion/actions/free_shipping.rb +0 -58
- data/app/models/spree/promotion/rules/first_order.rb +0 -38
- data/app/models/spree/promotion/rules/first_repeat_purchase_since.rb +0 -36
- data/app/models/spree/promotion/rules/item_total.rb +0 -53
- data/app/models/spree/promotion/rules/nth_order.rb +0 -45
- data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -25
- data/app/models/spree/promotion/rules/option_value.rb +0 -50
- data/app/models/spree/promotion/rules/product.rb +0 -74
- data/app/models/spree/promotion/rules/store.rb +0 -22
- data/app/models/spree/promotion/rules/taxon.rb +0 -87
- data/app/models/spree/promotion/rules/user.rb +0 -30
- data/app/models/spree/promotion/rules/user_logged_in.rb +0 -20
- data/app/models/spree/promotion/rules/user_role.rb +0 -45
- data/app/models/spree/promotion.rb +0 -284
- data/app/models/spree/promotion_action.rb +0 -43
- data/app/models/spree/promotion_category.rb +0 -8
- data/app/models/spree/promotion_chooser.rb +0 -34
- data/app/models/spree/promotion_code/batch_builder.rb +0 -64
- data/app/models/spree/promotion_code.rb +0 -50
- data/app/models/spree/promotion_code_batch.rb +0 -27
- data/app/models/spree/promotion_handler/cart.rb +0 -55
- data/app/models/spree/promotion_handler/coupon.rb +0 -123
- data/app/models/spree/promotion_handler/page.rb +0 -26
- data/app/models/spree/promotion_handler/shipping.rb +0 -61
- data/app/models/spree/promotion_rule.rb +0 -55
- data/app/models/spree/promotion_rule_role.rb +0 -8
- data/app/models/spree/promotion_rule_store.rb +0 -10
- data/app/models/spree/promotion_rule_taxon.rb +0 -8
- data/app/models/spree/promotion_rule_user.rb +0 -10
- data/app/models/spree/tax/shipping_rate_taxer.rb +0 -24
- data/app/subscribers/spree/mailer_subscriber.rb +0 -25
- data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_errored.text.erb +0 -2
- data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_finished.text.erb +0 -2
- data/db/migrate/20161017102621_create_spree_promotion_code_batch.rb +0 -38
- data/db/migrate/20180202190713_create_promotion_rule_stores.rb +0 -12
- data/db/migrate/20180328172631_add_join_characters_to_promotion_code_batch.rb +0 -11
- data/db/migrate/20190106184413_remove_code_from_spree_promotions.rb +0 -42
- data/lib/generators/solidus/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -10
- data/lib/generators/solidus/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -9
- data/lib/generators/spree/dummy/templates/rails/script/rails +0 -6
- data/lib/solidus/migrations/promotions_with_code_handlers.rb +0 -66
- data/lib/spree/event/adapters/active_support_notifications.rb +0 -67
- data/lib/spree/event/configuration.rb +0 -25
- data/lib/spree/event/subscriber.rb +0 -86
- data/lib/spree/event/subscriber_registry.rb +0 -94
- data/lib/spree/event.rb +0 -119
- data/lib/spree/permission_sets/promotion_display.rb +0 -15
- data/lib/spree/permission_sets/promotion_management.rb +0 -15
- data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/frontend/all.js +0 -10
- data/lib/spree/testing_support/dummy_app/assets/stylesheets/spree/frontend/all.css +0 -9
- data/lib/spree/testing_support/dummy_app/views/layouts/application.html.erb +0 -1
- data/lib/spree/testing_support/factories/order_promotion_factory.rb +0 -16
- data/lib/spree/testing_support/factories/promotion_category_factory.rb +0 -12
- data/lib/spree/testing_support/factories/promotion_code_factory.rb +0 -16
- data/lib/spree/testing_support/factories/promotion_factory.rb +0 -92
- data/lib/spree/testing_support/factories.rb +0 -11
- data/lib/spree/testing_support.rb +0 -31
- data/lib/tasks/upgrade.rake +0 -15
@@ -1,94 +0,0 @@
|
|
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
|
-
if subscriber.respond_to?("#{event_action}_handler=")
|
39
|
-
subscriber.send("#{event_action}_handler=", subscription)
|
40
|
-
end
|
41
|
-
|
42
|
-
registry[subscriber.name][event_action] = subscription
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def deactivate_subscriber(subscriber, event_action_name = nil)
|
48
|
-
@semaphore.synchronize do
|
49
|
-
unsafe_deactivate_subscriber(subscriber, event_action_name)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
private
|
54
|
-
|
55
|
-
attr_reader :registry
|
56
|
-
|
57
|
-
# Loads all Solidus' core and application's event subscribers files.
|
58
|
-
# The latter are loaded automatically only when the preference
|
59
|
-
# Spree::Config.events.autoload_subscribers is set to a truthy value.
|
60
|
-
#
|
61
|
-
# Files must be placed under the directory `app/subscribers` and their
|
62
|
-
# name must end with `_subscriber.rb`.
|
63
|
-
#
|
64
|
-
# Loading the files has the side effect of adding their module to the
|
65
|
-
# list in Spree::Event.subscribers.
|
66
|
-
def require_subscriber_files
|
67
|
-
pattern = "app/subscribers/**/*_subscriber.rb"
|
68
|
-
|
69
|
-
# Load Solidus subscribers
|
70
|
-
# rubocop:disable Rails/DynamicFindBy
|
71
|
-
solidus_core_dir = Gem::Specification.find_by_name('solidus_core').gem_dir
|
72
|
-
# rubocop:enable Rails/DynamicFindBy
|
73
|
-
Dir.glob(File.join(solidus_core_dir, pattern)) { |c| require_dependency(c.to_s) }
|
74
|
-
|
75
|
-
# Load application subscribers, only when the flag is set to true:
|
76
|
-
if Spree::Config.events.autoload_subscribers
|
77
|
-
Rails.root.glob(pattern) { |c| require_dependency(c.to_s) }
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def unsafe_deactivate_subscriber(subscriber, event_action_name = nil)
|
82
|
-
to_unsubscribe = Array.wrap(event_action_name || subscriber.event_actions.keys)
|
83
|
-
|
84
|
-
to_unsubscribe.each do |event_action|
|
85
|
-
if (subscription = registry.dig(subscriber.name, event_action))
|
86
|
-
Spree::Event.unsubscribe(subscription)
|
87
|
-
|
88
|
-
registry[subscriber.name].delete(event_action)
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
data/lib/spree/event.rb
DELETED
@@ -1,119 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative 'event/adapters/active_support_notifications'
|
4
|
-
require_relative 'event/subscriber_registry'
|
5
|
-
require_relative 'event/configuration'
|
6
|
-
require_relative 'event/subscriber'
|
7
|
-
|
8
|
-
module Spree
|
9
|
-
module Event
|
10
|
-
extend self
|
11
|
-
|
12
|
-
delegate :activate_autoloadable_subscribers, :activate_all_subscribers, :deactivate_all_subscribers, to: :subscriber_registry
|
13
|
-
|
14
|
-
# Allows to trigger events that can be subscribed using #subscribe. An
|
15
|
-
# optional block can be passed that will be executed immediately. The
|
16
|
-
# actual code implementation is delegated to the adapter.
|
17
|
-
#
|
18
|
-
# @param [String] event_name the name of the event. The suffix ".spree"
|
19
|
-
# will be added automatically if not present
|
20
|
-
# @param [Hash] opts a list of options to be passed to the triggered event
|
21
|
-
#
|
22
|
-
# @example Trigger an event named 'order_finalized'
|
23
|
-
# Spree::Event.fire 'order_finalized', order: @order do
|
24
|
-
# @order.finalize!
|
25
|
-
# end
|
26
|
-
def fire(event_name, opts = {})
|
27
|
-
adapter.fire normalize_name(event_name), opts do
|
28
|
-
yield opts if block_given?
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
# Subscribe to an event with the given name. The provided block is executed
|
33
|
-
# every time the subscribed event is fired.
|
34
|
-
#
|
35
|
-
# @param [String, Regexp] event_name the name of the event.
|
36
|
-
# When String, the suffix ".spree" will be added automatically if not present,
|
37
|
-
# when using the default adapter for ActiveSupportNotifications.
|
38
|
-
# When Regexp, due to the unpredictability of all possible regexp combinations,
|
39
|
-
# adding the suffix is developer's responsibility (if you don't, you will
|
40
|
-
# subscribe to all notifications, including internal Rails notifications
|
41
|
-
# as well).
|
42
|
-
#
|
43
|
-
# @see Spree::Event::Adapters::ActiveSupportNotifications#normalize_name
|
44
|
-
#
|
45
|
-
# @return a subscription object that can be used as reference in order
|
46
|
-
# to remove the subscription
|
47
|
-
#
|
48
|
-
# @example Subscribe to the `order_finalized` event
|
49
|
-
# Spree::Event.subscribe 'order_finalized' do |event|
|
50
|
-
# order = event.payload[:order]
|
51
|
-
# Spree::Mailer.order_finalized(order).deliver_later
|
52
|
-
# end
|
53
|
-
#
|
54
|
-
# @see Spree::Event#unsubscribe
|
55
|
-
def subscribe(event_name, &block)
|
56
|
-
name = normalize_name(event_name)
|
57
|
-
listener_names << name
|
58
|
-
adapter.subscribe(name, &block)
|
59
|
-
end
|
60
|
-
|
61
|
-
# Unsubscribes a whole event or a specific subscription object
|
62
|
-
#
|
63
|
-
# @param [String, Object] subscriber the event name as a string (with
|
64
|
-
# or without the ".spree" suffix) or the subscription object
|
65
|
-
#
|
66
|
-
# @example Unsubscribe a single subscription
|
67
|
-
# subscription = Spree::Event.fire 'order_finalized'
|
68
|
-
# Spree::Event.unsubscribe(subscription)
|
69
|
-
# @example Unsubscribe all `order_finalized` event subscriptions
|
70
|
-
# Spree::Event.unsubscribe('order_finalized')
|
71
|
-
# @example Unsubscribe an event by name with explicit prefix
|
72
|
-
# Spree::Event.unsubscribe('order_finalized.spree')
|
73
|
-
def unsubscribe(subscriber)
|
74
|
-
name_or_subscriber = subscriber.is_a?(String) ? normalize_name(subscriber) : subscriber
|
75
|
-
adapter.unsubscribe(name_or_subscriber)
|
76
|
-
end
|
77
|
-
|
78
|
-
# Lists all subscriptions currently registered under the ".spree"
|
79
|
-
# namespace. Actual implementation is delegated to the adapter
|
80
|
-
#
|
81
|
-
# @return [Hash] an hash with event names as keys and arrays of subscriptions
|
82
|
-
# as values
|
83
|
-
#
|
84
|
-
# @example Current subscriptions
|
85
|
-
# Spree::Event.listeners
|
86
|
-
# # => {"order_finalized.spree"=> [#<ActiveSupport...>],
|
87
|
-
# "reimbursement_reimbursed.spree"=> [#<ActiveSupport...>]}
|
88
|
-
def listeners
|
89
|
-
adapter.listeners_for(listener_names)
|
90
|
-
end
|
91
|
-
|
92
|
-
# The adapter used by Spree::Event, defaults to
|
93
|
-
# Spree::Event::Adapters::ActiveSupportNotifications
|
94
|
-
#
|
95
|
-
# @example Change the adapter
|
96
|
-
# Spree::Config.events.adapter = "Spree::EventBus.new"
|
97
|
-
#
|
98
|
-
# @see Spree::AppConfiguration
|
99
|
-
def adapter
|
100
|
-
Spree::Config.events.adapter
|
101
|
-
end
|
102
|
-
|
103
|
-
# @!attribute [r] subscribers
|
104
|
-
# @return <Spree::Event::SubscriberRegistry> The registry for supporting class reloading for Spree::Event::Subscriber instances
|
105
|
-
def subscriber_registry
|
106
|
-
Spree::Config.events.subscriber_registry
|
107
|
-
end
|
108
|
-
|
109
|
-
private
|
110
|
-
|
111
|
-
def normalize_name(name)
|
112
|
-
adapter.normalize_name(name)
|
113
|
-
end
|
114
|
-
|
115
|
-
def listener_names
|
116
|
-
@listeners_names ||= Set.new
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Spree
|
4
|
-
module PermissionSets
|
5
|
-
class PromotionDisplay < PermissionSets::Base
|
6
|
-
def activate!
|
7
|
-
can [:read, :admin, :edit], Spree::Promotion
|
8
|
-
can [:read, :admin], Spree::PromotionRule
|
9
|
-
can [:read, :admin], Spree::PromotionAction
|
10
|
-
can [:read, :admin], Spree::PromotionCategory
|
11
|
-
can [:read, :admin], Spree::PromotionCode
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Spree
|
4
|
-
module PermissionSets
|
5
|
-
class PromotionManagement < PermissionSets::Base
|
6
|
-
def activate!
|
7
|
-
can :manage, Spree::Promotion
|
8
|
-
can :manage, Spree::PromotionRule
|
9
|
-
can :manage, Spree::PromotionAction
|
10
|
-
can :manage, Spree::PromotionCategory
|
11
|
-
can :manage, Spree::PromotionCode
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
// This is a manifest file that'll be compiled into including all the files listed below.
|
2
|
-
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
|
3
|
-
// be included in the compiled file accessible from http://example.com/assets/application.js
|
4
|
-
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
5
|
-
// the compiled file.
|
6
|
-
//
|
7
|
-
//= require jquery
|
8
|
-
//= require rails-ujs
|
9
|
-
//= require spree/frontend
|
10
|
-
//= require_tree .
|
@@ -1,9 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* This is a manifest file that'll automatically include all the stylesheets available in this directory
|
3
|
-
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
|
4
|
-
* the top of the compiled file, but it's generally better to create a new file per style scope.
|
5
|
-
*
|
6
|
-
*= require spree/frontend
|
7
|
-
*= require_self
|
8
|
-
*= require_tree .
|
9
|
-
*/
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= yield %>
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'spree/testing_support/factory_bot'
|
4
|
-
Spree::TestingSupport::FactoryBot.when_cherry_picked do
|
5
|
-
Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
|
6
|
-
|
7
|
-
require 'spree/testing_support/factories/order_factory'
|
8
|
-
require 'spree/testing_support/factories/promotion_factory'
|
9
|
-
end
|
10
|
-
|
11
|
-
FactoryBot.define do
|
12
|
-
factory :order_promotion, class: 'Spree::OrderPromotion' do
|
13
|
-
association :order
|
14
|
-
association :promotion
|
15
|
-
end
|
16
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'spree/testing_support/factory_bot'
|
4
|
-
Spree::TestingSupport::FactoryBot.when_cherry_picked do
|
5
|
-
Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
|
6
|
-
end
|
7
|
-
|
8
|
-
FactoryBot.define do
|
9
|
-
factory :promotion_category, class: 'Spree::PromotionCategory' do
|
10
|
-
name { 'Promotion Category' }
|
11
|
-
end
|
12
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'spree/testing_support/factory_bot'
|
4
|
-
Spree::TestingSupport::FactoryBot.when_cherry_picked do
|
5
|
-
Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
|
6
|
-
|
7
|
-
require 'spree/testing_support/sequences'
|
8
|
-
require 'spree/testing_support/factories/promotion_factory'
|
9
|
-
end
|
10
|
-
|
11
|
-
FactoryBot.define do
|
12
|
-
factory :promotion_code, class: 'Spree::PromotionCode' do
|
13
|
-
promotion
|
14
|
-
sequence(:value) { |i| "code#{i}" }
|
15
|
-
end
|
16
|
-
end
|
@@ -1,92 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'spree/testing_support/factory_bot'
|
4
|
-
Spree::TestingSupport::FactoryBot.when_cherry_picked do
|
5
|
-
Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
|
6
|
-
|
7
|
-
require 'spree/testing_support/factories/promotion_code_factory'
|
8
|
-
require 'spree/testing_support/factories/variant_factory'
|
9
|
-
end
|
10
|
-
|
11
|
-
FactoryBot.define do
|
12
|
-
factory :promotion, class: 'Spree::Promotion' do
|
13
|
-
name { 'Promo' }
|
14
|
-
|
15
|
-
transient do
|
16
|
-
code { nil }
|
17
|
-
end
|
18
|
-
before(:create) do |promotion, evaluator|
|
19
|
-
if evaluator.code
|
20
|
-
promotion.codes << build(:promotion_code, promotion: promotion, value: evaluator.code)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
trait :with_action do
|
25
|
-
after(:create) do |promotion, _evaluator|
|
26
|
-
promotion.actions << Spree::Promotion::Actions::CreateAdjustment.new
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
trait :with_line_item_adjustment do
|
31
|
-
transient do
|
32
|
-
adjustment_rate { 10 }
|
33
|
-
end
|
34
|
-
|
35
|
-
after(:create) do |promotion, evaluator|
|
36
|
-
calculator = Spree::Calculator::FlatRate.new
|
37
|
-
calculator.preferred_amount = evaluator.adjustment_rate
|
38
|
-
Spree::Promotion::Actions::CreateItemAdjustments.create!(calculator: calculator, promotion: promotion)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
factory :promotion_with_item_adjustment, traits: [:with_line_item_adjustment]
|
43
|
-
|
44
|
-
trait :with_free_shipping do
|
45
|
-
after(:create) do |promotion|
|
46
|
-
Spree::Promotion::Actions::FreeShipping.create!(promotion: promotion)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
trait :with_order_adjustment do
|
51
|
-
transient do
|
52
|
-
weighted_order_adjustment_amount { 10 }
|
53
|
-
end
|
54
|
-
|
55
|
-
after(:create) do |promotion, evaluator|
|
56
|
-
calculator = Spree::Calculator::FlatRate.new
|
57
|
-
calculator.preferred_amount = evaluator.weighted_order_adjustment_amount
|
58
|
-
action = Spree::Promotion::Actions::CreateAdjustment.create!(calculator: calculator)
|
59
|
-
promotion.actions << action
|
60
|
-
promotion.save!
|
61
|
-
end
|
62
|
-
end
|
63
|
-
factory :promotion_with_order_adjustment, traits: [:with_order_adjustment]
|
64
|
-
|
65
|
-
trait :with_item_total_rule do
|
66
|
-
transient do
|
67
|
-
item_total_threshold_amount { 10 }
|
68
|
-
end
|
69
|
-
|
70
|
-
after(:create) do |promotion, evaluator|
|
71
|
-
rule = Spree::Promotion::Rules::ItemTotal.create!(
|
72
|
-
promotion: promotion,
|
73
|
-
preferred_operator: 'gte',
|
74
|
-
preferred_amount: evaluator.item_total_threshold_amount
|
75
|
-
)
|
76
|
-
promotion.rules << rule
|
77
|
-
promotion.save!
|
78
|
-
end
|
79
|
-
end
|
80
|
-
factory :promotion_with_item_total_rule, traits: [:with_item_total_rule]
|
81
|
-
trait :with_first_order_rule do
|
82
|
-
after(:create) do |promotion, _evaluator|
|
83
|
-
rule = Spree::Promotion::Rules::FirstOrder.create!(
|
84
|
-
promotion: promotion,
|
85
|
-
)
|
86
|
-
promotion.rules << rule
|
87
|
-
promotion.save!
|
88
|
-
end
|
89
|
-
end
|
90
|
-
factory :promotion_with_first_order_rule, traits: [:with_first_order_rule]
|
91
|
-
end
|
92
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'spree/testing_support/factory_bot'
|
4
|
-
|
5
|
-
Spree::Deprecation.warn(
|
6
|
-
"Please do not try to load factories directly. " \
|
7
|
-
'Use factory_bot_rails and rely on the default configuration instead.', caller(1)
|
8
|
-
)
|
9
|
-
|
10
|
-
Spree::TestingSupport::FactoryBot.check_version
|
11
|
-
Spree::TestingSupport::FactoryBot::PATHS.each { |path| require path }
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'spree/testing_support/factory_bot'
|
4
|
-
|
5
|
-
module Spree
|
6
|
-
module TestingSupport
|
7
|
-
autoload :FactoryBot, "spree/testing_support/factory_bot"
|
8
|
-
|
9
|
-
autoload :SEQUENCES, "spree/testing_support/factory_bot"
|
10
|
-
autoload :FACTORIES, "spree/testing_support/factory_bot"
|
11
|
-
|
12
|
-
def factory_bot_paths
|
13
|
-
Spree::TestingSupport::FactoryBot.definition_file_paths
|
14
|
-
end
|
15
|
-
|
16
|
-
def check_factory_bot_version
|
17
|
-
Spree::TestingSupport::FactoryBot.check_version
|
18
|
-
end
|
19
|
-
|
20
|
-
def load_all_factories
|
21
|
-
Spree::TestingSupport::FactoryBot.add_paths_and_load!
|
22
|
-
end
|
23
|
-
|
24
|
-
deprecate(
|
25
|
-
factory_bot_paths: "Spree::TestingSupport::FactoryBot.definition_file_paths",
|
26
|
-
check_factory_bot_version: "Spree::TestingSupport::FactoryBot.check_version",
|
27
|
-
load_all_factories: "Spree::TestingSupport::FactoryBot.add_paths_and_load!",
|
28
|
-
deprecator: Spree::Deprecation
|
29
|
-
)
|
30
|
-
end
|
31
|
-
end
|
data/lib/tasks/upgrade.rake
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
namespace :solidus do
|
4
|
-
namespace :upgrade do
|
5
|
-
task three_point_zero: [
|
6
|
-
'railties:install:migrations',
|
7
|
-
'db:migrate'
|
8
|
-
] do
|
9
|
-
puts "Your Solidus install is ready for Solidus 3.0"
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
desc "Upgrade to the current Solidus version"
|
14
|
-
task upgrade: 'upgrade:three_point_zero'
|
15
|
-
end
|