Add itemwise shipping cost calculator

This commit is contained in:
Rohan Mitchell
2012-06-29 07:52:29 +10:00
parent c09d4c98c8
commit eae05ea59c
3 changed files with 32 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
module OpenFoodWeb
class Calculator::Itemwise < Spree::Calculator
def self.description
"Itemwise Shipping"
end
def compute(object)
# Given an order, sum the shipping on each individual item
object.line_items.map { |li| li.itemwise_shipping_cost }.inject(:+)
end
end
end

View File

@@ -24,6 +24,12 @@ module Openfoodweb
end
end
# Register Spree calculators
initializer "spree.register.calculators" do |app|
app.config.spree.calculators.shipping_methods << OpenFoodWeb::Calculator::Itemwise
end
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.

View File

@@ -0,0 +1,13 @@
require 'spec_helper'
describe OpenFoodWeb::Calculator::Itemwise do
it "computes the shipping cost for each line item in an order" do
line_item = double(:line_item)
line_item.should_receive(:itemwise_shipping_cost).exactly(3).times.and_return(10)
order = double(:order)
order.stub(:line_items).and_return([line_item]*3)
subject.compute(order).should == 30
end
end