Sha256: cc9377771de58a87dd1e5916a489cd3670de9e7180a1be8e7ba7e6e0e0949e8d

Contents?: true

Size: 1.01 KB

Versions: 1

Compression:

Stored size: 1.01 KB

Contents

# typed: strict

module Mocktail
  class ValidatesArguments
    extend T::Sig
    sig { void }
    def self.disable!
      Thread.current[:mocktail_arity_validation_disabled] = true
    end

    sig { void }
    def self.enable!
      Thread.current[:mocktail_arity_validation_disabled] = false
    end

    sig { returns(T::Boolean) }
    def self.disabled?
      !!Thread.current[:mocktail_arity_validation_disabled]
    end

    sig { params(disable: T.nilable(T::Boolean), blk: T.proc.returns(T.anything)).void }
    def self.optional(disable, &blk)
      return blk.call unless disable

      disable!
      ret = blk.call
      enable!
      ret
    end

    sig { void }
    def initialize
      @simulates_argument_error = T.let(SimulatesArgumentError.new, Mocktail::SimulatesArgumentError)
    end

    sig { params(dry_call: Call).returns(NilClass) }
    def validate(dry_call)
      return if self.class.disabled?

      if (error = @simulates_argument_error.simulate(dry_call))
        raise error
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mocktail-2.0.0 lib/mocktail/sorbet/mocktail/handles_dry_call/validates_arguments.rb