Sha256: 87d3ef500db29b87f3dacacae5fd85a65f57b72257ed01ceeb7f8fa7ffd42854

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

# typed: strict

require_relative "records_demonstration"
require_relative "verifies_call/finds_verifiable_calls"
require_relative "verifies_call/raises_verification_error"

module Mocktail
  class VerifiesCall
    extend T::Sig

    sig { void }
    def initialize
      @records_demonstration = T.let(RecordsDemonstration.new, RecordsDemonstration)
      @finds_verifiable_calls = T.let(FindsVerifiableCalls.new, FindsVerifiableCalls)
      @raises_verification_error = T.let(RaisesVerificationError.new, RaisesVerificationError)
    end

    sig { params(demo: T.proc.params(matchers: Mocktail::MatcherPresentation).void, demo_config: DemoConfig).void }
    def verify(demo, demo_config)
      recording = @records_demonstration.record(demo, demo_config)
      verifiable_calls = @finds_verifiable_calls.find(recording, demo_config)

      unless verification_satisfied?(verifiable_calls.size, demo_config)
        @raises_verification_error.raise(recording, verifiable_calls, demo_config)
      end
      nil
    end

    private

    sig { params(verifiable_call_count: Integer, demo_config: DemoConfig).returns(T::Boolean) }
    def verification_satisfied?(verifiable_call_count, demo_config)
      (demo_config.times.nil? && verifiable_call_count > 0) ||
        (demo_config.times == verifiable_call_count)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mocktail-2.0.0 lib/mocktail/sorbet/mocktail/verifies_call.rb