Sha256: 38490897b42d36561680660622b77391f464c01e94959404ea7e8c9f8efb5556

Contents?: true

Size: 1.98 KB

Versions: 13

Compression:

Stored size: 1.98 KB

Contents

require 'spec_helper'

describe Services::Base::ExceptionWrapper do
  if StandardError.new.respond_to?(:cause)
    it 'does not wrap service errors or subclasses' do
      expect do
        ErrorService.call
      end.to raise_error do |error|
        expect(error).to be_a(ErrorService::Error)
        expect(error.message).to eq('I am a service error.')
        expect(error.cause).to be_nil
      end

      class ServiceWithCustomError < Services::Base
        CustomError = Class.new(self::Error)
        def call
          raise CustomError.new('I am a custom error.')
        end
      end
      expect do
        ServiceWithCustomError.call
      end.to raise_error do |error|
        expect(error).to be_a(ServiceWithCustomError::CustomError)
        expect(error.message).to eq('I am a custom error.')
        expect(error.cause).to be_nil
      end
    end

    it 'wraps all other exceptions' do
      class ServiceWithStandardError < Services::Base
        def call
          raise 'I am a StandardError.'
        end
      end
      expect do
        ServiceWithStandardError.call
      end.to raise_error do |error|
        expect(error).to be_a(ServiceWithStandardError::Error)
        expect(error.message).to eq('I am a StandardError.')
        expect(error.cause).to be_a(StandardError)
        expect(error.cause.message).to eq('I am a StandardError.')
      end

      class ServiceWithCustomStandardError < Services::Base
        CustomStandardError = Class.new(StandardError)
        def call
          raise CustomStandardError, 'I am a custom StandardError.'
        end
      end
      expect do
        ServiceWithCustomStandardError.call
      end.to raise_error do |error|
        expect(error).to be_a(ServiceWithCustomStandardError::Error)
        expect(error.message).to eq('I am a custom StandardError.')
        expect(error.cause).to be_a(ServiceWithCustomStandardError::CustomStandardError)
        expect(error.cause.message).to eq('I am a custom StandardError.')
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
services-1.3.0 spec/services/modules/exception_wrapper_spec.rb
services-1.2.0 spec/services/modules/exception_wrapper_spec.rb
services-1.1.1 spec/services/modules/exception_wrapper_spec.rb
services-1.1.0 spec/services/modules/exception_wrapper_spec.rb
services-1.0.0 spec/services/modules/exception_wrapper_spec.rb
services-0.4.0 spec/services/modules/exception_wrapper_spec.rb
services-0.3.4 spec/services/modules/exception_wrapper_spec.rb
services-0.2.14 spec/services/modules/exception_wrapper_spec.rb
services-0.2.13 spec/services/modules/exception_wrapper_spec.rb
services-0.2.12 spec/services/modules/exception_wrapper_spec.rb
services-0.2.11 spec/services/modules/exception_wrapper_spec.rb
services-0.2.10 spec/services/modules/exception_wrapper_spec.rb
services-0.2.9 spec/services/modules/exception_wrapper_spec.rb