diff --git a/lib/open_food_network/enterprise_fee_calculator.rb b/lib/open_food_network/enterprise_fee_calculator.rb index cfc66be18f..6d6f0748e9 100644 --- a/lib/open_food_network/enterprise_fee_calculator.rb +++ b/lib/open_food_network/enterprise_fee_calculator.rb @@ -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 diff --git a/spec/lib/open_food_network/enterprise_fee_calculator_spec.rb b/spec/lib/open_food_network/enterprise_fee_calculator_spec.rb index 24b4ea07b6..c73d4e3137 100644 --- a/spec/lib/open_food_network/enterprise_fee_calculator_spec.rb +++ b/spec/lib/open_food_network/enterprise_fee_calculator_spec.rb @@ -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,