From 1cd1e9dc3707d82ea8bfca5eb898a66ff5ef648f Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Wed, 13 Sep 2017 09:01:33 +1000 Subject: [PATCH] Extract filters for available PMs into service object --- app/helpers/enterprises_helper.rb | 14 ++++---------- .../available_payment_method_filter.rb | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 10 deletions(-) create mode 100644 lib/open_food_network/available_payment_method_filter.rb diff --git a/app/helpers/enterprises_helper.rb b/app/helpers/enterprises_helper.rb index 94c3901f8a..7d4591da90 100644 --- a/app/helpers/enterprises_helper.rb +++ b/app/helpers/enterprises_helper.rb @@ -1,3 +1,5 @@ +require 'open_food_network/available_payment_method_filter' + module EnterprisesHelper def current_distributor @current_distributor ||= current_order(false).andand.distributor @@ -22,7 +24,8 @@ module EnterprisesHelper return [] unless current_distributor.present? payment_methods = current_distributor.payment_methods.available(:front_end).all - apply_stripe_filters_to(payment_methods) + filter = OpenFoodNetwork::AvailablePaymentMethodFilter.new + filter.filter!(payment_methods) applicator = OpenFoodNetwork::TagRuleApplicator.new(current_distributor, "FilterPaymentMethods", current_customer.andand.tag_list) applicator.filter!(payment_methods) @@ -98,13 +101,4 @@ module EnterprisesHelper def show_bought_items? order_changes_allowed? && current_order.finalised_line_items.present? end - - def apply_stripe_filters_to(payment_methods) - stripe_enabled = Spree::Config.stripe_connect_enabled && Stripe.publishable_key - if stripe_enabled - payment_methods.reject!{ |p| p.type.ends_with?("StripeConnect") && p.preferred_enterprise_id == 0 } - else - payment_methods.reject!{ |p| p.type.ends_with?("StripeConnect") } - end - end end diff --git a/lib/open_food_network/available_payment_method_filter.rb b/lib/open_food_network/available_payment_method_filter.rb new file mode 100644 index 0000000000..bb33fcd4bc --- /dev/null +++ b/lib/open_food_network/available_payment_method_filter.rb @@ -0,0 +1,17 @@ +module OpenFoodNetwork + class AvailablePaymentMethodFilter + def filter!(payment_methods) + if stripe_enabled? + payment_methods.reject!{ |p| p.type.ends_with?("StripeConnect") && p.preferred_enterprise_id.zero? } + else + payment_methods.reject!{ |p| p.type.ends_with?("StripeConnect") } + end + end + + private + + def stripe_enabled? + Spree::Config.stripe_connect_enabled && Stripe.publishable_key + end + end +end