Sha256: cb96e4355ed19e131c4fa63d532b67bd625462141cf03fc6a46941f83af440fa

Contents?: true

Size: 652 Bytes

Versions: 1

Compression:

Stored size: 652 Bytes

Contents

module Mocktail
  class ReconcilesArgsWithParams
    extend T::Sig

    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

1 entries across 1 versions & 1 rubygems

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