From a5a13761a8375a50495e620abd5e7d3116dea379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=87a=C4=9Fr=C4=B1=20=C3=96zkan?= Date: Tue, 3 Oct 2023 03:30:23 +0300 Subject: [PATCH 1/2] Filter with open ended boundaries upon missing params --- lib/reporting/reports/customers/base.rb | 6 ++-- spec/lib/reports/customers_report_spec.rb | 44 +++++++++++++++++------ 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/lib/reporting/reports/customers/base.rb b/lib/reporting/reports/customers/base.rb index a1c2382e55..f786518e20 100644 --- a/lib/reporting/reports/customers/base.rb +++ b/lib/reporting/reports/customers/base.rb @@ -50,10 +50,10 @@ module Reporting private def filter_to_completed_at(orders) - min = params.dig(:q, :completed_at_gt) - max = params.dig(:q, :completed_at_lt) + min = params.dig(:q, :completed_at_gt).presence + max = params.dig(:q, :completed_at_lt).presence - return orders if min.blank? || max.blank? + return orders if min.nil? && max.nil? orders.where(completed_at: [min..max]) end diff --git a/spec/lib/reports/customers_report_spec.rb b/spec/lib/reports/customers_report_spec.rb index 8dddf65a3b..37311390ba 100644 --- a/spec/lib/reports/customers_report_spec.rb +++ b/spec/lib/reports/customers_report_spec.rb @@ -244,18 +244,40 @@ module Reporting expect(subject.filter(orders)).to eq(orders) end - it "filters to a specific completed_at date" do - o1 = create(:order, completed_at: 1.day.ago) - o2 = create(:order, completed_at: 3.days.ago) - o3 = create(:order, completed_at: 5.days.ago) + describe "filters to a specific completed_at date range" do + let!(:o1) { create(:order, completed_at: 1.day.ago) } + let!(:o2) { create(:order, completed_at: 3.days.ago) } + let!(:o3) { create(:order, completed_at: 5.days.ago) } - allow(subject).to receive(:params).and_return( - q: { - completed_at_gt: 1.day.before(o2.completed_at), - completed_at_lt: 1.day.after(o2.completed_at) - } - ) - expect(subject.filter(orders)).to eq([o2]) + it do + allow(subject).to receive(:params).and_return( + q: { + completed_at_gt: 1.day.before(o2.completed_at), + completed_at_lt: 1.day.after(o2.completed_at) + } + ) + expect(subject.filter(orders)).to eq([o2]) + end + + it "when completed_at_gt param is missing" do + allow(subject).to receive(:params).and_return( + q: { + completed_at_gt: "", + completed_at_lt: 1.day.after(o2.completed_at) + } + ) + expect(subject.filter(orders)).to eq([o2, o3]) + end + + it "when completed_at_lt param is missing" do + allow(subject).to receive(:params).and_return( + q: { + completed_at_gt: 1.day.before(o2.completed_at), + completed_at_lt: "" + } + ) + expect(subject.filter(orders)).to eq([o1, o2]) + end end it "filters to a specific distributor" do From f93fcd347b073458909cee72a3908294e3f34195 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=87a=C4=9Fr=C4=B1=20=C3=96zkan?= Date: Wed, 4 Oct 2023 01:59:10 +0300 Subject: [PATCH 2/2] Rubocop fix --- spec/lib/reports/customers_report_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/lib/reports/customers_report_spec.rb b/spec/lib/reports/customers_report_spec.rb index 37311390ba..75d03e0615 100644 --- a/spec/lib/reports/customers_report_spec.rb +++ b/spec/lib/reports/customers_report_spec.rb @@ -254,7 +254,7 @@ module Reporting q: { completed_at_gt: 1.day.before(o2.completed_at), completed_at_lt: 1.day.after(o2.completed_at) - } + } ) expect(subject.filter(orders)).to eq([o2]) end