Sha256: e4e96f7c09c7aed2d73e6aa485aedd9037e3bd3d034bfaba576969d43d9448d1

Contents?: true

Size: 1.05 KB

Versions: 11

Compression:

Stored size: 1.05 KB

Contents

require 'rails_helper'

RSpec.describe Spree::Calculator, type: :model do
  class SimpleCalculator < Spree::Calculator
    def compute_simple_computable(_line_item)
      'computed'
    end
  end

  class SimpleComputable
  end

  describe "#calculators" do
    subject { Spree::Calculator.calculators }

    it 'returns the (deprecated) calculator step' do
      Spree::Deprecation.silence do
        expect(subject).to be_a Spree::Core::Environment::Calculators
      end
    end
  end

  context "with computable" do
    let(:calculator) { SimpleCalculator.new }
    let(:computable) { SimpleComputable.new }

    subject { SimpleCalculator.new.compute computable }

    it 'calls compute method of class type' do
      expect(subject).to eq  'computed'
    end

    context 'computable does not implement right function name' do
      let(:computable) { Spree::LineItem.new }

      it 'raises an error' do
        expect { subject }.to raise_error NotImplementedError, /Please implement \'compute_line_item\(line_item\)\' in your calculator/
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
solidus_core-2.5.2 spec/models/spree/calculator_spec.rb
solidus_core-2.5.1 spec/models/spree/calculator_spec.rb
solidus_core-2.5.0 spec/models/spree/calculator_spec.rb
solidus_core-2.5.0.rc1 spec/models/spree/calculator_spec.rb
solidus_core-2.5.0.beta2 spec/models/spree/calculator_spec.rb
solidus_core-2.5.0.beta1 spec/models/spree/calculator_spec.rb
solidus_core-2.4.2 spec/models/spree/calculator_spec.rb
solidus_core-2.4.1 spec/models/spree/calculator_spec.rb
solidus_core-2.4.0 spec/models/spree/calculator_spec.rb
solidus_core-2.4.0.rc1 spec/models/spree/calculator_spec.rb
solidus_core-2.4.0.beta1 spec/models/spree/calculator_spec.rb