Sha256: 9d496f0271bdc899f8fefd22e0bdeb423fd08cffed5c06a8349111b383043e47

Contents?: true

Size: 772 Bytes

Versions: 1

Compression:

Stored size: 772 Bytes

Contents

# typed: strict

module Mocktail::Matchers
  class Includes < Base
    extend T::Sig

    sig { returns(Symbol) }
    def self.matcher_name
      :includes
    end

    sig { params(expecteds: T.untyped).void }
    def initialize(*expecteds)
      @expecteds = T.let(expecteds, T::Array[T.untyped])
    end

    sig { params(actual: T.untyped).returns(T::Boolean) }
    def match?(actual)
      @expecteds.all? { |expected|
        (actual.respond_to?(:include?) && actual.include?(expected)) ||
          (actual.is_a?(Hash) && expected.is_a?(Hash) && expected.all? { |k, v| actual[k] == v })
      }
    rescue
      false
    end

    sig { returns(String) }
    def inspect
      "#{self.class.matcher_name}(#{@expecteds.map(&:inspect).join(", ")})"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mocktail-2.0.0 lib/mocktail/sorbet/mocktail/matchers/includes.rb