Sha256: 99749253af642da004616b67c56d6ba69bbb3d7d593bd8c78d2eeef5be737c34

Contents?: true

Size: 1.55 KB

Versions: 23

Compression:

Stored size: 1.55 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

23 entries across 23 versions & 2 rubygems

Version Path
solidus_core-2.0.3 spec/models/spree/calculator/flexi_rate_spec.rb
solidus_core-1.4.2 spec/models/spree/calculator/flexi_rate_spec.rb
solidus_core-1.3.2 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.3.0.rc1 spec/models/spree/calculator/flexi_rate_spec.rb
solidus_core-2.0.2 spec/models/spree/calculator/flexi_rate_spec.rb
solidus_core-1.4.1 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.2.1 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.2.0 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.2.0.rc3 spec/models/spree/calculator/flexi_rate_spec.rb
solidus_core-2.0.1 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.2.0.rc2 spec/models/spree/calculator/flexi_rate_spec.rb
spree_core-3.2.0.rc1 spec/models/spree/calculator/flexi_rate_spec.rb
solidus_core-2.0.0 spec/models/spree/calculator/flexi_rate_spec.rb
solidus_core-1.4.0 spec/models/spree/calculator/flexi_rate_spec.rb
solidus_core-2.0.0.rc1 spec/models/spree/calculator/flexi_rate_spec.rb
solidus_core-1.4.0.rc1 spec/models/spree/calculator/flexi_rate_spec.rb
solidus_core-2.0.0.beta1 spec/models/spree/calculator/flexi_rate_spec.rb
solidus_core-1.4.0.beta1 spec/models/spree/calculator/flexi_rate_spec.rb
solidus_core-1.3.1 spec/models/spree/calculator/flexi_rate_spec.rb
solidus_core-1.3.0 spec/models/spree/calculator/flexi_rate_spec.rb