Sha256: dc0eed914b851f4d705c607b80f8a6170dc457095ee25b098e2c76d2d308a885

Contents?: true

Size: 1.92 KB

Versions: 43

Compression:

Stored size: 1.92 KB

Contents

# frozen_string_literal: true

require 'rails_helper'
require 'shared_examples/calculator_shared_examples'

module Spree
  module Calculator::Shipping
    RSpec.describe FlexiRate, type: :model do
      let(:variant1) { build(:variant, price: 10) }
      let(:variant2) { build(:variant, price: 20) }

      it_behaves_like 'a calculator with a description'

      let(:package) do
        build(:stock_package, variants_contents: { variant1 => 4, variant2 => 6 })
      end

      let(:subject) { FlexiRate.new }

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

        it "should compute amount correctly when first_item has a value" do
          subject.preferred_first_item = 1.0
          expect(subject.compute(package).round(2)).to eq(1.0)
        end

        it "should compute amount correctly when additional_items has a value" do
          subject.preferred_additional_item = 1.0
          expect(subject.compute(package).round(2)).to eq(9.0)
        end

        it "should compute amount correctly when additional_items and first_item have values" do
          subject.preferred_first_item = 5.0
          subject.preferred_additional_item = 1.0
          expect(subject.compute(package).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
          subject.preferred_first_item = 5.0
          subject.preferred_additional_item = 1.0
          subject.preferred_max_items = 3
          expect(subject.compute(package).round(2)).to eq(26.0)
        end

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

Version data entries

43 entries across 43 versions & 2 rubygems

Version Path
solidus_core-2.9.6 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.8.6 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.9.5 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.9.4 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.6.6 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.7.4 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.8.5 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.9.3 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.9.2 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.10.0.beta1 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.7.3 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.6.5 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.9.1 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.9.0 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.9.0.rc.1 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.8.4 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.8.3 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.7.2 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.6.4 spec/models/spree/calculator/shipping/flexi_rate_spec.rb
solidus_core-2.8.2 spec/models/spree/calculator/shipping/flexi_rate_spec.rb