mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
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.
44 lines
1.5 KiB
Ruby
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
|