From 412bb24e423b0a9c1f973021c2e3bcd5810fd0d3 Mon Sep 17 00:00:00 2001 From: Pau Perez Date: Mon, 8 Feb 2021 15:45:07 +0100 Subject: [PATCH] Ensure report rows are always in the same order I saw the row were returned not respecting any ordering when refreshing the page locally. It made it hard to debug whether or not the customer balance was right. It's less than ideal to use `allow_any_instance_of` but with this legacy and very coupled code, it's the best we can do. --- lib/open_food_network/order_cycle_management_report.rb | 2 +- .../order_cycle_management_report_spec.rb | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/open_food_network/order_cycle_management_report.rb b/lib/open_food_network/order_cycle_management_report.rb index e1f35eed6a..b66e67332f 100644 --- a/lib/open_food_network/order_cycle_management_report.rb +++ b/lib/open_food_network/order_cycle_management_report.rb @@ -48,7 +48,7 @@ module OpenFoodNetwork end def orders - filter search.result + filter(search.result.order(:id)) end def table_items diff --git a/spec/lib/open_food_network/order_cycle_management_report_spec.rb b/spec/lib/open_food_network/order_cycle_management_report_spec.rb index c11c751df9..9824dcb432 100644 --- a/spec/lib/open_food_network/order_cycle_management_report_spec.rb +++ b/spec/lib/open_food_network/order_cycle_management_report_spec.rb @@ -26,6 +26,14 @@ module OpenFoodNetwork expect(subject.orders).to eq([o2]) end + it 'orders them by id' do + result = instance_double(ActiveRecord::Relation) + allow_any_instance_of(Ransack::Search).to receive(:result).and_return(result) + expect(result).to receive(:order).with(:id) { Spree::Order.none } + + subject.orders + end + context "default date range" do it "fetches orders completed in the past month" do o1 = create(:order, completed_at: 1.month.ago - 1.day)