Files
openfoodnetwork/spec/lib/reports/line_items_spec.rb
2023-02-15 11:08:19 +01:00

56 lines
1.4 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
describe Reporting::LineItems do
subject(:reports_line_items) { described_class.new(order_permissions, params) }
# This object lets us add some test coverage despite the very deep coupling between the class
# under test and the various objects it depends on. Other more common moking strategies where very
# hard.
class FakeOrderPermissions
def initialize(line_item, orders_relation)
@relation = Spree::LineItem.where(id: line_item.id)
@orders_relation = orders_relation
end
def visible_line_items
relation
end
def editable_line_items
line_item = FactoryBot.create(:line_item)
Spree::LineItem.where(id: line_item.id)
end
def visible_orders
orders_relation
end
private
attr_reader :relation, :orders_relation
end
describe '#list' do
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(:orders_relation) { Spree::Order.where(id: order.id) }
let(:order_permissions) { FakeOrderPermissions.new(line_item, orders_relation) }
let(:params) { {} }
it 'returns masked data' do
line_items = reports_line_items.list
expect(line_items.first.order.email).to eq('HIDDEN')
end
end
end