Sha256: c508354a0daa8b730797d9db370980c096879763b92f4ef301fe5afe3f2cde9b

Contents?: true

Size: 1012 Bytes

Versions: 12

Compression:

Stored size: 1012 Bytes

Contents

# frozen_string_literal: true

RSpec.describe Mutant::Transform::Exception do
  subject { described_class.new(error_class, block) }

  let(:error_class) do
    Class.new(RuntimeError)
  end

  describe '#apply' do
    def apply
      subject.apply(input)
    end

    let(:input) { 2 }

    context 'block that does not raise' do
      let(:block) { ->(input) { input*input } }

      it 'returns expected success value' do
        expect(apply).to eql(Mutant::Either::Right.new(4))
      end
    end

    context 'on block that raises' do
      context 'a covered exception' do
        let(:block) { ->(_input) { fail(error_class, 'some message') } }

        let(:error) do
          Mutant::Transform::Error.new(
            cause:     nil,
            input:     input,
            message:   'some message',
            transform: subject
          )
        end

        it 'returns expected error' do
          expect(apply).to eql(Mutant::Either::Left.new(error))
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
mutant-0.9.11 spec/unit/mutant/transform/exception_spec.rb
mutant-0.9.10 spec/unit/mutant/transform/exception_spec.rb
mutant-0.9.9 spec/unit/mutant/transform/exception_spec.rb
mutant-0.9.8 spec/unit/mutant/transform/exception_spec.rb
mutant-0.9.7 spec/unit/mutant/transform/exception_spec.rb
mutant-0.9.6 spec/unit/mutant/transform/exception_spec.rb
mutant-0.9.5 spec/unit/mutant/transform/exception_spec.rb
mutant-0.9.4 spec/unit/mutant/transform/exception_spec.rb
mutant-0.9.3 spec/unit/mutant/transform/exception_spec.rb
mutant-0.9.2 spec/unit/mutant/transform/exception_spec.rb
mutant-0.9.1 spec/unit/mutant/transform/exception_spec.rb
mutant-0.9.0 spec/unit/mutant/transform/exception_spec.rb