mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Defend against nils in variant serializer
If unit_price.denominator ever returns nil, the serializer won't explode now.
This commit is contained in:
@@ -41,7 +41,7 @@ class Api::VariantSerializer < ActiveModel::Serializer
|
||||
end
|
||||
|
||||
def unit_price_price
|
||||
price_with_fees / unit_price.denominator
|
||||
price_with_fees / (unit_price.denominator || 1)
|
||||
end
|
||||
|
||||
def unit_price_unit
|
||||
|
||||
@@ -25,4 +25,22 @@ describe Api::VariantSerializer do
|
||||
:tag_list # Used to apply tag rules
|
||||
)
|
||||
end
|
||||
|
||||
describe "#unit_price_price" do
|
||||
context "without fees" do
|
||||
it "displays the price divided by the unit price denominator" do
|
||||
allow(subject).to receive_message_chain(:unit_price, :denominator) { 1000 }
|
||||
|
||||
expect(subject.unit_price_price).to eq(variant.price / 1000)
|
||||
end
|
||||
end
|
||||
|
||||
context "when the denominator returns nil" do
|
||||
it "returns the price" do
|
||||
allow(subject).to receive_message_chain(:unit_price, :denominator) { nil }
|
||||
|
||||
expect(subject.unit_price_price).to eq(variant.price)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user