Sha256: 798802164b529c68ff1d534a1dffa3649b197fbbabea0d5a88d070089d4c13c6

Contents?: true

Size: 633 Bytes

Versions: 13

Compression:

Stored size: 633 Bytes

Contents

module Mocktail
  class ReconcilesArgsWithParams
    def reconcile(signature)
      args_match?(signature.positional_params, signature.positional_args) &&
        kwargs_match?(signature.keyword_params, signature.keyword_args)
    end

    private

    def args_match?(arg_params, args)
      args.size >= arg_params.required.size &&
        (arg_params.rest? || args.size <= arg_params.allowed.size)
    end

    def kwargs_match?(kwarg_params, kwargs)
      kwarg_params.required.all? { |name| kwargs.key?(name) } &&
        (kwarg_params.rest? || kwargs.keys.all? { |name| kwarg_params.allowed.include?(name) })
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
mocktail-1.2.3 lib/mocktail/simulates_argument_error/reconciles_args_with_params.rb
mocktail-1.2.2 lib/mocktail/simulates_argument_error/reconciles_args_with_params.rb
mocktail-1.2.1 lib/mocktail/simulates_argument_error/reconciles_args_with_params.rb
mocktail-1.2.0 lib/mocktail/simulates_argument_error/reconciles_args_with_params.rb
mocktail-1.1.3 lib/mocktail/simulates_argument_error/reconciles_args_with_params.rb
mocktail-1.1.2 lib/mocktail/simulates_argument_error/reconciles_args_with_params.rb
mocktail-1.1.1 lib/mocktail/simulates_argument_error/reconciles_args_with_params.rb
mocktail-1.1.0 lib/mocktail/simulates_argument_error/reconciles_args_with_params.rb
mocktail-1.0.0 lib/mocktail/simulates_argument_error/reconciles_args_with_params.rb
mocktail-0.0.6 lib/mocktail/simulates_argument_error/reconciles_args_with_params.rb
mocktail-0.0.5 lib/mocktail/simulates_argument_error/reconciles_args_with_params.rb
mocktail-0.0.4 lib/mocktail/simulates_argument_error/reconciles_args_with_params.rb
mocktail-0.0.3 lib/mocktail/simulates_argument_error/reconciles_args_with_params.rb