mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-28 21:07:16 +00:00
42 lines
1.4 KiB
Ruby
42 lines
1.4 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe Calculator::Weight do
|
|
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
|