mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Add method fees_name_by_type_for that returns fees name for a variant
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user