Sha256: e35540b28921198b817a2e311d5e1bbdaad7acabdc33855bcd3d6b327bd95d05

Contents?: true

Size: 1.58 KB

Versions: 32

Compression:

Stored size: 1.58 KB

Contents

require 'spec_helper'

describe Spree::Calculator::FlexiRate, :type => :model do
  let(:calculator) { Spree::Calculator::FlexiRate.new }

  let(:order) do
    mock_model(
      Spree::Order, quantity: 10
    )
  end

  context "compute" do
    it "should compute amount correctly when all fees are 0" do
      expect(calculator.compute(order).round(2)).to eq(0.0)
    end

    it "should compute amount correctly when first_item has a value" do
      allow(calculator).to receive_messages :preferred_first_item => 1.0
      expect(calculator.compute(order).round(2)).to eq(1.0)
    end

    it "should compute amount correctly when additional_items has a value" do
      allow(calculator).to receive_messages :preferred_additional_item => 1.0
      expect(calculator.compute(order).round(2)).to eq(9.0)
    end

    it "should compute amount correctly when additional_items and first_item have values" do
      allow(calculator).to receive_messages :preferred_first_item => 5.0, :preferred_additional_item => 1.0
      expect(calculator.compute(order).round(2)).to eq(14.0)
    end

    it "should compute amount correctly when additional_items and first_item have values AND max items has value" do
      allow(calculator).to receive_messages :preferred_first_item => 5.0, :preferred_additional_item => 1.0, :preferred_max_items => 3
      expect(calculator.compute(order).round(2)).to eq(7.0)
    end

    it "should allow creation of new object with all the attributes" do
      Spree::Calculator::FlexiRate.new(:preferred_first_item => 1, :preferred_additional_item => 1, :preferred_max_items => 1)
    end
  end
end

Version data entries

32 entries across 32 versions & 2 rubygems

Version Path
solidus_core-1.2.3 spec/models/spree/calculator/flexi_rate_spec.rb
solidus_core-1.1.4 spec/models/spree/calculator/flexi_rate_spec.rb
solidus_core-1.0.7 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.1.5 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.1.4 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.1.3 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.1.2 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.0.10 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.1.1 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.1.0 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.1.0.rc4 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.0.9 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.1.0.rc3 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.1.0.rc2 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.1.0.rc1 spec/models/spree/calculator/flexi_rate_spec.rb
solidus_core-1.0.6 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.0.8 spec/models/spree/calculator/flexi_rate_spec.rb
solidus_core-1.2.2 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.0.7 spec/models/spree/calculator/flexi_rate_spec.rb
solidus_core-1.2.1 spec/models/spree/calculator/flexi_rate_spec.rb