Sha256: 63e50c1a3d3025550381bbe511b0e7d941238f47ce0eaa881459d7f137b18e85

Contents?: true

Size: 1 KB

Versions: 1

Compression:

Stored size: 1 KB

Contents

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

    def initialize
      @transforms_params = TransformsParams.new
      @reconciles_args_with_params = ReconcilesArgsWithParams.new
      @recreates_message = RecreatesMessage.new
      @cleans_backtrace = CleansBacktrace.new
      @stringifies_call = StringifiesCall.new
    end

    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/simulates_argument_error.rb