From b49777062b297a9fa2ab14d2dcce653265800c3e Mon Sep 17 00:00:00 2001 From: Pau Perez Date: Wed, 3 Mar 2021 10:57:17 +0100 Subject: [PATCH] Include canceled orders in report when searching It's a code smell to have a boolean control argument. `Permissions::Order` goes too far and assumes we want to filter out canceled orders when using report's search params and this is not the case. --- .../reports/bulk_coop/bulk_coop_report.rb | 5 ++- .../bulk_coop/bulk_coop_report_spec.rb | 41 ++++++++++++++----- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_report.rb b/engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_report.rb index ef9cfdccc8..1f658b189a 100644 --- a/engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_report.rb +++ b/engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_report.rb @@ -22,6 +22,7 @@ module OrderManagement @supplier_report = BulkCoopSupplierReport.new @allocation_report = BulkCoopAllocationReport.new + @filter_canceled = false end def header @@ -138,6 +139,8 @@ module OrderManagement private + attr_reader :filter_canceled + def line_item_includes [ { @@ -149,7 +152,7 @@ module OrderManagement end def order_permissions - @order_permissions ||= ::Permissions::Order.new(@user, @params[:q]) + @order_permissions ||= ::Permissions::Order.new(@user, filter_canceled) end def report_line_items diff --git a/engines/order_management/spec/services/order_management/reports/bulk_coop/bulk_coop_report_spec.rb b/engines/order_management/spec/services/order_management/reports/bulk_coop/bulk_coop_report_spec.rb index 9adc4b047a..f667c8fdc6 100644 --- a/engines/order_management/spec/services/order_management/reports/bulk_coop/bulk_coop_report_spec.rb +++ b/engines/order_management/spec/services/order_management/reports/bulk_coop/bulk_coop_report_spec.rb @@ -6,7 +6,7 @@ describe OrderManagement::Reports::BulkCoop::BulkCoopReport do subject { OrderManagement::Reports::BulkCoop::BulkCoopReport.new user, params, true } let(:user) { create(:admin_user) } - describe "fetching orders" do + describe '#table_items' do let(:params) { {} } let(:d1) { create(:distributor_enterprise) } @@ -17,17 +17,38 @@ describe OrderManagement::Reports::BulkCoop::BulkCoopReport do before { o1.line_items << li1 } context "as a site admin" do - it "fetches completed orders" do - o2 = create(:order, state: 'cart') - o2.line_items << build(:line_item) - expect(subject.table_items).to eq([li1]) + context 'when searching' do + let(:params) { { q: { completed_at_gt: '', completed_at_lt: '', distributor_id_in: [] } } } + + it "fetches completed orders" do + o2 = create(:order, state: 'cart') + o2.line_items << build(:line_item) + expect(subject.table_items).to eq([li1]) + end + + it 'shows canceled orders' do + o2 = create(:order, state: 'canceled', completed_at: 1.day.ago, order_cycle: oc1, distributor: d1) + line_item = build(:line_item_with_shipment) + o2.line_items << line_item + expect(subject.table_items).to include(line_item) + end end - it "shows cancelled orders" do - o2 = create(:order, state: 'canceled', completed_at: 1.day.ago, order_cycle: oc1, distributor: d1) - line_item = build(:line_item_with_shipment) - o2.line_items << line_item - expect(subject.table_items).to include(line_item) + context 'when not searching' do + let(:params) { {} } + + it "fetches completed orders" do + o2 = create(:order, state: 'cart') + o2.line_items << build(:line_item) + expect(subject.table_items).to eq([li1]) + end + + it 'shows canceled orders' do + o2 = create(:order, state: 'canceled', completed_at: 1.day.ago, order_cycle: oc1, distributor: d1) + line_item = build(:line_item_with_shipment) + o2.line_items << line_item + expect(subject.table_items).to include(line_item) + end end end