From e8ef4acb2b2fd15d28de8b51312eb6a53ff2c20a Mon Sep 17 00:00:00 2001 From: Pau Perez Date: Wed, 13 Jan 2021 19:13:27 +0100 Subject: [PATCH] Hide new data fetching implementation under toggle --- app/controllers/spree/users_controller.rb | 20 +++++++++++++------ .../spree/users_controller_spec.rb | 16 +++++++++++++++ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/app/controllers/spree/users_controller.rb b/app/controllers/spree/users_controller.rb index 7d46be6748..2f7722c401 100644 --- a/app/controllers/spree/users_controller.rb +++ b/app/controllers/spree/users_controller.rb @@ -14,12 +14,7 @@ module Spree # Ignores invoice orders def show - @orders = @user.orders - .where.not(Spree::Order.in_incomplete_state.where_values_hash) - .select('spree_orders.*') - .order('completed_at desc') - - @orders = OutstandingBalance.new(@orders).query + @orders = orders_collection customers = spree_current_user.customers @shops = Enterprise @@ -64,6 +59,19 @@ module Spree private + def orders_collection + if OpenFoodNetwork::FeatureToggle.enabled?(:customer_balance, spree_current_user) + orders = @user.orders + .where.not(Spree::Order.in_incomplete_state.where_values_hash) + .select('spree_orders.*') + .order('completed_at desc') + + OutstandingBalance.new(orders).query + else + @user.orders.where(state: 'complete').order('completed_at desc') + end + end + def load_object @user ||= spree_current_user if @user diff --git a/spec/controllers/spree/users_controller_spec.rb b/spec/controllers/spree/users_controller_spec.rb index 8c5c6b80b1..8f7b4257c7 100644 --- a/spec/controllers/spree/users_controller_spec.rb +++ b/spec/controllers/spree/users_controller_spec.rb @@ -40,6 +40,22 @@ describe Spree::UsersController, type: :controller do # Doesn't return uncompleted orders" do expect(orders).not_to include d1o3 end + + context 'when the customer_balance feature is enabled' do + let(:outstanding_balance) { double(:outstanding_balance) } + + before do + allow(OpenFoodNetwork::FeatureToggle) + .to receive(:enabled?).with(:customer_balance, controller.spree_current_user) { true } + end + + it 'calls OutstandingBalance' do + allow(OutstandingBalance).to receive(:new).and_return(outstanding_balance) + expect(outstanding_balance).to receive(:query) { Spree::Order.none } + + spree_get :show + end + end end describe "registered_email" do