Sha256: fda3337eba15d1ec0b6e32d0fcd33c09b5295b64a0d3df5bf8a6a3bcf576f735

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

# typed: strict

require_relative "simulates_argument_error/transforms_params"
require_relative "simulates_argument_error/reconciles_args_with_params"
require_relative "simulates_argument_error/recreates_message"
require_relative "share/cleans_backtrace"
require_relative "share/stringifies_call"

module Mocktail
  class SimulatesArgumentError
    extend T::Sig

    sig { void }
    def initialize
      @transforms_params = T.let(TransformsParams.new, TransformsParams)
      @reconciles_args_with_params = T.let(ReconcilesArgsWithParams.new, ReconcilesArgsWithParams)
      @recreates_message = T.let(RecreatesMessage.new, RecreatesMessage)
      @cleans_backtrace = T.let(CleansBacktrace.new, CleansBacktrace)
      @stringifies_call = T.let(StringifiesCall.new, StringifiesCall)
    end

    sig { params(dry_call: Call).returns(T.nilable(ArgumentError)) }
    def simulate(dry_call)
      signature = @transforms_params.transform(dry_call)

      unless @reconciles_args_with_params.reconcile(signature)
        @cleans_backtrace.clean(
          ArgumentError.new([
            @recreates_message.recreate(signature),
            "[Mocktail call: `#{@stringifies_call.stringify(dry_call)}']"
          ].join(" "))
        )
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mocktail-2.0.0 lib/mocktail/sorbet/mocktail/simulates_argument_error.rb