Files
openfoodnetwork/spec/models/calculator/weight_spec.rb
Maikel Linke 1ea2f37c18 Support international decimals in weight calculator
A previous pull request added support for flexible decimal characters
when editing money amounts.
https://github.com/openfoodfoundation/openfoodnetwork/pull/1831

This pull request applies the same principle to the weight calculator
which was missed in the previous pull request.
2019-03-21 12:49:19 +11:00

44 lines
1.5 KiB
Ruby

require 'spec_helper'
describe Calculator::Weight do
it_behaves_like "a model using the LocalizedNumber module", [:preferred_per_kg]
it "computes shipping cost for an order by total weight" do
variant1 = build(:variant, weight: 10)
variant2 = build(:variant, weight: 20)
variant3 = build(:variant, weight: nil)
line_item1 = build(:line_item, variant: variant1, quantity: 1)
line_item2 = build(:line_item, variant: variant2, quantity: 3)
line_item3 = build(:line_item, variant: variant3, quantity: 5)
order = double(:order, line_items: [line_item1, line_item2, line_item3])
subject.set_preference(:per_kg, 10)
expect(subject.compute(order)).to eq((10 * 1 + 20 * 3) * 10)
end
it "computes shipping cost for a line item" do
variant = build(:variant, weight: 10)
line_item = build(:line_item, variant: variant, quantity: 2)
subject.set_preference(:per_kg, 10)
expect(subject.compute(line_item)).to eq(10 * 2 * 10)
end
it "computes shipping cost for an object with an order" do
variant1 = build(:variant, weight: 10)
variant2 = build(:variant, weight: 5)
line_item1 = build(:line_item, variant: variant1, quantity: 1)
line_item2 = build(:line_item, variant: variant2, quantity: 2)
order = double(:order, line_items: [line_item1, line_item2])
object_with_order = double(:object_with_order, order: order)
subject.set_preference(:per_kg, 10)
expect(subject.compute(object_with_order)).to eq((10 * 1 + 5 * 2) * 10)
end
end