From 2ead2ad417405e18517df50002f41be40fb2238e Mon Sep 17 00:00:00 2001 From: Pau Perez Date: Wed, 3 Mar 2021 09:29:30 +0100 Subject: [PATCH] Replace private stub with fake collaborator object --- .../reports/line_items_spec.rb | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/spec/lib/open_food_network/reports/line_items_spec.rb b/spec/lib/open_food_network/reports/line_items_spec.rb index 0cd21534a1..63d9696f4b 100644 --- a/spec/lib/open_food_network/reports/line_items_spec.rb +++ b/spec/lib/open_food_network/reports/line_items_spec.rb @@ -8,8 +8,9 @@ describe OpenFoodNetwork::Reports::LineItems do # under test and the various objects it depends on. Other more common moking strategies where very # hard. class FakeOrderPermissions - def initialize(line_item) + def initialize(line_item, orders_relation) @relation = Spree::LineItem.where(id: line_item.id) + @orders_relation = orders_relation end def visible_line_items @@ -21,31 +22,30 @@ describe OpenFoodNetwork::Reports::LineItems do Spree::LineItem.where(id: line_item.id) end + def visible_orders + orders_relation + end + private - attr_reader :relation - end - - class FakeRansackResult - attr_reader :result - - def initialize(result) - @result = result - end + attr_reader :relation, :orders_relation end describe '#list' do - let!(:order) { create(:order, distributor: create(:enterprise)) } + let!(:order) do + create( + :order, + distributor: create(:enterprise), + completed_at: 1.day.ago, + shipments: [build(:shipment)] + ) + end let!(:line_item) { create(:line_item, order: order) } - let(:order_permissions) { FakeOrderPermissions.new(line_item) } + let(:orders_relation) { Spree::Order.where(id: order.id) } + let(:order_permissions) { FakeOrderPermissions.new(line_item, orders_relation) } let(:params) { {} } - before do - orders_relation = Spree::Order.where(id: order.id) - allow(reports_line_items).to receive(:search_orders) { FakeRansackResult.new(orders_relation) } - end - it 'returns masked data' do line_items = reports_line_items.list expect(line_items.first.order.email).to eq(I18n.t('admin.reports.hidden'))