Add method fees_name_by_type_for that returns fees name for a variant

This commit is contained in:
Jean-Baptiste Bellet
2022-06-21 14:20:59 +02:00
parent f6e2cb52e0
commit 976e326bbd
2 changed files with 15 additions and 5 deletions

View File

@@ -40,6 +40,12 @@ module OpenFoodNetwork
end.select { |_fee_type, amount| amount > 0 }
end
def fees_name_by_type_for(variant)
per_item_enterprise_fee_applicators_for(variant).each_with_object({}) do |applicator, fees|
fees[applicator.enterprise_fee.fee_type.to_sym] = applicator.enterprise_fee.name
end
end
def create_line_item_adjustments_for(line_item)
variant = line_item.variant

View File

@@ -109,11 +109,11 @@ module OpenFoodNetwork
end
describe "calculating fees by type" do
let!(:ef_admin) { create(:enterprise_fee, fee_type: 'admin', amount: 1.23) }
let!(:ef_sales) { create(:enterprise_fee, fee_type: 'sales', amount: 4.56) }
let!(:ef_packing) { create(:enterprise_fee, fee_type: 'packing', amount: 7.89) }
let!(:ef_transport) { create(:enterprise_fee, fee_type: 'transport', amount: 0.12) }
let!(:ef_fundraising) { create(:enterprise_fee, fee_type: 'fundraising', amount: 3.45) }
let!(:ef_admin) { create(:enterprise_fee, fee_type: 'admin', amount: 1.23, name: "Admin") }
let!(:ef_sales) { create(:enterprise_fee, fee_type: 'sales', amount: 4.56, name: "Sales") }
let!(:ef_packing) { create(:enterprise_fee, fee_type: 'packing', amount: 7.89, name: "Packing") }
let!(:ef_transport) { create(:enterprise_fee, fee_type: 'transport', amount: 0.12, name: "Transport") }
let!(:ef_fundraising) { create(:enterprise_fee, fee_type: 'fundraising', amount: 3.45, name: "Fundraising") }
let!(:exchange) {
create(:exchange, order_cycle: order_cycle,
sender: coordinator, receiver: distributor, incoming: false,
@@ -122,6 +122,10 @@ module OpenFoodNetwork
}
describe "regular computation" do
it "returns the fees names" do
expect(EnterpriseFeeCalculator.new(distributor, order_cycle).fees_name_by_type_for(product1.master)).to eq({ admin: "Admin", fundraising: "Fundraising", packing: "Packing", sales: "Sales", transport: "Transport" })
end
it "returns a breakdown of fees" do
expect(EnterpriseFeeCalculator.new(distributor,
order_cycle).fees_by_type_for(product1.master)).to eq(admin: 1.23, sales: 4.56, packing: 7.89,