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.
This commit is contained in:
Pau Perez
2021-03-03 10:57:17 +01:00
parent f67b45a580
commit b49777062b
2 changed files with 35 additions and 11 deletions

View File

@@ -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

View File

@@ -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